老汉老牛 发表于 2022-2-5 17:40

OD 破解 eXeScope

特别声明,我是小白,这文章来自 苏紫方璇 的用户,我只是照本宣科,希望能帮到更多的小菜鸟,好资料,多分享! 谢谢


【文章标题】: eXeScope逆向记录
【软件名称】: eXeScope
【下载地址】: 自行搜索下载
【保护方式】: 无
【使用工具】: OD,PEID
--------------------------------------------------------------------------------
【详细过程】
今天用eXeScope帮人改个东西,突然发现我下的eXeScope竟然还没注册,(而且只能使用一次,后面的编辑都不能保存-来自老汉的补充)心想这个工具可有些年头了,应该很好逆向,于是便自己动起了手来。
首先,先查一下壳。
Borland Delphi 6.0 - 7.0


没壳,还是delphi6写的,扔dede或者查找事件脚本说不定会有惊喜。
这里我选择第二种,打开od,载入eXeScope,在入口点断下后,在插件-ODbgScript-运行脚本,选择“Delphi & VB事件断点查找脚本”,脚本运行后,会帮助我们下一堆断点。


脚本运行完成后运行程序,在这期间会断下N多次,不用管,接续运行,直到程序运行起来。
以上操作我基本也省了,随便就进OD干活了,因为也不懂那么多,先上菜试试,本是奔着逆向eXeScope.exe去的。。。心急啊
OD打开eXeScope.exe, F9运行,然后就照着以下步骤做:

单击“帮助-注册”,程序再次断下,继续忽略它,我们只关心写完注册名之后的事情。


下面弹出注册框,填写完名字和ID之后,点击确定。程序又一次断下。
点击确定后,呀,有点不同了:


不管了,返回OD,(注:我用的是win7 64系统,一直都无法用Alt+F9返回用户领域),Ctrl+G,直接输入地址:0047391C,在此下了个断点,重新载入eXeScope,F9运行到此,重新用注册一次,点击确定, 哈,也可以,也不知是巧合还啥子,只能一路黑到底了,又一次可以照着下面的步骤做了;后面我又重新试了,其实OD载入eXeScope后就可Ctrl+G,直接输入地址:0047391C,在此下了个断点,F9运行到此,重新用注册一次,点击确定,谁叫我是菜鸟中的小白哩,总之先让OD跑起来




F7单步步入,来到按钮事件的入口点,然后F8单步执行。没走几步就发现程序在获取填写上的注册名和ID,在下边有一个call,之后紧接着就是一个比较大的跳转,在跳转中,可以看到有“name”“reg”和“ini”的字样,这应该是注册成功后,程序将注册码写入ini之中吧。(照着干,注释也照着写就是,方便以后慢慢理解吧)



004C2AC6   /0F84 8D000000 je eXeScope.004C2B59                     ;关键跳转
改成nop
按F9运行后,再次点击注册,发现程序已经注册成功了。


不过不要高兴得太早(的确得意了一下,没看到这段文字前,不过也好在有以下操作,才算是成功),一般来说程序写入ini可能会存在重启验证。把刚才修改的保存后,重新运行,发现程序还是未注册,看来一定是重启验证了,再次重新运行,在入口点断下后,下断GetPrivateProfileStringA函数,之后运行程序,程序还是会不停地断下,不用管,直到堆栈中出现这个样子。


Ctrl+F9运行到返回,F8单步一次,看看不像,再次Ctrl+F9运行到返回,F8单步一次。这次出现了ID,继续单步F8.
上面这段又搞不懂,先不管,继续用Ctrl+G,直接输入地址:004CBE2F,找到此处注释一下再说哈,F7进去看看,暂时不懂,不管了,来到最后,直接要个结果:

004CBE2F      E8 48010000   call eXeScope.004CBF7C                   ;重启验证
这一句,把它改成
004CBE2F      B0 01         mov al,0x1                               ;重启验证
004CBE31      90            nop
004CBE32      90            nop
004CBE33      90            nop
保存修改,可以用了,下面理论的东西,咳...,小白后面慢慢研究研究




在下边看到这个,有种预感这就是关键点,因为它上面有个call,下边就把返回值放到了全局变量中。
004CBE34|.A2 08FB4C00   mov byte ptr ds:,al
在上面的call中F7跟入。


进入这call后,F8单步运行,
004CBF8E|.55            push ebp
004CBF8F|.68 1BC04C00   push eXeScope.004CC01B
004CBF94|.64:FF30       push dword ptr fs:
004CBF97|.64:8920       mov dword ptr fs:,esp               ;try
这里是一个try,下边可能会涉及一些关键的操作,仔细看一下。


果然,下边有一个取文本长度的,然后和10比较,在下边就是文本比较了。所以可以断定这个call就是个判断ID是否正确的Call。
一直到返回,也就是走到这一句,看到eax=0,把他改成1试一下。
004CBE34|.A2 08FB4C00   mov byte ptr ds:,al
结果注册成功了。但是我们不能每次都用od改吧,再次运行,返回到
004CBE2F      E8 48010000   call eXeScope.004CBF7C                   ;重启验证
这一句,把它改成
004CBE2F      B0 01         mov al,0x1                               ;重启验证
004CBE31      90            nop
004CBE32      90            nop
004CBE33      90            nop

保存到可执行文件即可。

小海豚0 发表于 2022-2-5 17:50

谢谢分享

SuCRI 发表于 2022-2-5 17:57

谢谢分享

yDIld285 发表于 2022-2-5 17:59

你是我大哥,不服不行!

茉莉79 发表于 2022-2-5 17:59

感谢楼主

NhTtVFyi 发表于 2022-2-5 17:59

谢谢分享

长颈鹿574 发表于 2022-2-5 18:10

太好了,我看看,谢谢!

Ezy2 发表于 2022-2-5 18:12

威武霸气!

zXuEQvVk480 发表于 2022-2-5 18:13

谢谢分享

大碗96570 发表于 2022-2-5 18:29

楼上很眼熟啊,是不是哪里见过
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: OD 逆向 eXeScope