背景:最近需要逆向国内某知名视频软件的一个功能,公司配置的电脑是64位的,目标程序(一个DLL)在64位机器上也是64位的,用64位IDA调试时,按F5键无法形成类"C"的代码(网上有相关的解决办法,但是本人没有测试出来),但是用32位的IDA分析32为的程序就没的问题。因此搜集资料,最终选取构造一个32位的虚拟机系统,用32为的IDA+Windbg采用动静结合的方式逆向程序。
调试环境:Windows + Windbg + VMware
1.建立Windows和虚拟机的双机调试环境(具体办法参考《寒江独钓》或《Windows驱动设计》)
2.以Debug的方式启动虚拟机
3.在虚拟机中打开任务管理器查看想要调试进程的ID
4.待程序加载完毕后,中断虚拟机,在Windbg命令行中输入命令 !process 0 0
5.找到目标进程的ID,输入命令.process /p [PRCESS值],从而选中需要调试的进程
6.输入命令.reload /f /user,加载模块符号
7.这样就可以跟调试本地进程一样调试远程进程了