解密系列之OD使用教程9
程序:MrBills.exe
点击注册,输入邮箱和序列号后提示如下
突破口:该提示窗口中的字符串,查找如下
双击来到反汇编窗口,有个关键跳转,往上查看影响跳转的语句是test al,al
,猜测al=0
为未注册,al=1
为已注册,再往上查看,call 0040714C
决定al
值,下断跟进查看。
跟进“需进入1”,找到2个关键call
跟进“需进入2”和“需进入3”,发现函数里代码相似
看来call 406F4B
是关键,跟进后来到
最后一句为mov al,bl
,这是改变al值的关键语句,修改为mov al,1
后按F9运行程序,发现
保存到可执行文件后,运行程序
未注册等信息已经不在了。
解密系列之OD使用教程10
程序:PC2AM2_PRO.exe
首先进行安装,然后用PEID查看如下所示
可知该程序由VB编写,所有的VB程序几乎都是依赖于一个外部的动态链接库。这个动态链接库的名字是:MSVBVM60.dll
(可能有多个版本,但名字都差不多~),然而正是因为VB中所有的API函数都在DLL中去实现,所以导致我们在跟踪程序的执行代码时频繁地在DLL领空和程序领空跳来跳去。
VB程序破解关键
针对变量 | 针对字符串 |
---|---|
__vbaVarTstEq | __vbaStrCmp |
__vbaVarTstNe | __vbaStrComp |
__vbaVarCompEq | __vbaStrCompVar |
__vbaVarCompLe | __vbaStrLike |
__vbaVarCompLt | __vbaStrTextComp |
__vbaVarCompGe | __vbaStrTextLike |
__vbaVarCompGt | |
__vbaVarCompNe |
用OD载入,按下Ctrl+N打开模块窗口,查找(直接输入)vbaVarTstEq,找到后右键=>在每个参考上设置断点,提示设置了88个断点,按F9运行程序,在第一个断点处断下,继续按F8单步执行,走到下面图中位置
注释里有一串类似注册码的字符,记录下来,删除所有断点,在注册编辑框里输入,注册成功。(简单VB程序的注册码一般都可以用类似的方法找到)
oeiu-564-oqei-97
解密系列之OD使用教程11
程序:fjprodsetup.exe
安装程序,打开查看是未注册版本,有功能限制。用OD载入,搜索所有字符串unregister
,双击下面高亮一行
发现有跳转,但修改跳转之后只是去掉了标题栏的unregistered
,并不能破解,关键还在于al的值
如图,选中子程序第一行,提示窗口显示本地调用来自4047D3、404880
,在这两个地址处下断,去掉之前的断点。按F9运行程序,在4047D3
处断下,去掉404880
处的断点,如下图
在4047CD
处下断,重新运行程序,跟进发现这个call可能是程序加密验证的过程,如下图所示可进行修改并保存达到破解
的目的,但还可进行更深入的研究,进入验证函数1和函数2对加密算法进行逆向,写出注册机,此处不再赘述,有能力者可联系笔者进行交流。
解密系列之OD使用教程12——逆向后的Delphi特色
程序:Teksched.ex.
运行程序,有NAG窗口,需要注册,用PEID查看是Delphi编写的程序,用OD载入程序,留意Delphi程序与VC程序的区别。
搜索字符串registration
,如下
双击第一行,来到
在高亮这行右键=>查找参考=>选定命令,有
双击第一行,又来到了原来的地方
在004A582C、004A5841
处下断,F9运行起来,点击注册窗口,输入注册信息,发现并不能断下。得找其他突破口,向上浏览程序反汇编代码,可以看到程序很有Delphi特色:
1、push 004A5841 retn,这两条指令后会有jmp往前跳的指令,等价于 jmp 004A5841
2、存在很多call调用
继续往上浏览,发现有输入注册码提示信息,在上图地方下断
运行程序,输入注册信息,按Ctrl+F8执行,程序跑飞,断在ntdll动态链接库中,按“—”号回到程序领空,并在该call上一条指令处下断,然后运行程序
将该call指令NOP掉,继续执行,来到下图
将高亮这行改为jmp 4A5608
,继续执行
将该条跳转NOP掉,按Ctrl+F8继续执行,最后来到最开始的位置如下
至此,程序完美破解
保存修改到文件后,重新运行程序进行验证,完美破解。