能力值:
( LV4,RANK:50 )
2 楼
写的太烂。
升中四很要緊。有一陣子不能上
修复就是吧 jmp dword ptr ds:[403060] 的改成7C80B6A1 即getmodulthandleA 地址
DUMP 哦
ok
可以优化下
这里不说了
放上没壳,加好 ,脱了 ,跟 优化的文件
上传的附件:
能力值:
( LV15,RANK:3306 )
3 楼
学习一下。。。
能力值:
( LV4,RANK:50 )
4 楼
这次 。我们来看看ZPROTECT的加密调用代码 一項
我们先在加密导入表設置中去掉所有加密 (就是把所有函数加密改为不加密)
选上加密调用代码
再次加壳
看看是怎么回事
对比下两者
未加壳
00402317 yh.<模块> 6A 00 push 0
00402319 E8 F2000000 call 00402410 ; <jmp.&kernel32.GetModuleHandleA>
0040231E A3 24404000 mov dword ptr ds:[404024],eax
00402323 6A 00 push 0
00402325 68 75224000 push 402275
0040232A 6A 00 push 0
0040232C 68 E8030000 push 3E8
00402331 FF35 24404000 push dword ptr ds:[404024]
00402337 E8 26000000 call 00402362 ; <jmp.&user32.DialogBoxParamA>
0040233C 50 push eax
0040233D E8 B6000000 call 004023F8 ; <jmp.&kernel32.ExitProcess>
00402342 C3 retn
00402343 CC int3
00402344 - FF25 EC304000 jmp dword ptr ds:[4030EC] ; USER32.wsprintfA
0040234A - FF25 E8304000 jmp dword ptr ds:[4030E8] ; USER32.AppendMenuA
00402350 - FF25 E4304000 jmp dword ptr ds:[4030E4] ; USER32.CallWindowProcA
00402356 - FF25 E0304000 jmp dword ptr ds:[4030E0] ; USER32.CloseClipboard
0040235C - FF25 DC304000 jmp dword ptr ds:[4030DC] ; USER32.CreatePopupMenu
加了壳的
00402317 6A 00 push 0
00402319 E8 F2000000 call 00402410 ; yh_packe.00402410
0040231E A3 24404000 mov dword ptr ds:[404024],eax
00402323 6A 00 push 0
00402325 68 75224000 push 402275
0040232A 6A 00 push 0
0040232C 68 E8030000 push 3E8
00402331 FF35 24404000 push dword ptr ds:[404024]
00402337 E8 26000000 call 00402362 ; yh_packe.00402362
0040233C 50 push eax
0040233D E8 B6000000 call 004023F8 ; yh_packe.004023F8
00402342 C3 retn
00402343 CC int3
00402344 - E9 4BBF0000 jmp 0040E294 ; yh_packe.0040E294
00402349 90 nop
0040234A - E9 C9BC0000 jmp 0040E018 ; yh_packe.0040E018
0040234F 90 nop
00402350 - E9 A3BE0000 jmp 0040E1F8 ; yh_packe.0040E1F8
00402355 90 nop
00402356 - E9 41BD0000 jmp 0040E09C ; yh_packe.0040E09C
0040235B 90 nop
0040235C - E9 A3BE0000 jmp 0040E204 ; yh_packe.0040E204
00402361 90 nop
很明显就是把
FF25 加指針位置的地方改成一个JUMP 把多余的地方NOP掉
进CALL
0040E258 68 A7B93C15 push 153CB9A7
0040E25D ^ E9 52FEFFFF jmp 0040E0B4 ; yh_packe.0040E0B4
0040E262 D310 rcl dword ptr ds:[eax],cl
0040E264 68 8BB93C15 push 153CB98B
0040E269 ^ E9 46FEFFFF jmp 0040E0B4 ; yh_packe.0040E0B4
0040E26E E6 57 out 57,al
0040E270 68 B4B93C15 push 153CB9B4
0040E275 ^ E9 3AFEFFFF jmp 0040E0B4 ; yh_packe.0040E0B4
0040E27A 1968 68 sbb dword ptr ds:[eax+68],ebp
0040E27D 8EB9 3C15E92E mov seg?,word ptr ds:[ecx+2EE9153C] ; 未定义的段寄存器
0040E283 FE ??? ; 未知命令
0040E284 FFFF ??? ; 未知命令
怎么不一样?!
F8一下 发现了CALL
00D80BA0 /E9 98FC0000 jmp 00D9083D
00D80BA5 |CC int3
00D80BA6 |CC int3
00D80BA7 |CC int3
是把解密的部分放在壳申請的区段进行。对比上一篇 这里是一样的 跟进去
00D9083D 60 pushad
00D9083E E9 9D3B0000 jmp 00D943E0
00D90843 238B 1D28C6D8 and ecx,dword ptr ds:[ebx+D8C6281D]
00D90849 00E9 add cl,ch
00D9084B 19B7 0000F205 sbb dword ptr ds:[edi+5F20000],esi
00D90851 6B8F 5DE9CFC6 00 imul ecx,dword ptr ds:[edi+C6CFE95D],0
进去以后 以PUSHAD 开头
ESP定律能恢复好,跳到该函数的地方
F8 后 hr esp
F9到了POPAD 和一个JUMP JUMP下去
发现了RETN 要到的地方 正是加密的getmodulehandleA
壳本身已经处理好代码
这时我们可以回到给加密出
00402410 - E9 43BE0000 jmp 0040E258 ; yh_packe.0040E258
00402415 90 nop
改回
FF25 XXXXXXXXX
得找回那ptr [XXXXXX]的位址
已经找到函数了 就易辦了.
d 401000 代码段
7C80B6A1
记住要從低至高位A1 B6 80 7C
search 二進制字串
找到是403060就OK了
我们把 00402410 - E9 43BE0000 jmp 0040E258 ; yh_packe.0040E258
00402415 90 nop
改回
00402410 - FF25 60304000 jmp dword ptr ds:[403060] ; kernel32.GetModuleHandleA
就成了
其实绝对可以写角本完成
強化加密和这也差不多
跟跟就知道 有很多特征码可以搜索。。
现在角本都出来了
主要我自己用比较笨的方法
exec +ende写角本。
能力值:
( LV2,RANK:10 )
5 楼
楼主这么多精华??
能力值:
( LV2,RANK:10 )
6 楼
能力值:
( LV4,RANK:50 )
7 楼
是BUG 吧?!
查了下
FFFFFFFF ->4294967295?
BUG已经给报告了
应该很快会正常
能力值:
( LV12,RANK:1130 )
8 楼
膜拜
lunglungyu 初级会员
资 料:
注册日期: Jan 2008
帖子: 81
精华: 4294967295
声望: 10
能力值:
(RANK:380 )
9 楼
精华数目很强大 好几个群都发了 过来望望
能力值:
(RANK:1010 )
10 楼
过来留个念!
能力值:
( LV9,RANK:490 )
11 楼
拍照,合影,留念
能力值:
( LV9,RANK:170 )
12 楼
截图留念
上传的附件:
能力值:
( LV4,RANK:50 )
13 楼
整理了一份 除去所有混亂jmp外的 壳用来恢复API位址+執行的代碼
调试带很多花
体力活
这里只是看一下格式
进CALL前
EAX 00000000
ECX 0012FFB0
EDX 7C92EB94 ntdll.KiFastSystemCallRet
EBX 7FFDE000
ESP 0012FFBC
EBP 0012FFF0
ESI FFFFFFFF
EDI 7C930738 ntdll.7C930738
EIP 0040E258 yh_packe.0040E258 push 153CB9A7
pushad
push dword ptr ss:[esp+20] ZPROTECT 利用了ESP協助加密
call 00D94483 - 以下开始是CALL 中的
xchg dword ptr ss:[esp],edx ptr 疊ptr
lea edx,dword ptr ds:[edx+4138]
xchg dword ptr ss:[esp],edx
mov eax,dword ptr ds:[D8C628] 交换回
cmp byte ptr ds:[eax+17E],0 以上代码 每次加密大多格式一样/但FPU 和數值不同
je 00D8F8D2 以下的每次加密动态生成 利用这一堆带码算出api地址
-------------------------------------------------------------------
mov eax,dword ptr ss:[esp+4]
push esi
push eax
call dword ptr ds:[D8C514] call中
pushad 开始动作?!
mov edx,dword ptr ss:[esp+24]
xchg ebp,esi
mov esi,esi
xchg esi,esi
neg edx
neg edx
xchg eax,ebp
xor edx,56AB3560 这些数据更加不同
mov eax,6EA50155
push ecx
pop ebp
mov ebp,26841A9
mov ebp,ecx
push edx
pop edi
add edi,427D094C
neg edi
xor edi,79EB69E2
xchg edx,eax
mov esi,edi
mov ebx,esi
mov edi,115E6AAB
mov esi,ecx
mov dword ptr ss:[esp+1C],ebx
popad
retn 4
mov ecx,dword ptr ds:[D8CC28]
test ecx,ecx
mov esi,eax
je 00D992C1 这里不跳
jmp 00D91DA4
mov eax,dword ptr ds:[D8CC2C]
sub eax,ecx
sar eax,2
cmp esi,eax
jb 00D94F31 跳 这时 EAX 00000037
ECX 00DA4258
EDX 7C92EB94 ntdll.KiFastSystemCallRet
EBX 7FFDE000
ESP 0012FF8C
EBP 0012FFF0
ESI 0000000F
EDI 7C930738 ntdll.7C930738
EIP 00D94F31
mov ecx,dword ptr ds:[ecx+esi*4] 这时ds:[00DA4294]=7C80B6A1 (kernel32.GetModuleHandleA) ecx是该API地址
后部处理 (过渡到API的所以是一样的)
mov dword ptr ss:[esp+2C],ecx
pop esi
retn 4
popad 堆棧平衡
retn RETN 到API
之后会到正常流程
能力值:
( LV9,RANK:290 )
14 楼
签名留恋@~~~~~
能力值:
( LV2,RANK:10 )
15 楼
强烈学习!!!!!!!!!
能力值:
( LV9,RANK:450 )
16 楼
支持一下。楼主辛苦了。
能力值:
( LV2,RANK:10 )
17 楼
只看懂一点点
能力值:
( LV12,RANK:210 )
18 楼
支持下楼主 留个名 ZP现在比较流行
能力值:
( LV2,RANK:10 )
19 楼
楼主还看这贴吗?我也碰上了一个用ZP的软件,它的加密貌似比较强,我按楼主说的到PushAD后,用ESP定律来给它下硬件断点,但是断不下来,不知道楼主是不是做了特殊的设置才能断下来???
能力值:
( LV4,RANK:50 )
20 楼
如果需要注册的話 程序运行前会先经过壳的流程 确定注册后才会返回
能力值:
( LV2,RANK:10 )
21 楼
我想学习 这个 但不知道怎么学 有那位高手 告诉一下
能力值:
( LV2,RANK:10 )
22 楼
楼主是强人一个!!
能力值:
( LV2,RANK:10 )
23 楼
中四是什么? 中学4年级?
能力值:
( LV4,RANK:50 )
24 楼
就是中学第四年的意思
应该是高1的吧
悄悄地灌水
能力值:
( LV2,RANK:10 )
25 楼
看不懂!不过支持一下。