吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5856|回复: 8
收起左侧

[原创] 【wonderzdh】-逆向学习笔记第七篇 -ODbgScript脚本编写快速入门

  [复制链接]
wonderzdh 发表于 2014-8-20 18:38
本帖最后由 wonderzdh 于 2014-8-20 18:56 编辑

       以前写过一些帖子,现在算是全职做逆向了,当然~还只是实习...顺便把我学习的步伐贴在吾爱,赠人玫瑰手有余香。
       ODbgScript是个非常有用的OD插件,可以模拟OD的操作,例如F8单步,申请变量来存放各个寄存器的值,或是内存的值,然后cmp比较,je到指定标签,下断,断点回调等等可以说是实现了自动化破解,尤其是在自动脱壳方面有较多的成品。关于ODBScript的脚本有很多前人写的例子,追随前人的步伐:http://tools.pediy.com/debuggers_od_script.htm
废话不多说,下面进入正题。目标程序是我写的一个远程线程注入的小工具,加壳:ASPack 2.28。脱壳方法介绍两种,一种单步,遇到向上的跳转,在下一行F4。
首先OD载入,断在入口点:
1.jpg
F7进入第一个call EB00A
2.jpg
执行到retn
3.jpg
F7进入第二个callEB014
4.jpg
这里就是壳对数据进行解码了,我们可以单步跟下去,注意回跳就好了。也可以直接Ctrl + F9 运行到返回代码。
5.jpg
这样就直接来到了oep,按下Ctrl + a分析一下。
6.jpg
接下来就是dump出内存,修复iat了,在此不做介绍。我们要做的是写一个ODbgScript脚本来执行我们刚刚的操作。
7.jpg
首先好习惯,定义一个开始标签,就像子程序一样,但子程序需要人去调用,标签只是一个位置标识,用于跳转,定义标签不会中断脚本运行。STI就是执行一次F7单步步入的命令,来两次,接着RTR执行到返回,再F7两次,执行到返回,这个脚本与我们手动的操作一一对应。
最后来到oep,eip就是指向oep,在eip指向的地方写个标签:“这就是oep”,然后愉快的结束脚本。
好了,第一种模拟我们手动操作来写脚本的例子就结束了,这种脚本肯定不通用,只能针对特定的版本,甚至只能用于特定的程序…
接下来我们根据esp定律来写个稍微“万能”点的脱壳脚本。
第二种:ESP定律,根据堆栈平衡原理,入口点的esp的值和程序oep的esp值是一样的。就是说壳执行之前和执行完之后跳到oep时,栈顶的地址是一样的,而esp就是栈顶指针。
依旧OD载入,断在入口点:
1.jpg
第一句pushad压入了数据,改写了esp的值,此时我们对esp指向的地址下断。可以在命令行直接输入:hr esp ,意思是对esp指向的地址下硬件访问断点。
然后F9运行程序,来到如下地址:
8.jpg
这里我们看到下边就是retn,我们可以单步过去,也可以Ctrl+ F9运行到这个retn的下一句。
6.jpg
我们又直接到oep了,接下来动手写脚本。
9.jpg
定义一个开始标签,申请一个变量,用来存放esp的值,以便于比较esp是否被改变。
下边是一个循环标签,先把esp赋值给我们的变量vESP,然后单步F7,判断现在的esp是否和单步前的esp有变化,如果esp和vESP相等,跳转到循环标签处,继续单步判断。如果变化了,可以断定是对堆栈进行操作,脚本就给用户一个提示,是否停止脚本,(停止的意思是接下来你自己手动操作),如果不是,就根据esp定律在esp指向的地方下个断点,设置一下断点回调事件(EOB chufa),如果断下来,脚本就会获得控制权限,执行chufa标签。Run就是F9运行。断下后,chufa标签里先清除所有断点,rtr是Ctrl + F9运行到返回,就来到oep了,接着对oep写个标签,二stop标签下的ret依旧会被执行,这就是为什么我说定义标签不会中断脚本运行的原因了。
11.jpg
下面来测试一下第二个脚本,在Plugins目录下选中ODbgScript->Run,然后选择我们刚刚写的脚本,直接就运行了,如果要人机交互,用MSGYN命令就好。
好了,附件都在下边,相信会用OD的人看过这篇都会写自己的脚本了,如果有什么问题可以回帖交流。
脚本编辑器下载地址:http://bbs.pediy.com/showthread.php?t=105266
exeandScript.rar (23.53 KB, 下载次数: 25)


点评

还是不会写!OD脚本的语法都没讲啊!仅仅会JE EOB RUN RET CMP MOV VAR完全不够用啊!  发表于 2014-8-20 19:52

免费评分

参与人数 1热心值 +1 收起 理由
吾爱扣扣 + 1 还把我的垃圾CM发出来。。

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sdlyfxjjc 发表于 2014-8-20 18:57
感谢分享!!!!
codelive 发表于 2014-8-20 21:00
 楼主| wonderzdh 发表于 2014-8-20 21:03
你会慢慢体会到她的魅力的,可以查看一下命令大全,或者附件中我整理的命令,目前已知的方式应该能覆盖到绝大部分。不知QQ你还有什么思路是未涉及到的?
@吾爱扣扣

点评

妈的。。。被欺骗了。。。我以为附件是命令大全。。  发表于 2014-8-20 21:12
 楼主| wonderzdh 发表于 2014-8-20 21:16
本帖最后由 wonderzdh 于 2014-8-20 21:18 编辑

你不是本人还是你本来就这么搞笑?
@吾爱扣扣

头像被屏蔽
Charles 发表于 2014-8-31 21:44
提示: 作者被禁止或删除 内容自动屏蔽
chyl168 发表于 2014-8-31 22:24
学习了,感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 12:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表