查壳:
ASPack 2.12 -> Alexey Solodovnikov
很简单的压缩壳,脱壳就不介绍了,一个esp定律就搞定。
OD载入,运行软件先看一看
有错误提示,这就好办了,F12暂停,调用堆栈,在最后一行右键,显示 调用
然后来到这里
有个JMP跳过错误提示,可是没跳,我们看到下面有个跳转进来了,我们跟过去看看
这个JE跳过成功,跳向了失败,那这就是关键跳了,那关键CALL呢?我们发现它上面并没有CALL,只把一个地址常量给了eax,然后和0做比较,相等就错误,这说明注册版的那个地址值应该是1,好,那样我们就在红框中的MOV下断,然后重新注册,好,完美断下,F8下,此时EAX中放的地址是011477F0,结果为0,而我们现在就想知道谁什么时候给它写入的0,我们数据窗口跟随,下硬件写入断点
再次重新注册,好断下了
但这里赋值没什么用,还是会被清零的,继续F9,好又断下了,
这时寄存器和堆栈窗口都出现了真码(我试过了),重点是反汇编窗口,看箭头所指,一个给EAX赋值1,一个赋值0,明显它跳过了赋值1。来到赋值0,所以这里我们有两种方法,一是把上面的JNZ NOP掉,二是把赋值0也改为赋值1,我们这里用第二种方法,记得把EAX的值在数据窗口改成1,因为上面已给它赋值0了,操作如下
好了,我们F9运行吧
跳转没有实现,显示注册成功
标题,下面和注册窗口都显示已注册,这说明我们已经一字节爆破了它,好了,今天的教程就到这里吧,借用一句话,这是给像我这样的新手看的,老鸟就飘过吧
PS:分享的思路,学的是技术而不是某一个软件,所以,这次就不放成品了,请各位见谅,路过的也不要忘记打点赏,毕竟做图文真的很辛苦,谢谢了
|