禁用ASLR随机基址便于X64DBG与IDA动静态联合分析
地址空间布局随机化(ASLR)是一种操作系统安全保护机制,随机化排列进程的地址空间(不再以IMAGE_OPTIONAL_HEADER中ImageBase字段的值进行加载)。这种保护在2007年首次引入到带有Vista的Windows操作系统中,虽然在操作系统中启用了这种保护,但每个PE文件必须通过设置ASLR标志位选择启用ASLR。这个标志所对应的PE结构的IMAGE_OPTIONAL_HEADER中的DllCharacteristics。如图一所显示在我这个例子中,ASLR标志在整个二进制文件偏移0x146字节取word值为0x8140。

图一
调试启用ASLR的恶意软件产生的一个问题,每次重新启动调试器时,PE的基址都会不断改变。如图二所示,由于IDA Pro中的地址采用静态解析会使用ImageBase作为进程基址,因此这将与ASLR在调试器中提供的随机基地址不匹配。这可能会对动静态结合分析带来影响。

图二
当然可以通过IDA Pro中的菜单Edit->Segments->Rebase program从新设置段基址,如图三所示。会发现这个方式的缺点是每次调试重新启动时你要再次修改IDA Pro中的段基址。

图三
还有种方式是通过修改PE结构的IMAGE_OPTIONAL_HEADER中的DllCharacteristics属性,如图四所示,取消勾选Dll can move,进行修改。

图四
最终方式我将通过更改注册表配置禁用ASLR,只需要修改注册表键值MoveImages,注册表路径:HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages将其值设置为0x00000000并重启虚拟机更新修改。

浙公网安备 33010602011771号