能力值:
( LV2,RANK:10 )
|
-
-
2 楼
顶一下啊。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
来个人 回答下下啊。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
qiu qiu大哥们 解答一下
|
能力值:
(RANK:350 )
|
-
-
5 楼
你应该正确的,只是 黑鹰教程描述时,把第一行省略了。看的时候取其思路,勿硬搬。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
感谢坛主 谢谢
|
能力值:
( LV9,RANK:250 )
|
-
-
7 楼
第2个问题 在BP OpenMutexA断下后 要转双进程为单进程
CRTL+G前往表达式401000
在此键入代码
00401000 60 pushad ;此处新建EIP,RUN
00401001 9C pushfd
00401002 68 F8FB1300 push 13FBF8 ;这为上面堆栈的值,根据自己机子而定 ; ASCII "A8:AECE28122"
00401007 33C0 xor eax,eax
00401009 50 push eax
0040100A 50 push eax
0040100B E8 2FDB407C call kernel32.CreateMutexA ;这不能直接用十六进制添入
00401010 9D popfd
00401011 61 popad
00401012 - E9 04DC407C jmp kernel32.OpenMutexA ;这不能直接用十六进制添入
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
下同样断点 ALT+F9
JZ变Jnz
F9运行 ALT+F9
jnz变JZ
F9运行 取消断点 同样也是双变单。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
穿山甲 双进程 标准保护
第一步
载入OD,插件隐藏,停在这里
004E2000 > 60 pushad
004E2001 E8 00000000 call 004E2006
004E2006 5D pop ebp
004E2007 50 push eax
004E2008 51 push ecx
断点 BP OpenMutexA ,F9运行
异常在这里,添加异常,Shift+F9继续
004EB5C3 F0: prefix lock:
004EB5C4 F0:C7 ??? ; 未知命令
004EB5C6 C8 64678F enter 6764, 8F
004EB5CA 06 push es
004EB5CB 0000 add byte ptr [eax], al
停在这里
7C80EA1B > 8BFF mov edi, edi
7C80EA1D 55 push ebp
7C80EA1E 8BEC mov ebp, esp
7C80EA20 51 push ecx
7C80EA21 51 push ecx
7C80EA22 837D 10 00 cmp dword ptr [ebp+10], 0
7C80EA26 56 push esi
代码窗口 Ctrl+G -> 00401000
00401000 0000 add byte ptr [eax], al
00401002 0000 add byte ptr [eax], al
00401004 0000 add byte ptr [eax], al
00401006 0000 add byte ptr [eax], al
这些都是空数据段,添加以下代码
00401000 60 pushad //此处新建EIP,RUN
00401001 9C pushfd
00401002 68 54FD1200 push 12FD54 ; ASCII "8B8::DAE2B8142D" //这为上面堆栈的值,根据自己机子而定
00401007 33C0 xor eax, eax
00401009 50 push eax
0040100A 50 push eax
0040100B E8 2FD9407C call kernel32.CreateMutexA
00401010 9D popfd
00401011 61 popad
00401012 - E9 04DA407C jmp kernel32.OpenMutexA
60 9C 68 54 FD 12 00 33 C0 50 50 E8 2F D9 40 7C 9D 61 E9 04 DA 40 7C
再此来到 Ctrl+G -> 00401000 撤消修改代码
撤消断点
第二步
断点 he OutputDebugStringA Shift+F9
停在这里
7C859D78 > 68 34020000 push 234
7C859D7D 68 A0A0857C push 7C85A0A0
7C859D82 E8 3F87FAFF call 7C8024C6
7C859D87 A1 CC46887C mov eax, dword ptr [7C8846CC]
看堆栈,找到哪个0012EB58 0012F3A4 \String = "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
在上面那行 在数据窗口中跟随,在数据窗口中(右键 长型 地址)右键 二进制 00填充,这是OD的字符串溢出 ,
继续 Shift+F9
7C859D78 > 68 34020000 push 234
7C859D7D 68 A0A0857C push 7C85A0A0
7C859D82 E8 3F87FAFF call 7C8024C6
7C859D87 A1 CC46887C mov eax, dword ptr [7C8846CC]
再像上面那样来一次
此时取消断点,返回
继续下断 he GetModuleHandleA+5(2000下+5不行)Shift+f9
看堆栈
0012943C /0012EB50
00129440 |00D364B5 返回到 00D364B5 来自 kernel32.GetModuleHandleA
00129444 |00D61BB0 ASCII "kernel32.dll"
00129448 |00D62B68 ASCII "VirtualAlloc"
0012943C /0012EB50
00129440 |00D364D3 返回到 00D364D3 来自 kernel32.GetModuleHandleA
00129444 |00D61BB0 ASCII "kernel32.dll"
00129448 |00D62B5C ASCII "VirtualFree"
第三次来到这里(堆栈)
00129188 /00129440
0012918C |00D18C74 返回到 00D18C74 来自 kernel32.GetModuleHandleA
00129190 |00129308 ASCII "kernel32.dll" //取消断点 Alt+f9返回,这就是返回时机
停在这里
00D18C74 8B55 F4 mov edx, dword ptr [ebp-C]
00D18C77 8B0D 84EFD600 mov ecx, dword ptr [D6EF84]
00D18C7D 890491 mov dword ptr [ecx+edx*4], eax
00D18C80 8B55 F4 mov edx, dword ptr [ebp-C]
00D18C83 A1 84EFD600 mov eax, dword ptr [D6EF84]
往下拉,找到 00D18DED /0F84 45010000 je 00D18F38 //这了,Magic Jump 改JMP
再往下拉
00D18F73 ^\E9 74FCFFFF jmp 00D18BEC
00D18F78 EB 03 jmp short 00D18F7D //在这里下硬件执行Shift+F9 断下后撤消断点
00D18F7A D6 salc
00D18F7B D6 salc
重要:断下后,记得要撤消Magic Jump处的修改!
为何要这样做?我发现程序在下面会依据原先的代码进行解码,
以前下 硬件断点 操作没有修改原代码,所以解码正确。
而直接修改Magic Jump后改变了原先的代码,导致解码不正确而异常出错!
现在我们在解码以前恢复原先的代码,因此就不会再出错了!
,
最后一次下断(也可以用内存Alt+M 找00401000)下断,再这里 我们下断点 bp CreateThread
7C810637 > 8BFF mov edi, edi
7C810639 55 push ebp
7C81063A 8BEC mov ebp, esp
7C81063C FF75 1C push dword ptr [ebp+1C]
7C81063F FF75 18 push dword ptr [ebp+18]
取消断点,返回
00D243AC 50 push eax
00D243AD FF15 5CF2D500 call dword ptr [D5F25C] ; kernel32.CloseHandle
00D243B3 5E pop esi
00D243B4 5B pop ebx
F8单步
00D4046E 51 push ecx
00D4046F 8B55 F4 mov edx, dword ptr [ebp-C]
00D40472 2B55 DC sub edx, dword ptr [ebp-24]
00D40475 FFD2 call edx ; 风火助理.0040389F //这里F7进,就是OEP
00D40477 8945 FC mov dword ptr [ebp-4], eax
00D4047A 8B45 FC mov eax, dword ptr [ebp-4]
是不是红色的代码,那就对了,脱壳+修复
用PEID查脱壳后的还是显示 Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks
其实是PEID的误报,壳是脱了的。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
昏昏 这个以前发的 怎么突然飞出来了 - -!... 谢谢上面的大哥 这个我已经会了..
不过 又有问题出来了... 请大哥看看我的新问题//
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
不好意思,贴错地方了
|