逆向调试可分为动态分析技术和静态分析技术,动态分析就是实时加载软件,对软件进行实时断点操作;静态分析是指在某些不适合运用软件执行的场合使用的,比如对某种病毒的分析,你运行就不是中招了吗..当然我相信大家在对某种病毒调试时,多会用虚拟机来进行实验吧,就算病毒是内核级的,指向系统硬件的,也不怕它,(重装(新建加载ISO);(或者恢复到相应的快照)这是vm虚拟机的用法,大家可以百度安装,据我了解,新win10也支持了虚拟机的设置,但这里我得提醒一下,win10的虚拟化技术与虚拟机是不兼容的,特别是我在python中部署docker容器的时候,出现的一些错误(虽然我知道docker部署在linux好用一点,但是我对Linux不是很搞得懂的,现在连python的环境配置都失败了好几次,RHEL系统太那个了(一个yum源非得要收费..还得建立本地yum仓库和更改阿里云的centos yum源),几次想rm -rf/*了.
首先得了解一下OD可是比喻为动态分析的宝刀,可以通过这张图了解一下OD的基本界面:
首先我们可以来个最简单的,修改一个win32文件的标题,进入xp系统,不得不说,xp还是兼容性最好的系统:
源文件为hello.exe,打开便出现如下,标题为l love fishc.com
我们要做的修改就是把他改成别的,将它拖进OD,出现:
CTRL+F2进行重加载,定位成入口点,然后按F8进行单步调试,直至出现该程序界面,
弹窗是出现了该点,call意思是调用某模块,按F2加断点,然后CTRL+F2重加载,按F9跳到断点,F7进入程序模块内部:
这时就看了title和text文本,至于为什么text文本出现乱码,因为它的编码方式不同,可能不是utf-8或者gbk模式,点击title:
第三行是汇编代码 push是压入操作,意思应该是压入栈,后面是机器码,CTRL+G调用跟随表达式:输入该机器执行码;
出现以下标符,全选修改;
可以不要保持大小,这里可以不涉及到内存溢出的问题,它还是个简单的win32程序,修改我们想要的ascll码,比如博客地址等:
写完后还要加个00,表示字符串的结束,c,c++等都是这样的,然后执行保存;
保存为hello1.exe:
这样就执行hello1.exe 出现下图:
好了,一个简单的程序修改标题就完成了,虽然很简单,但实践还是需要时间的.