我正在反转几个模块,这些模块动态地和静态地链接到一个可执行文件中。我已经开始通过使用本地win32调试器(默认设置)将我的数据库文件之一附加到win32 exe来学习主动分析。

重新定位我的idb注释以正确映射到exe似乎花费的时间比应该花费的时间长。我目前正在通过将一个idb与一个内存快照进行比较来进行静态分析,因为重定位时间似乎不值得等待。我认为这可能会造成不必要的工作,因为我必须手动将注释从单个模块idb复制到快照idb。

我想知道是否可以更改IDA的使用方式加快搬迁速度。考虑到数据库和exe的大小,我不知道应该花多长时间。

idb:  ~133 Mb
exe:  ~650 Mb     Size taken from task manager
relocation time:  ~15+ minutes


这是开放式的。我想我正在寻找调试器设置,隐藏的注释性能命中数等。如果这是正常情况,我将尝试调整调试实践,以最大程度地利用会话。

#1 楼

如果问题是IDA在调试时需要花费时间来重新建立IDB的基础,那么一些可能的解决方案:基地址(与IDB相同的基地址)


优点:对于主要可执行文件效果很好更改文件。



如何:从IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE删除IMAGE_NT_HEADERS.OptionalHeader.DllCharacteristics(0x40)。



[危险]禁用整个ASLR系统(在备用VM中可能会出现)。


优点:与1.相同。


如何:更改HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages



重新设置所有DLL的基数,以免它们发生冲突(将其应用于1。)


优点:所有DLL具有不同的地址基



操作方法:



Rebase工具(rebase.exe;由editbin.exe弃用)

editbin.exe,带有/REBASE选项

ReBase API

仅对所有DLL使用不同的基址(不要在系统DLL上应用此基址)。


使用外部调试器并与IDB同步。

操作方法:


使用QB-sync:它允许您从调试器调试二进制文件(windbg, ollydbg,gdb等),并在不重新设置IDB基础的情况下将数据库与调试器同步。