PE查壳为 Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks [Overlay]
我便根据FLY老大的3.60ARM的DLL壳教程开始!
OD载入程序:
008FAA93 M>/$ 55 push ebp
008FAA94 |. 8BEC mov ebp,esp
008FAA96 |. 53 push ebx
008FAA97 |. 8B5D 08 mov ebx,dword ptr ss:[ebp+8]
008FAA9A |. 56 push esi
008FAA9B |. 8B75 0C mov esi,dword ptr ss:[ebp+C]
008FAA9E |. 57 push edi
008FAA9F |. 8B7D 10 mov edi,dword ptr ss:[ebp+10]
008FAAA2 |. 85F6 test esi,esi
我下了 BP GetModuleHandleA+5 命令然后在 在试运行几次后找到了Magic Jump了 (详细的过程我就不写了FLY老大N年前就写了)
00AA799B 8B0D E011AD00 mov ecx,dword ptr ds:[AD11E0]
00AA79A1 89040E mov dword ptr ds:[esi+ecx],eax
00AA79A4 A1 E011AD00 mov eax,dword ptr ds:[AD11E0]
00AA79A9 393C06 cmp dword ptr ds:[esi+eax],edi
00AA79AC 75 16 jnz short 00AA79C4
00AA79AE 8D85 B4FEFFFF lea eax,dword ptr ss:[ebp-14C]
00AA79B4 50 push eax
00AA79B5 FF15 CC80AC00 call dword ptr ds:[AC80CC] ; kernel32.LoadLibraryA
00AA79BB 8B0D E011AD00 mov ecx,dword ptr ds:[AD11E0]
00AA79C1 89040E mov dword ptr ds:[esi+ecx],eax
00AA79C4 A1 E011AD00 mov eax,dword ptr ds:[AD11E0]
00AA79C9 393C06 cmp dword ptr ds:[esi+eax],edi
00AA79CC 0F84 AD000000 je 00AA7A7F ******** 我改成了JMP 00AA7A7F
00AA79D2 33C9 xor ecx,ecx
00AA79D4 8B03 mov eax,dword ptr ds:[ebx]
00AA79D6 3938 cmp dword ptr ds:[eax],edi
00AA79D8 74 06 je short 00AA79E0
00AA79DA 41 inc ecx
00AA79DB 83C0 0C add eax,0C
00AA79DE ^ EB F6 jmp short 00AA79D6
后Alt+M 在008d8000 m2server.dll .txet code 上下内存访问断点F9运行后就到了程序的入口
008DB980 /$ 55 push ebp
008DB981 |. 8BEC mov ebp,esp
008DB983 |. 8B45 0C mov eax,dword ptr ss:[ebp+C]
008DB986 |. 50 push eax ; /Arg3
008DB987 |. 8B4D 08 mov ecx,dword ptr ss:[ebp+8] ; |
008DB98A |. 51 push ecx ; |Arg2
008DB98B |. 8B55 10 mov edx,dword ptr ss:[ebp+10] ; |
008DB98E |. 83F2 FF xor edx,FFFFFFFF ; |
008DB991 |. 52 push edx ; |Arg1
008DB992 |. E8 B37E0100 call M2Server.008F384A ; \M2Server.008F384A
008DB997 |. 83C4 0C add esp,0C
008DB99A |. 83F0 FF xor eax,FFFFFFFF
008DB99D |. 5D pop ebp
008DB99E \. C3 retn
我就用LordPE 完全脱壳了 下来就是调用API 了
我调用了 00AC4A20 FF15 C480AC00 call dword ptr ds:[AC80C4] ; kernel32.GetModuleHandleA
确定了
RVA=00004000、大小=21B 得到输入表,剪切掉垃圾指针,改OEP=0006B980 然后我就修复了啊!下了就是 重定位表FLY老大的办法很奏效我很快的就找到了具体的位置
00AC2332 87FA xchg edx,edi
00AC2334 90 nop
00AC2335 87FA xchg edx,edi
00AC2337 C705 DCDBAC00 E4E4A>mov dword ptr ds:[ACDBDC],0ACE4E4
00AC2341 A1 9C55AD00 mov eax,dword ptr ds:[AD559C]
00AC2346 8B00 mov eax,dword ptr ds:[eax]// RVA=00006200
00AC2348 8985 48ECFFFF mov dword ptr ss:[ebp-13B8],eax
00AC234E A1 9C55AD00 mov eax,dword ptr ds:[AD559C]
00AC2353 83C0 04 add eax,4
00AC2356 A3 9C55AD00 mov dword ptr ds:[AD559C],eax
00AC235B A1 9C55AD00 mov eax,dword ptr ds:[AD559C]
00AC2360 8B00 mov eax,dword ptr ds:[eax] // 大小为 00005F34
00AC2362 8985 7CECFFFF mov dword ptr ss:[ebp-1384],eax
00AC2368 A1 9C55AD00 mov eax,dword ptr ds:[AD559C]
00AC236D 83C0 04 add eax,4
00AC2370 A3 9C55AD00 mov dword ptr ds:[AD559C],eax
00AC2375 83BD 48ECFFFF 00 cmp dword ptr ss:[ebp-13B8],0
00AC237C 74 6F je short 00AC23ED
00AC237E 83BD 7CECFFFF 00 cmp dword ptr ss:[ebp-1384],0
00AC2385 74 66 je short 00AC23ED
00AC2387 8B85 0CEBFFFF mov eax,dword ptr ss:[ebp-14F4]
00AC238D 8B8D 1CEBFFFF mov ecx,dword ptr ss:[ebp-14E4]
00AC2393 3B48 34 cmp ecx,dword ptr ds:[eax+34] ; LOADDLL.00400000
到这里总算完了,我没有做优化,心想先把脱壳搞熟悉了!可是放进后替换了 原来的 DLL 程序怎么也不正常!我试了几次都是一样!所以又只有 麻烦大家了! 谢谢各位老大了请给点指点!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课