众所周知要干一款软件就得先查壳,然后查完壳之后就是如下图所示:
各种信息。但是区段都是统的upx。但是壳信息又显示各不相同。
次软件是本地验证码注册。也就是说他的验证码是本地计算进行对比然后显示注册信息的。
所以我准备带壳爆破。但是在爆破过程中始终跟不出真码,所以来人才众多的论坛求助一番。
带入OD之后ctrl+G来到401000
然后搜索字符串,一直软件的关键字符串为:授权码不正确
然后双击关键字到达下图所处位置
网上翻了方一眼望不到边,好像他所有的字符串都在这个位置
直接拖动滑块翻到顶部有一个jnz跳转直接跳过了所有的字符串
不明觉厉
从50083F到5023EA
所以我决定用特征码的方式来试试
通过查壳得知软件是delphi编写的,
然后搜索二进制特征码:740E8BD38B83????????FF93????????
来到了按钮事件,本来搜出了很多个,挨个下断之后得出实际call为
下图这个。取消其他断点之后运行程序再次点注册断在此处。
然后F7跟进,再单步往下。
一直到达下图的call这个位置再单步一次程序显示授权码不正确。
所以在此处下断,重新运行并注册来到此处并F7跟进
跟进后再单步向下到达此处后。堆栈窗口显示读取了我输入的假码
我以为很快就能跟出真码并成功。
继续向下,到达此处右上方寄存器窗口出现不明字符。但只是3位字符
继续往下跟,并没有出现真码,直到出call。到达下图的位置在跟一次就出现授权码不正确。
哦豁,直接就G了。
我以为是我的方法问题,验证并不是在这里。所以有用暂停法又来了一次
运行程序,输入假码,然后点确定注册,回到OD点暂停,然后点K
调到下图中箭头位置下断
然后单步向下,知道下图中的call位置,再单步一次软件显示授权码不正确。
点确定,继续向下跟出call
出cal之后此时依然在系统领空,所以继续向下,再出call
到达下图的位置,但是此时的位置已经是软件授权码不正确提示点完确定所回到的
地方。
至此判定我失败了,依然没有找到关键的跳转或者关键的call。
所以来发帖求助广大坛友,到底是我的思路有问题还是操作步骤出现了错误?
还请广大坛友不吝赐教
附上软件以及火绒查杀
蓝奏云:https://wwt.lanzouy.com/iXcRm0ck8yoj |