本帖最后由 zjh16529 于 2019-6-6 18:34 编辑
今天给大家带来的是这个软件,下载地址:http://www.757abc.com/?p=5
查壳: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:分享的思路,学的是技术而不是某一个软件,所以,这次就不放成品了,请各位见谅,路过的也不要忘记打点赏,毕竟做图文真的很辛苦,谢谢了
|