dreamboy 发表于 2006-9-18 15:04:48

脱Armadillo 1.xx - 2.xx的问题(问题已解决)

参照 飘云 大哥的贴子:
https://www.chinapyg.com/viewthread.php?tid=2116&highlight=Armadillo

软件下载地址:http://www.bay-technology.com/TraceSimSetup.exe

第一步(欺骗代码)是正确的

第二步:就找不到magic jmp了。

下断点::He GetModuleHandleA,F9运行       堆栈如下变化

00CBF55C   7365D4A4/CALL 到 GetModuleHandleA 来自 msctfime.7365D49E
00CBF560   00CBF564\pModule = "C:\WINDOWS\system32\ntdll.dll"

0012ED68   77F45BD8/CALL 到 GetModuleHandleA 来自 77F45BD2
0012ED6C   77F4501C\pModule = "KERNEL32.DLL"
0012ED70   00000001

0012E55C   5D175394/CALL 到 GetModuleHandleA 来自 5D17538E
0012E560   5D1753E0\pModule = "kernel32.dll"
0012E564   5D1E2B38

0012F570   004F7E29/CALL 到 GetModuleHandleA 来自 tracesim.004F7E23
0012F574   00000000\pModule = NULL
0012F578   0012F588

0012DFB0   00D5527A/CALL 到 GetModuleHandleA 来自 00D55274
0012DFB4   00000000\pModule = NULL
0012DFB8   00D752A0

0012DC18   74683BEE/CALL 到 GetModuleHandleA 来自 MSCTF.74683BE8
0012DC1C   0012DC20\pModule = "C:\WINDOWS\system32\ntdll.dll"   // 是否是在此返回?
0012DC20   575C3A43

如果返回后,怎么也找不到 magic jmp

请各位大侠踢教!
谢谢!

[ 本帖最后由 dreamboy 于 2006-9-19 21:22 编辑 ]

machenglin 发表于 2006-9-18 20:47:10

原帖由 dreamboy 于 2006-9-18 15:04 发表
参照 飘云 大哥的贴子:
https://www.chinapyg.com/viewthread.php?tid=2116&highlight=Armadillo

软件下载地址:http://www.bay-technology.com/TraceSimSetup.exe

第一步(欺骗代码)是正确的

第 ...

bp GetModuleHandleA

7C80B529 k>8BFF             mov edi,edi    //改内存访问断点。

F9,直到出现注册界面,再F9几次,

堆栈中:
0012E02C   00E26614/CALL 到 GetModuleHandleA 来自 00E2660E   //到了,返回!
0012E030   00000000\pModule = NULL

返回到这里。
00E26614   8B4D 08          mov ecx,dword ptr ss:      ; kernel32.7C800000
00E26617   3BC8             cmp ecx,eax
00E26619   75 07            jnz short 00E26622
00E2661B   B8 98C3E300      mov eax,0E3C398
00E26620   EB 30            jmp short 00E26652
00E26622   393D E8C7E300    cmp dword ptr ds:,edi
00E26628   B8 E8C7E300      mov eax,0E3C7E8
00E2662D   74 0C            je short 00E2663B               ; magic jmp!!!

修改为:

00E2662D   74 0C            jmp short 00E2663B

Alt+M, 在401000下F2,Ctrl+F9。

00468C4A   55               push ebp                        ; OEP!
00468C4B   8BEC             mov ebp,esp
00468C4D   6A FF            push -1
00468C4F   68 00014B00      push tracesim.004B0100
00468C54   68 E4DD4600      push tracesim.0046DDE4
00468C59   64:A1 00000000   mov eax,dword ptr fs:
00468C5F   50               push eax
00468C60   64:8925 00000000 mov dword ptr fs:,esp
00468C67   83EC 10          sub esp,10
00468C6A   53               push ebx
00468C6B   56               push esi
00468C6C   57               push edi
00468C6D   8965 E8          mov dword ptr ss:,esp
00468C70   FF15 10B24900    call dword ptr ds:      ; kernel32.GetVersion

脱壳后,已经注册。

冷血书生 发表于 2006-9-18 21:06:12

0012E00C   00D661B1/CALL 到 GetModuleHandleA 来自 00D661AB
0012E010   00D7C818\pModule = "kernel32.dll"   ---》 返回的好时机


00D661C4    /74 19            je short 00D661DF   估计就是MAGIC JUMP了



00468C4A   55               push ebp                  ----》 估计就是OEP了
00468C4B   8BEC               mov ebp,esp
00468C4D   6A FF            push -1
00468C4F   68 00014B00      push tracesim.004B0100
00468C54   68 E4DD4600      push tracesim.0046DDE4
00468C59   64:A1 00000000   mov eax,dword ptr fs:
00468C5F   50               push eax
00468C60   64:8925 00000000   mov dword ptr fs:,esp
00468C67   83EC 10            sub esp,10
00468C6A   53               push ebx
00468C6B   56               push esi
00468C6C   57               push edi




