在我们继续之前,我希望您记住,我对解压可执行文件比较陌生。所以我有几个
最近我一直在尝试解压一个可执行文件(x64 架构),也就是找到 OEP 并恢复 IAT,它与 Themida x64 打包在一起:
我试过在 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。
我已经解压了用 UPX 打包的文件,Themida 难倒我了。
感谢所有帮助!谢谢 :)