此主题不考虑多个壳混合加壳。本文基本上是自己最近脱壳的积累,如果有错误,请大家指正!!
本人经验,仅供参考
找壳步骤:
1)当然是找OEP,不考虑Magic jmp以及IAT加密,最简单的找出口方法是用Alt+M下内存断点,断点在401000处(原因可以找各位老大的文章,我是没找到),下断方法:右键->找硬件执行,然后F9,遇到异常就Shift+F9,来到下面的代码就是入口处了:
004378EF 55 push ebp//在这儿用LordPE纠正ImageSize后完全DUMP这个进程
004378F0 8BEC mov ebp,esp
004378F2 6A FF push -1
004378F4 68 98AF4700 push MrCaptor.0047AF98
004378F9 68 546A4300 push MrCaptor.00436A54
004378FE 64:A1 00000000 mov eax,dword ptr fs:[0]
00437904 50 push eax
00437905 64:8925 00000000 mov dword ptr fs:[0],esp
0043790C 83EC 58 sub esp,58
0043790F 53 push ebx
00437910 56 push esi
00437911 57 push edi
00437912 8965 E8 mov dword ptr ss:[ebp-18],esp
00437915 FF15 00F44600 call dword ptr ds:[46F400] ; kernel32.GetVersion
004378EF根据不同的系统有所不同,在Import里输入378EF,获取输入,如果只有六个垃圾指针,恭喜你(基本上不可能)
2)Magic jmp的查找
首先,要知道Magic jmp的作用,根据各位老大的文章,应该是应用于加密IAT的。查找方法,一般是断GetModuleHandleA断点(或者GetModuleHandleA+5),注意是硬断点,当看到
0012D3AC 00C86622 返回到 00C86622 来自 kernel32.GetModuleHandleA
0012D3B0 0012D4E8 ASCII "advapi32.dll"
这个的时候,就该注意了,再走一次F9,就Alt+F9,ok,下面就是Magic jmp了。
补充,如果用GetModuleHandleA的方法没法找到标志"advapi32.dll",就要用BP OpenMutexA的方法了。
3)修复IAT
基本上我遇到的Arma的壳的IAT都是大于6个垃圾指针,如何剔除不正确的垃圾指针,请参阅[爱之中体验之记事本],weiyi75兄写的。
至于用OpenMutexA等方式,各位谁有好的心得贡献一下。还有,由于Arma的多样性,不要老用一种方法脱壳,一种方法不行,要多做别的尝试。
个人认为,最主要的是为什么这么做,而不是照做,谢谢。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!