能力值:
( LV9,RANK:3410 )
|
-
-
2 楼
旧版Armadillo
GetProcAddress上面比较特殊api待加密
跳开就行了
|
能力值:
( LV6,RANK:90 )
|
-
-
3 楼
我不太明白fly你是什么意思。
003C4739 74 12 je short 003C474D
和
003C4732 74 19 je short 003C474D
两处改掉都不行
之所以起名令类脱壳,就是这么个意思
|
能力值:
( LV9,RANK:290 )
|
-
-
4 楼
003D4BE2 85C0 test eax, eax
003D4BE4 74 0A je short 003D4BF0 //把这里NOP掉,就可以得到未加密的IAT了
003D4BE6 83C6 10 add esi, 10
003D4BE9 397E 08 cmp dword ptr ds:[esi+8], edi
003D4BEC ^ 75 DD jnz short 003D4BCB
003D4BEE ^ EB B9 jmp short 003D4BA9
|
能力值:
( LV9,RANK:250 )
|
-
-
5 楼
003C4737 391F cmp dword ptr ds:[edi],ebx
003C4739 74 12 je short 003C474D
我在003C4739处跳过后,用ImportRec修复,程序仍然有错。
是不是我理解错了?请解释详细些
|
能力值:
( LV6,RANK:90 )
|
-
-
6 楼
to clide2000
呵呵,不好意思,你机器上地址跟我机器上不一样,所以刚才看错了。其实那样改跟直接改成call GetProcAddress没什么区别吧。可能这就是fly说的那个地方吧。
|
能力值:
( LV9,RANK:290 )
|
-
-
7 楼
我也没仔细看,只是发现NOP掉这里可以避过IAT的加密了
|
能力值:
( LV9,RANK:250 )
|
-
-
8 楼
最初由 clide2000 发布 003D4BE2 85C0 test eax, eax 003D4BE4 74 0A je short 003D4BF0 //把这里NOP掉,就可以得到未加密的IAT了 003D4BE6 83C6 10 add esi, 10 003D4BE9 397E 08 cmp dword ptr ds:[esi+8], edi 003D4BEC ^ 75 DD jnz short 003D4BCB ........
不行的,NOP后程序都不能运行了
|
能力值:
( LV6,RANK:90 )
|
-
-
9 楼
nop掉只是为了弄出iat,可以分两步来的吗。
|
能力值:
( LV7,RANK:100 )
|
-
-
10 楼
要的是完整IAT而并非要程序运行.先DUMP文件.记住OEP地址.然后修改那里在用IMPR就能找到完整的IAT了.修复之前DUMP的文件就OK.还有其他方法修复IAT的.
|
能力值:
( LV9,RANK:140 )
|
-
-
11 楼
【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC 1.6
【软件简介】: 电子书编辑器
【下载地址】: http://www.thespringsoft.com
Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks [Overlay]
设置Ollydbg忽略所有的异常选项。老规矩:用IsDebug 1.4插件去掉Ollydbg的调试器标志。
005A80B9 > 55 push ebp
005A80BA 8BEC mov ebp,esp
005A80BC 6A FF push -1
005A80BE 68 68025C00 push eBookStu.005C0268
005A80C3 68 007B5A00 push eBookStu.005A7B00
005A80C8 64:A1 00000000 mov eax,dword ptr fs:[0]
一看是单进程的所以我们可以直接下BP GetModuleHandleA+5 shift+f9
7C80B52E 837D 08 00 cmp dword ptr ss:[ebp+8],0//到这里
7C80B532 74 18 je short kernel32.7C80B54C
7C80B534 FF75 08 push dword ptr ss:[ebp+8]
7C80B537 E8 682D0000 call kernel32.7C80E2A4
看堆栈
0012FF34 /0012FFC0
0012FF38 |005A8181 返回到 eBookStu.005A8181 来自 kernel32.GetModuleHandleA
0012ED64 /0012ED80
0012ED68 |77F45BB0 返回到 77F45BB0 来自 kernel32.GetModuleHandleA
0012ED6C |77F44FF4 ASCII "KERNEL32.DLL"
0012E558 /0012E590
0012E55C |5D175394 返回到 5D175394 来自 kernel32.GetModuleHandleA
0012E560 |5D1753E0 ASCII "kernel32.dll"
0012F56C /0012F5C0
0012F570 |005A0E53 返回到 eBookStu.005A0E53 来自 kernel32.GetModuleHandleA
0012F574 |00000000
0012F578 |005BD56C ASCII "RegisterServiceProcess"
0012DED4 /0012DF10
0012DED8 |003D471F 返回到 003D471F 来自 kernel32.GetModuleHandleA
0012DEDC |003ED824 ASCII "kernel32.dll"//返回时机到了
取消段点返回
003D471F 8906 mov dword ptr ds:[esi],eax ; kernel32.7C800000
003D4721 3BC3 cmp eax,ebx
003D4723 75 0B jnz short 003D4730
003D4725 FF76 F8 push dword ptr ds:[esi-8]
003D4728 FF15 CCB03E00 call dword ptr ds:[3EB0CC] ; kernel32.LoadLibraryA
003D472E 8906 mov dword ptr ds:[esi],eax
003D4730 391E cmp dword ptr ds:[esi],ebx
003D4732 74 19 je short 003D474D//改je为jmp
003D4734 8B7E FC mov edi,dword ptr ds:[esi-4]
003D4737 391F cmp dword ptr ds:[edi],ebx
003D4739 74 12 je short 003D474D
003D473B FF37 push dword ptr ds:[edi]
003D473D FF36 push dword ptr ds:[esi]
003D473F FF15 C8B03E00 call dword ptr ds:[3EB0C8] ; kernel32.GetProcAddress
下内存访问断点直接到oep
005753A0 55 push ebp//oep
005753A1 8BEC mov ebp,esp
005753A3 83C4 F0 add esp,-10
005753A6 B8 E04C5700 mov eax,eBookStu.00574CE0
005753AB E8 C015E9FF call eBookStu.00406970
005753B0 A1 70AC5700 mov eax,dword ptr ds:[57AC70]
005753B5 8B00 mov eax,dword ptr ds:[eax]
005753B7 E8 ECB1EFFF call eBookStu.004705A8
005753BC 8B0D 70AC5700 mov ecx,dword ptr ds:[57AC70] ; eBookStu.0057BB7C
005753C2 8B09 mov ecx,dword ptr ds:[ecx]
005753C4 B2 01 mov dl,1
005753C6 A1 44874A00 mov eax,dword ptr ds:[4A8744]
005753CB E8 FC2AEFFF call eBookStu.00467ECC
用loadpe dump之 ImportREC选择 这个进程 oep=0057530-400000=1753A0 点IT AutoSearch,CUT掉无效函数。FixDump,运行程序出错
接着我看打开dump文件
005753A0 > 55 push ebp
005753A1 8BEC mov ebp,esp
005753A3 83C4 F0 add esp,-10
005753A6 B8 E04C5700 mov eax,dumped2_.00574CE0
005753AB E8 C015E9FF call dumped2_.00406970//f7进入
005753B0 A1 70AC5700 mov eax,dword ptr ds:[57AC70]
005753B5 8B00 mov eax,dword ptr ds:[eax]
00406970 53 push ebx
00406971 8BD8 mov ebx,eax
00406973 33C0 xor eax,eax
00406975 A3 9C605700 mov dword ptr ds:[57609C],eax
0040697A 6A 00 push 0
0040697C E8 2BFFFFFF call <jmp.&kernel32.GetModuleHandl>//f7进入得到函数地址
004068AC - FF25 7CE25700 jmp dword ptr ds:[<&kernel32.GetMo>; kernel32.GetModuleHandleA//jmp dword ptr ds:[57E27C]
004068B2 8BC0 mov eax,eax
004068B4 - FF25 78E25700 jmp dword ptr ds:[<&kernel32.Local>; kernel32.LocalAlloc
004068BA 8BC0 mov eax,eax
004068BC - FF25 74E25700 jmp dword ptr ds:[<&kernel32.TlsGe>; kernel32.TlsGetValue
004068C2 8BC0 mov eax,eax
004068C4 - FF25 70E25700 jmp dword ptr ds:[<&kernel32.TlsSe>; kernel32.TlsSetValue
关闭这个程序 重新打开源程序
005A80B9 > 55 push ebp
005A80BA 8BEC mov ebp,esp
005A80BC 6A FF push -1
005A80BE 68 68025C00 push eBookStu.005C0268
005A80C3 68 007B5A00 push eBookStu.005A7B00
005A80C8 64:A1 00000000 mov eax,dword ptr fs:[0]
005A80CE 50 push eax
005A80CF 64:8925 000000>mov dword ptr fs:[0],esp
005A80D6 83EC 58 sub esp,58
005A80D9 53 push ebx
005A80DA 56 push esi
005A80DB 57 push edi
005A80DC 8965 E8 mov dword ptr ss:[ebp-18],esp
005A80DF FF15 28D15B00 call dword ptr ds:[<&KERNEL32.GetV>; kernel32.GetVersion
下hr 57E27C断点 这个就不用我说了吧
003E4553 F3:A5 rep movs dword ptr es:[edi],dword >//取消断点
003E4555 FF2495 68463E0>jmp dword ptr ds:[edx*4+3E4668]
003E455C 8BC7 mov eax,edi
003E455E BA 03000000 mov edx,3
003E4563 83E9 04 sub ecx,4
003E4566 72 0C jb short 003E4574
003E4568 83E0 03 and eax,3
003E456B 03C8 add ecx,eax
003E456D FF2485 80453E0>jmp dword ptr ds:[eax*4+3E4580]
003E4574 FF248D 78463E0>jmp dword ptr ds:[ecx*4+3E4678]
003E457B 90 nop
。。。。。。。。f8一直走
003E2219 8985 9CFEFFFF mov dword ptr ss:[ebp-164],eax
003E221F FFB5 64FCFFFF push dword ptr ss:[ebp-39C]
003E2225 FFB5 88FCFFFF push dword ptr ss:[ebp-378]
003E222B E8 3629FFFF call 003D4B66//这里 修改为 call kernel32.GetProcAddress
003E2230 8985 6CFCFFFF mov dword ptr ss:[ebp-394],eax
003E2236 83BD 6CFCFFFF >cmp dword ptr ss:[ebp-394],0
F9运行 出错 点确定 这个时候程序中止了 ,不要管他
打开ImportREC选择 这个进程 oep=0057530-400000=1753A0 点IT AutoSearch,CUT掉无效函数。FixDump,程序运行了,它采用的的ARM的注册模块,壳脱掉了也就不需要注册了.
夜凉如水[bcg]
|
能力值:
( LV9,RANK:250 )
|
-
-
12 楼
用楼上的方法是可以的,但有没有修改Magic Jump不出错的方案呢?
看了另几篇文章好像不加密特殊api时是可以的。
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
我也碰到了这种壳,要是FLY能做个详细的教程就好了,大家期盼呀
|
能力值:
( LV6,RANK:90 )
|
-
-
14 楼
汗~~~原来这个不是标准ARM,怪不得我弄不好,多谢两位大虾指点~~谢谢~!!
|