最近我一直在尝试解压缩可执行文件(x64体系结构),也就是找到OEP并还原随Themida x64打包的IAT:
我曾尝试在LoadLibraryA处设置断点。我读过那是解决问题的好方法。
但是,我不知道下一步该怎么做。它带我到此页面:
00007FFE291AA240 | 48 89 5C 24 08 | mov qword ptr ss:[rsp+8],rbx |
00007FFE291AA245 | 48 89 74 24 10 | mov qword ptr ss:[rsp+10],rsi | [rsp+10]:LoadLibraryA
00007FFE291AA24A | 57 | push rdi |
00007FFE291AA24B | 48 83 EC 20 | sub rsp,20 |
00007FFE291AA24F | 48 8B F9 | mov rdi,rcx | rcx:"USER32.dll"
00007FFE291AA252 | 48 85 C9 | test rcx,rcx | rcx:"USER32.dll"
00007FFE291AA255 | 74 15 | je kernelbase.7FFE291AA26C |
00007FFE291AA257 | 48 8D 15 FA 2F 10 00 | lea rdx,qword ptr ds:[7FFE292AD258] | 7FFE292AD258:"twain_32.dll"
00007FFE291AA25E | FF 15 B4 C9 0F 00 | call qword ptr ds:[<&_stricmp>] |
00007FFE291AA264 | 85 C0 | test eax,eax |
00007FFE291AA266 | 0F 84 72 A8 03 00 | je kernelbase.7FFE291E4ADE |
00007FFE291AA26C | 45 33 C0 | xor r8d,r8d |
00007FFE291AA26F | 33 D2 | xor edx,edx |
00007FFE291AA271 | 48 8B CF | mov rcx,rdi | rcx:"USER32.dll"
00007FFE291AA274 | E8 17 00 00 00 | call <kernelbase.LoadLibraryExA> |
00007FFE291AA279 | 48 8B 5C 24 30 | mov rbx,qword ptr ss:[rsp+30] | [rsp+30]:LoadLibraryA
00007FFE291AA27E | 48 8B 74 24 38 | mov rsi,qword ptr ss:[rsp+38] |
00007FFE291AA283 | 48 83 C4 20 | add rsp,20 |
00007FFE291AA287 | 5F | pop rdi |
00007FFE291AA288 | C3 | ret |
我已经找到了一些找到API的地址,但是并没有全部加载! (从我所看到的内容中)
例如,这个地址我只加载了Windows库(kernel32.dll,KernelBase.dll等),但是由于它缺少大量库(DirectX,OpenGL等),我把它当作不是OEP来扔掉了。感谢所有帮助!谢谢:)
#1 楼
无论如何,拆开Themida的包装,尤其是较新的版本,绝非易事。从字面上看,它与拆开UPX的世界是完全不同的,如果您不熟悉拆箱,则绝对没有必要拆箱Themida。原因如下:Themida使用极其复杂的虚拟机环境,结合了书中的每个反调试和反分析技巧,并结合了许多不同的混淆方法。例如,在UPX打包二进制文件中,您只需要找到OEP并将其转储下来,然后最终重建IAT。在Themida二进制文件中,代码的不同部分在虚拟机中运行,并且掩盖了目标程序的行为。像Themida一样,解压缩受VM保护的打包器的最佳方法是对其进行虚拟化处理,这涉及确定打包器使用的整个指令集并编写脚本来解释该语言。所有这些只是一步。 Themida还严重阻塞了导入地址表,拆分了整个程序,并且一次只能加载一部分(这可以防止您像使用UPX一样“转储”整个程序),然后按常规将其卸载,并实施了一系列反分析技巧,其中许多技巧都列在其网站上。 Themida的解压缩非常复杂,以至于大多数人都编写脚本,因此您可以搜索要解压缩并使用该给定版本的脚本。如果版本是新的并且没有脚本,那么就您现在的专业水平而言,这将是一个非常非常漫长而艰巨的任务。
进一步阅读:
可执行代码自动去模糊化的通用方法
Peter Ferrie的反解包技巧
Themida / WinLicense手动解包教程
评论
感谢您澄清这一点。我认为这是一项非常艰巨的任务。我想我会仔细阅读。
– Graham Best
17/12/14在15:05