禁用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并重启虚拟机更新修改。

 

posted @ 2020-04-01 22:26  EBL  阅读(1133)  评论(0)    收藏  举报