脱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 编辑 ] 原帖由 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
脱壳后,已经注册。 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 编辑 ] 原帖由 冷血书生 于 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个。 解密后应当是这样:
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 谢谢两位,可我还是把握不了返回的时机,应该怎么看?请赐教,谢谢! 原帖由 machenglin 于 2006-9-18 21:26 发表
0012E00C 00D661B1/CALL 到 GetModuleHandleA 来自 00D661AB
0012E010 00D7C818\pModule = "kernel32.dll" ---》 返回的好时机
这里返回,可能IAT表还没有解密。
数据窗口定位在4 ...
是的!不过我判断没你准确,所以就用插件弄了一下! 原帖由 冷血书生 于 2006-9-18 21:51 发表
是的!不过我判断没你准确,所以就用插件弄了一下!
插件,能贴出来吗?
谢谢! 原帖由 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
请指教,谢谢!
或能不能把全过程贴出来,谢谢! 原帖由 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