DUMP后修复一下即可!

BTW:脱壳后,限制解除!

[ 本帖最后由 冷血书生 于 2006-9-18 21:07 编辑 ]

machenglin 发表于 2006-9-18 21:26:44

原帖由 冷血书生 于 2006-9-18 21:06 发表
0012E00C   00D661B1/CALL 到 GetModuleHandleA 来自 00D661AB
0012E010   00D7C818\pModule = "kernel32.dll"   ---》 返回的好时机


00D661C4    /74 19            je short 00D661DF    ...

0012E00C   00D661B1/CALL 到 GetModuleHandleA 来自 00D661AB
0012E010   00D7C818\pModule = "kernel32.dll"   ---》 返回的好时机

这里返回,可能IAT表还没有解密。

数据窗口定位在49B0000可以观察到:
0049B1E07C8097ADkernel32.InterlockedExchange
0049B1E400E2745E
0049B1E800E275DD
0049B1EC00E27727
0049B1F000E26A22
0049B1F400E265F8
0049B1F87C8397A1kernel32.GetCurrentDirectoryA
0049B1FC7C9309EDntdll.RtlSizeHeap
0049B2007C81EAE1kernel32.RaiseException
0049B2047C957A40ntdll.RtlUnwind
0049B20800E26B82
0049B20C00E26C77
0049B2107C8114ABkernel32.GetVersion
其中0xe2xxxx没有解密,共18个。

machenglin 发表于 2006-9-18 21:30:45

解密后应当是这样:
0049B1E07C8097ADkernel32.InterlockedExchange
0049B1E47C80946Ckernel32.CreateFileMappingA
0049B1E87C80B78Dkernel32.MapViewOfFile
0049B1EC7C80B7FCkernel32.UnmapViewOfFile
0049B1F07C882F9Ckernel32.LoadLibraryA
0049B1F47C882FECkernel32.GetProcAddress
0049B1F87C8397A1kernel32.GetCurrentDirectoryA
0049B1FC7C9309EDntdll.RtlSizeHeap
0049B2007C81EAE1kernel32.RaiseException
0049B2047C957A40ntdll.RtlUnwind
0049B2087C81486Akernel32.GetEnvironmentVariableA
0049B20C7C81CAA2kernel32.ExitProcess
0049B2107C8114ABkernel32.GetVersion

dreamboy 发表于 2006-9-18 21:41:06

谢谢两位,可我还是把握不了返回的时机,应该怎么看?请赐教,谢谢!

冷血书生 发表于 2006-9-18 21:51:16

原帖由 machenglin 于 2006-9-18 21:26 发表


0012E00C   00D661B1/CALL 到 GetModuleHandleA 来自 00D661AB
0012E010   00D7C818\pModule = "kernel32.dll"   ---》 返回的好时机

这里返回,可能IAT表还没有解密。

数据窗口定位在4 ...

是的!不过我判断没你准确,所以就用插件弄了一下!

dreamboy 发表于 2006-9-18 22:09:05

原帖由 冷血书生 于 2006-9-18 21:51 发表


是的!不过我判断没你准确,所以就用插件弄了一下!


插件,能贴出来吗?
谢谢!

dreamboy 发表于 2006-9-18 22:55:31

原帖由 machenglin 于 2006-9-18 20:47 发表


bp GetModuleHandleA

7C80B529 k>8BFF             mov edi,edi    //改内存访问断点。

F9,直到出现注册界面,再F9几次,

堆栈中:
0012E02C   00E26614/CALL 到 GetModuleHandleA 来自 00 ...

bp GetModuleHandleA

7C80B529 k>8BFF             mov edi,edi    //改内存访问断点.

重新下断后,没有找到
0012E02C   00E26614/CALL 到 GetModuleHandleA

请指教,谢谢!

或能不能把全过程贴出来,谢谢!

dreamboy 发表于 2006-9-19 08:57:42

原帖由 machenglin 于 2006-9-18 20:47 发表


bp GetModuleHandleA

7C80B529 k>8BFF             mov edi,edi    //改内存访问断点。

F9,直到出现注册界面,再F9几次,

堆栈中:
0012E02C   00E26614/CALL 到 GetModuleHandleA 来自 00 ...

7C80B6A1 >8BFF            mov   edi, edi   //取消断点
7C80B6A3    55            push    ebp
7C80B6A4    8BEC            mov   ebp, esp
7C80B6A6    837D 08 00      cmp   dword ptr , 0
7C80B6AA    74 18         je      short 7C80B6C4   //重新下断

7C80B529 k>8BFF             mov edi,edi    //改内存访问断点
是否是在 je      short 7C80B6C4   //重新下断

谢谢!
页: [1] 2
查看完整版本: 脱Armadillo 1.xx - 2.xx的问题(问题已解决)