为了简洁一些,作者将运行 IDA 的机器叫做“MAIN”,将运行加壳程序的机器称为“TARGET”。
将远程调试服务文件 win32_remote.exe 复制到 TARGET 上,由于我们的这个加壳文件是 32 位的,所以需要 32 位的远程调试服务器。
远程调试服务器的位置在前面的文章已经提到过很多次了,这里再说一下:在ida目录下的 dbgsrv 目录里面,这个名字就是 debugserver 的简写,应该很好记住。
首先将 PACKED_PRACTICA_1.exe 文件复制到本地进行静态分析,通过 IDA 加载器打开,勾选 MANUAL LOAD 手动加载,加载文件所有的区段。
切记不要重命名数据库文件 IDB。因为如果本机的可执行程序叫做 PACKED_PRACTICA_1.exe,IDA 会在同一目录下保存数据库文件,名称为 PACKED_PRACTICA_1.idb,不要用其他名字,否则在识别远程机器上进程的时候会出一些奇怪的问题。
在 TARGET 中运行 win32_remote.exe 远程调试服务器,会显示出服务器的地址与端口:

然后启动调试器,选择 Remote Windows debugger:

在 PROCESS OPTIONS 中,输入读者自己的 IDA 服务器地址和端口。还需要将可执行文件地址路径也改为 TARGET 机器中加壳文件的路径:

打开调试器菜单选择 START PROCESS,调试开始之后会在程序入口暂停。
可执行文件进行了随机化处理,因而每次执行的地址都会变化,所以必须在同一次运行中完成转存和重建 IAT 的工作,中途不能关闭程序。
地址随机化(Address Space Layout Randomization,简称 ASLR)是一种安全技术,用于防止某些类型的安全攻击,如缓冲区溢出攻击和返回导向编程(ROP)攻击。ASLR 通过随机化内存中关键数据区(如堆、栈、共享库和程序代码)的起始地址,使得攻击者难以预测这些区域的确切位置,从而增加了攻击的难度。