技术教程破解资源

一个小白向的简单逆向

整理:jimmy2024/11/17浏览2
简介执行该exe,会出现三个窗口,目标是去除第一个和第三个Nags。 程序相对复杂,因此选择直接将程序跑起来,然后弹出第一个Nags时点击暂停,查看堆栈的调用情况,毕竟函数的调用全靠堆栈进行的,所以可以看到经历了哪些堆栈的调用。在程序暂停在第一个窗口弹出的时候暂停。 然后查看堆栈调用情

    执行该exe,会出现三个窗口,目标是去除第一个和第三个Nags。
一个小白向的简单逆向
一个小白向的简单逆向
一个小白向的简单逆向
  程序相对复杂,因此选择直接将程序跑起来,然后弹出第一个Nags时点击暂停,查看堆栈的调用情况,毕竟函数的调用全靠堆栈进行的,所以可以看到经历了哪些堆栈的调用。在程序暂停在第一个窗口弹出的时候暂停。   
一个小白向的简单逆向
  然后查看堆栈调用情况。  一个小白向的简单逆向
  认真观察其函数名字,被框出来的函数应该是真正执行dialog的地方。一个小白向的简单逆向
  在其调用地址0x42039A下断点。   一个小白向的简单逆向
一个小白向的简单逆向
  重载程序,执行到断点处,然后在单步执行,程序确实弹出了第一个窗口,说明调用入口函数没找错。   
一个小白向的简单逆向
  继续点击执行,发现还是回到了这个地方。说明剩余的两个窗口也是在这里作为调用的入口。   
一个小白向的简单逆向
  那么想要去除掉第一个和第三个就不能只是简单地nop或者jmp了。选择采用另外编写一段汇编代码来指定什么时候才会执行该语句,从而控制程序流程的执行。  选取0x445E80作为控制流程的flag位。
一个小白向的简单逆向
  再找一块空闲的text地址,在其上写入汇编代码。
一个小白向的简单逆向
  选择将je这条指令进行修改,因为其是本身就是判断指令。但是要注意,因为选择的写入汇编代码位置距离该点位置属于长指令跳转,代码会偏长,将会覆盖下一条指令,所以在上面的汇编代码在编写时还需要考虑加上下一条指令的内容,以保证代码的完整性。
一个小白向的简单逆向
一个小白向的简单逆向
  到此就完成了,选择保存一下。  一个小白向的简单逆向
  运行exe,只出现了第二个窗口,成功。一个小白向的简单逆向