能力值:
( LV9,RANK:3410 )
2 楼
1、请遵守论坛游戏规则,不要点将
2、去掉Armadillo的加壳标记即可
简单举个例子
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000100 50 45 00 00 4C 01 08 00 9D 8F E0 44 00 00 00 00 PE..L...?嗄....
00000110 00 00 00 00 E0 00 0F 01 0B 01 53 52 00 F0 04 00 ....?....SR.?.
你会在PE标记后发现53 52,把这个修改为00 00
能力值:
( LV2,RANK:10 )
3 楼
抱歉,没有看清发贴要求。
现在我重新脱了一次,有两个进程 PID=AB0,PID=DA4
我用AB0进程脱完后运行提示
This program has been damaged, possibly by a bad sector of the hard drive or a virus. Please reinstall it.
用DA4则什么提示都没有。
看看进程有两个DA4.exe (我dump PID=DA4的程序),那个才是我要的呢,还是我根本没有做对呢。
有些时候相联系作者问讯问题该怎么做呢?
谢谢。
能力值:
( LV9,RANK:3410 )
4 楼
第1楼的问题解决了?
第3楼的问题没有描述清楚,试试dilloDIE.V1.6脱壳机吧
能力值:
( LV2,RANK:10 )
5 楼
用脱壳机脱了一次,不能运行,出错。
能力值:
( LV2,RANK:10 )
6 楼
用脱壳机脱了一次,不能运行,出错。
这是我参照http://bbs.pediy.com/showthread.php?threadid=13223教程修改的结果。
0064B1F3 /EB 05 jmp short JuBa.0064B1FA
0064B1F5 |E8 74FBEBF9 call FA50AD6E
0064B1FA \83BD CCF5FFFF 0>cmp dword ptr ss:[ebp-A34],0
0064B201 0F8C A8020000 jl JuBa.0064B4AF
0064B207 8B8D CCF5FFFF mov ecx,dword ptr ss:[ebp-A34]
0064B20D 3B0D D4636800 cmp ecx,dword ptr ds:[6863D4]
0064B213 0F8D 96020000 jge JuBa.0064B4AF
//最后我断在0064B4AF,然后用Dump第二个进程。运行提示This program has been damaged, possibly by a bad sector of the hard drive or a virus. Please reinstall it.是否脱壳不成功?
0064B219 8B95 40F6FFFF mov edx,dword ptr ss:[ebp-9C0]
0064B21F 81E2 FF000000 and edx,0FF
0064B225 85D2 test edx,edx
0064B227 0F84 AD000000 je JuBa.0064B2DA
0064B22D 6A 00 push 0
0064B22F 8BB5 CCF5FFFF mov esi,dword ptr ss:[ebp-A34]
0064B235 C1E6 04 shl esi,4
0064B238 8B85 CCF5FFFF mov eax,dword ptr ss:[ebp-A34]
0064B23E 25 07000080 and eax,80000007
0064B243 79 05 jns short JuBa.0064B24A
0064B245 48 dec eax
0064B246 83C8 F8 or eax,FFFFFFF8
0064B249 40 inc eax
0064B24A 33C9 xor ecx,ecx
0064B24C 8A88 BC3D6800 mov cl,byte ptr ds:[eax+683DBC]
0064B252 8B95 CCF5FFFF mov edx,dword ptr ss:[ebp-A34]
0064B258 81E2 07000080 and edx,80000007
0064B25E 79 05 jns short JuBa.0064B265
0064B260 4A dec edx
0064B261 83CA F8 or edx,FFFFFFF8
0064B264 42 inc edx
0064B265 33C0 xor eax,eax
0064B267 8A82 BD3D6800 mov al,byte ptr ds:[edx+683DBD]
0064B26D 8B3C8D 84F36700 mov edi,dword ptr ds:[ecx*4+67F38>
0064B274 333C85 84F36700 xor edi,dword ptr ds:[eax*4+67F38>
0064B27B 8B8D CCF5FFFF mov ecx,dword ptr ss:[ebp-A34]
0064B281 81E1 07000080 and ecx,80000007
0064B287 79 05 jns short JuBa.0064B28E
0064B289 49 dec ecx
0064B28A 83C9 F8 or ecx,FFFFFFF8
0064B28D 41 inc ecx
0064B28E 33D2 xor edx,edx
0064B290 8A91 BE3D6800 mov dl,byte ptr ds:[ecx+683DBE]
0064B296 333C95 84F36700 xor edi,dword ptr ds:[edx*4+67F38>
0064B29D 8B85 CCF5FFFF mov eax,dword ptr ss:[ebp-A34]
0064B2A3 99 cdq
0064B2A4 B9 1C000000 mov ecx,1C
0064B2A9 F7F9 idiv ecx
0064B2AB 8BCA mov ecx,edx
0064B2AD D3EF shr edi,cl
0064B2AF 83E7 0F and edi,0F
0064B2B2 03F7 add esi,edi
0064B2B4 8B15 B8636800 mov edx,dword ptr ds:[6863B8]
0064B2BA 8D04B2 lea eax,dword ptr ds:[edx+esi*4]
0064B2BD 50 push eax
0064B2BE 8B8D CCF5FFFF mov ecx,dword ptr ss:[ebp-A34]
0064B2C4 51 push ecx
0064B2C5 E8 96210000 call JuBa.0064D460
0064B2CA 83C4 0C add esp,0C
//修改代码如下
0064B2CD FF85 CCF5FFFF inc dword ptr ss:[ebp-A34]
0064B2D3 C705 D8636800 0>mov dword ptr ds:[6863D8],1
0064B2DD ^ E9 18FFFFFF jmp JuBa.0064B1FA
//不知道为什么下面的代码会变成90
0064B2E2 90 nop
0064B2E3 90 nop
0064B2E4 90 nop
0064B2E5 90 nop 我用了自动脱壳机脱完后不能运行,也不知道问题所在?
能力值:
( LV9,RANK:3410 )
7 楼
原版程序可以正常运行起来吧
脱壳机不行就只好手动脱壳了
dilloDIE.V1.6在WinXP/2003平台上效果较好,并且某些杀软/防火墙会对脱壳机有影响
找个相似保护方式的教程跟随练习
先用教程中例子跟随练习
不要让教程去适应你的目标程序
掌握方法后就可以自己做了
能力值:
( LV2,RANK:10 )
8 楼
麻烦fly老大帮我看看我上面编辑后的脱壳纪录是否有问题。
下面这是我扫描后的结果能介绍给我那篇教程适合么?
我使用的XP 英文版这个对脱壳有影响么?
<------- 21-09-2006 17:57:11 ------->
C:\Program Files\JuBa\JuBa.exe
!- Protected Armadillo
Protection system (Basic)
!- <Protection Options>
Debug-Blocker
CopyMem-II
Enable Strategic Code Splicing
Enable Memory-Patching Protections
!- <Backup Key Options>
Fixed Backup Keys
!- <Compression Options>
Best/Slowest Compression
!- <Other Options>
!- Child detach
Child process ID: 00000250
Entry point: 0065AB63
Original bytes: 558B
能力值:
( LV2,RANK:10 )
9 楼
麻烦谁帮我看看我的问题。
我参照文档手动脱壳,可是在修复IAT是修改magic jump可是我怎样也没有找到magic jump。谁能提示一下如何找到magic jump呢?
谢谢各位的帮助
能力值:
( LV9,RANK:3410 )
10 楼
总的来说,Armadillo并不是适合新手练习的目标
你可以在看雪论坛精华合集里面找CopyMem-II教程,掌握后再看Code Splicing教程
能力值:
( LV2,RANK:10 )
11 楼
成功的边缘:
参照教程找到相应的magic jump,现在准备修改IAT可是我不理解教程中这个地方
1、运行ImportREC,选择这个进程。填入RVA=001D7208、Size=000008B4,Get Import剪切掉无效函数,修改OEP RVA=001B83BC,FixDump,正常运行!
教程中的RVA=001D7208、Size=000008B4是如何计算出来的。 2、BP WaitForDebugEvent
中断后取消断点,看堆栈:
0012BCB8 0060F8BF /CALL 到 WaitForDebugEvent 来自 MAGCT.0060F8B9
0012BCBC 0012CD90 |pDebugEvent = 0012CD90
0012BCC0 000003E8 \Timeout = 1000. ms
在数据窗口定位到0012CD90处,准备看OEP值
通过这样我的OEP是00407B20那么我的OEP RVA是00407B20-0040000=7B20这样对么?
能力值:
( LV9,RANK:3410 )
12 楼
1、找输入表函数结尾处-开始处
2、是
3、离成功还有不少距离
兄弟,先多学习基础知识吧
这些东西是别人无法替代你去学习的
能力值:
( LV2,RANK:10 )
13 楼
的确如你所说,我的基础是比较差。真的很感谢你耐心的帮助。
下面是我的脱壳一些步骤及问题:
00F4A4BF 8985 54D7FFFF mov [ebp-28AC], eax
00F4A4C5 FF15 7C62F500 call [F5627C] ; kernel32.GetTickCount
//在这里我选择内存窗口跟随
00F4A4CB 2B85 50D7FFFF sub eax, [ebp-28B0]
00F4A4D1 3D B80B0000 cmp eax, 0BB8
00F4A4D6 EB 11 jmp short 00F4A4E9
00F4A4D8 8B85 40D9FFFF mov eax, [ebp-26C0]
00F4A4DE 35 C31C724B xor eax, 4B721CC3
00F4A4E3 8985 40D9FFFF mov [ebp-26C0], eax
00F4A4E9 8B85 40D6FFFF mov eax, [ebp-29C0]
00F4A4EF 8985 D0ABFFFF mov [ebp+FFFFABD0], eax
00F4A4F5 FFB5 D0ABFFFF push dword ptr [ebp+FFFFABD0]
00F4A4FB E8 AAB10000 call 00F556AA ; jmp 到 msvcrt.operator delete
00F4A500 59 pop ecx
00F4A501 C705 E8C0F500 6>mov dword ptr [F5C0E8], 0F5CC64
//我在这里设置的断点,也就是中断后输入表处理完毕
00F4A50B C785 94D7FFFF 9>mov dword ptr [ebp-286C], 0F3719B 下面是我在内存跟随窗口看见的
00F55FF4 00000000
00F55FF8 00000000
00F55FFC 00000000
00F56000 77DD761B ADVAPI32.RegOpenKeyExA
00F56004 77DFD5BB ADVAPI32.RegCreateKeyA
00F56008 77DF8F7D ADVAPI32.RegCreateKeyW
//中间部分截去
00F5627C 7C80929C kernel32.GetTickCount
////中间部分截去
00F56538 774FDE02 ole32.StringFromGUID2
00F5653C 774FFAC3 ole32.CoCreateInstance
00F56540 77533373 ole32.OleUninitialize
00F56544 774FF6DA ole32.OleInitialize
00F56548 00000000
00F5654C 00000000
00F56550 00010000 UNICODE "ALLUSERSPROFILE=D:\Profiles\All Users"
1、是不是00F56000开始的地方,00F56548结尾的地方呢?
2、这里IAT偏移量是不是00F56000-0040000=B56000呢?
再次谢谢你的无私的帮助
能力值:
( LV9,RANK:330 )
14 楼
1、是
2、这里IAT偏移量是00F56544-00F56000=544
能力值:
( LV2,RANK:10 )
15 楼
IAT偏移和大小
也就是我手动填入RAV=544 size=548么?估计我又理解错了。
还是RAV=B56000,size=544呢?
能力值:
( LV9,RANK:330 )
16 楼
我说错了,偏移量是00F56000-00400000
大小是544
能力值:
( LV2,RANK:10 )
17 楼
谢谢
RAV=00F56000-00400000=B56000,size=544是么?
我使用Import 1.6F
填入RAV=B56000 size=548然后get imports得到结果
IAT read successfully.
rva:00B560C0 forwarded from mod:ntdll.dll ord:0258 name:RtlGetLastWin32Error
rva:00B56110 forwarded from mod:ntdll.dll ord:015C name:RtlRestoreLastWin32Error
rva:00B5625C forwarded from mod:ntdll.dll ord:005D name:RtlDeleteCriticalSection
rva:00B56264 forwarded from mod:ntdll.dll ord:0226 name:RtlLeaveCriticalSection
rva:00B5626C forwarded from mod:ntdll.dll ord:024C name:RtlEnterCriticalSection
---------------------------------------------------------------------------------------------------------------------------
Current imports:
A (decimal:10) valid module(s) (added: +A (decimal:+10))
149 (decimal:329) imported function(s). (added: +149 (decimal:+329))
填入OEP RAV=7B20 提示Invalid dump file! can't match RVA to offset in the dump file 为什么呢?
能力值:
( LV2,RANK:10 )
18 楼
似乎快结束了,感觉还是原地不动。。。
能力值:
( LV9,RANK:330 )
19 楼
从输入表数量看应该不是正确输入表所在,你应该在dump出来的程序中找到正确的输入表和oep。
能力值:
( LV2,RANK:10 )
20 楼
在计算RVA的时候碰见一个问题,RVA是如何计算出来的。参照帖子所诉修改程序的入口点。用OD载入居然找不到CALL [XXXXXXX]的地方。有没有其他方法来计算RVA呢?
能力值:
( LV9,RANK:330 )
21 楼
你找到oep了么?