我需要分析一个恶意软件模块的内存转储,不幸的是样本不是原始dll,而是内存中dll的转储。
现在固定sections headers
是相当容易-我只需要匹配Virtual address \ size
的Raw address \ size
,因为这是该PE将获得一次加载到内存(是的情况下转储)
但是现在有一个不同的问题,例如,当我在 IDA-PRO 上打开文件时,内存未正确对齐,因此分析不正确并且并非所有call
具有相对地址的函数都正常工作(它们没有指向正确的位置 - 或就 PE 大小而言有意义的位置)
我觉得在 ida 上重新构建 PE 的解决方案是不完整的,并且没有按照我的需要修复所有内容。此外,我想修复 PE,以便稍后使用 ollydbg 动态加载它(就像我拥有原始版本一样)
所以我的问题是:您究竟会如何建议我修复 PE 标头并重新设置程序的基础,以便我可以成功加载它?
对于 VirusTotal-Intelligence 用户,样本 MD5 为:3bb85abe51b0f96f501d2bb32ec4edef SHA256:83c95637712cacc0ca280892465a75a3a10a2d8df48dd85bccd16e
示例:https : //www.hybrid-analysis.com/search? query = vxfamily%3AGen: Variant.Terkcop
2015_12_08_ExtraInfo:@ubnix,我还没有阅读你发给我的材料的内容,但我很清楚 IAT 的重要性——顺便说一下,这正是我在 IDA 上加载文件时的问题。
dll 正在地址 0x10000000 处加载(因此每个部分都在 0x10001000 处加载 - 分别取决于大小等,0x10000000 和转发。)
恶意软件的代码期望 IAT 位于 0x05320000,但显然并非如此。当我尝试在 IDA-PRO 上更改 IAT 段的位置(Ctrl + S 或 ALT + S 如果我记得)时,它正在使我的 IDA 客户端崩溃。
显然,更改地址只能作为在 IDA pro 上静态查看恶意软件的临时解决方案,而不能作为使用 ollydbg 运行恶意软件的解决方案。如果我想用 olly 运行恶意软件,我需要以某种方式使 dll 在正确的地址 0x5320000 下运行
将 PE 的 BaseAddress 从 0x10000000 更改为我想要的地址(使用 CFF Explorer)时,它仍在 ollydbg 的 0x10000000 处加载.. 不知道为什么
Edit2 2015_12_15:我“修复”了他的标题的示例示例,但它仍然无法正常工作(所有 CRT 功能的问题)
原始样本:https : //www.hybrid-analysis.com/sample/53dd790b1bd0588e542d33bde49dbf33c6fb7828e91a8d13c416c831108d642c?environmentId=1
在我修复样本后:https : //www.dropbox.com/s/6dz7athzdja94p4/53_fixed_rebase.dll?dl=0
请注意,这两个文件都是恶意软件样本,可能会导致防病毒软件发出警报。
我修复的示例肯定工作得更正常,而且 ida 可以立即识别所有函数 - 但我想我错过了一些东西,因为只有 CRT 函数或诸如“初始化操作”(如 c++ 类初始化)之类的函数失败了。