码迷,mamicode.com
首页 > 其他好文 > 详细

OD 实验(十五) - 对一个程序的逆向

时间:2018-10-05 17:29:07      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:call   进入   跳转指令   一个   http   不显示   等于   执行   判断   

程序:

技术分享图片

打开程序

技术分享图片

出现一个 NAG 窗口

技术分享图片

这是主界面

点击 Exit

技术分享图片

程序出现 NAG 窗口,然后退出

用 PEiD 看一下

技术分享图片

是用 VC++ 6.0 写的程序

逆向:

用 OD 载入程序

跑一下程序

出现 NAG 窗口时暂停

技术分享图片

按 Alt+K 显示调用堆栈

技术分享图片

这个是 MFC 的对话框,双击来到它所在的地方

技术分享图片

下一个断点,重新跑一下程序

技术分享图片

OD 停在了断点处

按 F8 往下走一步

技术分享图片

NAG 窗口出现了

过了几秒就往下走了一步了

技术分享图片

按 F9 运行

技术分享图片

程序又停在了这个断点处

按一下 F8

技术分享图片

主窗口出现了

点击 Exit

技术分享图片

OD 往下走了一步

按 F9 运行

技术分享图片

OD 又停在了断点处

按一下 F8

技术分享图片

程序关闭的 NAG 窗口出现了

说明这个断点是三个窗口出现的地方

技术分享图片

这个 call 语句上面有个 je 跳转指令,如果执行跳转的话,将跳过这个 call 语句

如果这个 je 跳转指令第一次执行跳转,第二次不执行跳转,第三次执行跳转,就会只显示主界面不显示 NAG 窗口

可以用到条件判断,设一个变量 i,如果 i 等于 2 的话就不执行跳转,i 等于 1 或 3 的话就执行跳转

按 Alt+M 显示内存窗口,查看程序的 PE 头结构

技术分享图片

双击进入 data 段

技术分享图片

找到一块没数据的地方

先测试一下这块地方在程序运行的时候会不会被影响到

技术分享图片

右键 -> 断点 -> 硬件访问 -> Byte,关注这一个字节

重新跑一下程序,程序运行过程中没有停在该断点处,说明程序运行过程中没有对该字节区域造成影响

接下来在代码块区域找一个空白的地方

技术分享图片

接下来使用 OD 的一个插件 NonaWrite 进行修改

技术分享图片

在 NonaWrite 上写汇编代码

技术分享图片

0x437D6E 为要修改的地址

下面为要修改的语句

写完之后点击“汇编”

技术分享图片

然后把 je 跳转指令改为 jmp

技术分享图片

保存文件,运行程序

技术分享图片

 没有了 NAG 窗口,只有主窗口

OD 实验(十五) - 对一个程序的逆向

标签:call   进入   跳转指令   一个   http   不显示   等于   执行   判断   

原文地址:https://www.cnblogs.com/sch01ar/p/9745067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!