执行该exe,会出现三个窗口,目标是去除第一个和第三个Nags。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/235340infhrqh1frar9a94.png)
![一个小白向的简单逆向](/UploadFiles/2021-04-26/235352a93pkbn1nw3kxkxs.png)
![一个小白向的简单逆向](/UploadFiles/2021-04-26/235402lsgdkzxk2kkmffg6.png)
程序相对复杂,因此选择直接将程序跑起来,然后弹出第一个Nags时点击暂停,查看堆栈的调用情况,毕竟函数的调用全靠堆栈进行的,所以可以看到经历了哪些堆栈的调用。在程序暂停在第一个窗口弹出的时候暂停。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/235632ujtpvzjb19otfd17.png)
然后查看堆栈调用情况。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/235649ac90vposvd00r000.png)
认真观察其函数名字,被框出来的函数应该是真正执行dialog的地方。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/235653bn3sd1p0e6dcv0ce.png)
在其调用地址0x42039A下断点。
![一个小白向的简单逆向](https://attach.52pojie.cn/forum/202212/12/235934ep8g81l08h1h8suh.png)
重载程序,执行到断点处,然后在单步执行,程序确实弹出了第一个窗口,说明调用入口函数没找错。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/235952tse5drrni5j8nd41.png)
继续点击执行,发现还是回到了这个地方。说明剩余的两个窗口也是在这里作为调用的入口。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/000001o9zm2zcf5uavgmbh.png)
那么想要去除掉第一个和第三个就不能只是简单地nop或者jmp了。选择采用另外编写一段汇编代码来指定什么时候才会执行该语句,从而控制程序流程的执行。 选取0x445E80作为控制流程的flag位。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/000036k3k2tg30xgj1k10g.png)
再找一块空闲的text地址,在其上写入汇编代码。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/000053uscbbzttp6wsq6pq.png)
选择将je这条指令进行修改,因为其是本身就是判断指令。但是要注意,因为选择的写入汇编代码位置距离该点位置属于长指令跳转,代码会偏长,将会覆盖下一条指令,所以在上面的汇编代码在编写时还需要考虑加上下一条指令的内容,以保证代码的完整性。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/000129yboegkeqhbzgbfge.png)
![一个小白向的简单逆向](/UploadFiles/2021-04-26/000138n0rr7zbw800w7lwl.png)
到此就完成了,选择保存一下。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/235445svz00zkc004kpid6.png)
运行exe,只出现了第二个窗口,成功。
![一个小白向的简单逆向](/UploadFiles/2021-04-26/235453g6hu39qttjzsfhnc.png)
标签:
一个小白向的简单逆向
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com
暂无“一个小白向的简单逆向”评论...