按刹那恍惚教程脱加Armadillo 2.51 - 3.xx 的dll壳
用PEiD查壳 Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks
1。OD 载入
下断点 HE OutputDebugStringA
Shift+F9 运行,中断下来。看堆栈
0295DC20 0332296B /CALL 到 OutputDebugStringA 来自 03322965
0295DC24 0295E590 \String = "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>
出现这个说明这个DLL是经过Armadillo 4.X压缩过
DLL文件加壳应该是不可以双进程,所以这里是单进程方式
2。脱壳
a寻找 Magic Jump
下断点 BP GetModuleHandleA+5,Shift+F9 几次f9后到这里
02958880 033135DD 返回到 033135DD 来自 kernel32.GetModuleHandleA
02958884 03322C1C ASCII "kernel32.dll"
02958888 03323E98 ASCII "VirtualAlloc"
f9到这里
02958880 033135FA 返回到 033135FA 来自 kernel32.GetModuleHandleA
02958884 03322C1C ASCII "kernel32.dll"
02958888 03323E8C ASCII "VirtualFree"
f9到这里
02958620 0330592B 返回到 0330592B 来自 kernel32.GetModuleHandleA
02958624 0295875C ASCII "kernel32.dll"
按脱壳教程 在这里清除断点后Alt+F9返回程序
0330592B 8B0D 14B03203 mov ecx,dword ptr ds:[332B014] ;返回到这里
03305931 89040E mov dword ptr ds:[esi+ecx],eax
03305934 A1 14B03203 mov eax,dword ptr ds:[332B014]
03305939 393C06 cmp dword ptr ds:[esi+eax],edi
0330593C 75 16 jnz short 03305954
0330593E 8D85 DCFEFFFF lea eax,dword ptr ss:[ebp-124]
03305944 50 push eax
03305945 FF15 90D03103 call dword ptr ds:[331D090] ; kernel32.LoadLibraryA
0330594B 8B0D 14B03203 mov ecx,dword ptr ds:[332B014]
03305951 89040E mov dword ptr ds:[esi+ecx],eax
03305954 A1 14B03203 mov eax,dword ptr ds:[332B014]
03305959 393C06 cmp dword ptr ds:[esi+eax],edi
0330595C 0F84 2F010000 je 03305A91 ;magic jump处
03305962 33C9 xor ecx,ecx
03305964 8B03 mov eax,dword ptr ds:[ebx]
03305966 3938 cmp dword ptr ds:[eax],edi
03305968 74 06 je short 03305970
把 0330595C 这句的 JE 03305A91 改成 JMP 03305A91
b获得重定位信息
下断点 bp GetTickCount,Shift+F9 运行中断后,注意看堆栈:
02958888 03314CF3 /CALL 到 GetTickCount 来自 03314CED
f9到这里
02958888 03314EB8 /CALL 到 GetTickCount 来自 03314EB2
按脱壳教程 在这里清除断点后Alt+F9返回程序
问题就出在这里
Alt+F9返回程序后没有找到教程类似代码
00B8C3C8 2B85 A4D4FFFF SUB EAX,DWORD PTR SS:[EBP-2B5C] ; 返回到这里
00B8C3CE 8B8D A8D4FFFF MOV ECX,DWORD PTR SS:[EBP-2B58]
00B8C3D4 6BC9 32 IMUL ECX,ECX,32
00B8C3D7 81C1 D0070000 ADD ECX,7D0
00B8C3DD 3BC1 CMP EAX,ECX
00B8C3DF 76 07 JBE SHORT 00B8C3E8
00B8C3E1 C685 34D9FFFF 0>MOV BYTE PTR SS:[EBP-26CC],1
00B8C3E8 83BD E4D7FFFF 0>CMP DWORD PTR SS:[EBP-281C],0
00B8C3EF 0F85 8A000000 JNZ 00B8C47F
在 CPU 窗口按 Ctrl+S 查找如下代码
PUSH EAX
XCHG CX,CX
POP EAX
STC
也找不到!
我调试了很多次bp GetTickCount Shift+F9 运行中断后所有的才找到了
请教高手们这里下断点 bp GetTickCount后何时按Alt+F9返回程序,如何判断该按Alt+F9
我比较菜,问的不对请高手别笑话!!!
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法