首页
社区
课程
招聘
请脱壳,并给出程序的密码
发表于: 2004-8-4 17:26 7394

请脱壳,并给出程序的密码

2004-8-4 17:26
7394
收藏
免费 1
支持
分享
最新回复 (26)
雪    币: 217
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
我脱不了,希望能脱的写也教程学习
2004-8-4 17:32
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大家一起交流嘛!
共同进步
2004-8-4 17:38
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
Armadillo 标准壳
OEP: 0000C382        IATRVA: 00026000        IATSize: 00000540

固定注册码:tHiSiStHESeRIal
2004-8-5 00:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
aiyah... u r faster than me...

serial checking call
00401CD4    E8 CB9E0000     CALL dumped_.0040BBA4

serial:tHiSiStHESeRIal
2004-8-5 00:48
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
6
pm给我,我让你先发   ;)
2004-8-5 00:53
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
能否贴上来,也好学习学习手工脱壳啊!
请贴一点手工分析的过程,好吗?
谢谢!
2004-8-5 01:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
search the forum and u will get the tutorial to unpack this standard protection of armadillo....
2004-8-5 01:54
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
刚刚成功脱壳的朋友,可以再补充一点脱壳笔记吗?
这样也可以使得论坛的内容充实起来啊~~~!

我用OD跟踪,老是出现非法中断的标志!
大虾是否可以贴一点关键的路标,也好让我们这些菜鸟
少走弯路,谢谢!
2004-8-5 02:07
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
10
Armadillo 标准壳很简单
论坛搜索

忽略所有异常
2004-8-5 02:19
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
也好有点信心,进入OEP前的Offset大概在什么位置,
能否贴一下进入OEP前面的代码,
否则真的会有在茫茫沙漠中行走的味道!

能否说一下,这个壳具体的大小

00456000 60                   pushad
00456001 E8 00 00 00 00       call        00456006
00456006 5D                   pop         ebp
00456007 50                   push        eax
00456008 51                   push        ecx
00456009 EB 0F                jmp         0045601A
......

程序进OEP时候的代码,能否贴一点?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这个部分是否可以贴一点,谢谢拉~~~!

如果知道壳的大小,就会逐步的建立信心,
否则真的会有在茫茫沙漠中行走的味道!
2004-8-5 02:35
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
斑竹对刚刚的问题请给个实质性的回答好吗?
不要老是用搜索某某关键字来做回复!
这样可以使得论坛的内容充实起来啊~~~!
难到多为新手回答一些具体的问题的时间也没有吗?
坛内的帖子对于armd的标准壳的脱壳的文章,
已经很完善了吗?
希望有人能够作些补充,不要保守吗?
fly斑竹,这个壳到底有多大?回答一下好吗?!
我是很努力的呀!请作个具体的回答!

作为版规,我觉得要增加一条,对于搜索某某
关键字,看看书的这样捣糨糊的回答,应该尽量少。。。
说这样的话,和看了个空贴,有什么区别那???
2004-8-5 10:25
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
13
最初由 limee 发布
斑竹对刚刚的问题请给个实质性的回答好吗?
不要老是用搜索某某关键字来做回复!
这样可以使得论坛的内容充实起来啊~~~!
难到多为新手回答一些具体的问题的时间也没有吗?
坛内的帖子对于armd的标准壳的脱壳的文章,
已经很完善了吗?
希望有人能够作些补充,不要保守吗?
fly斑竹,这个壳到底有多大?回答一下好吗?!
我是很努力的呀!请作个具体的回答!

作为版规,我觉得要增加一条,对于搜索某某
关键字,看看书的这样捣糨糊的回答,应该尽量少。。。
说这样的话,和看了个空贴,有什么区别那???

如果真的想学习,搜索一下就会发现很多东西在几百年前就有人写了.
如果连搜索都懒得做,实在无话可说.
2004-8-5 10:51
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
就是无法确信是不是这里??如果都不愿意多说,
看来我要戒版几周,潜心钻研了!
真的要有什么心得,也不会发表的!
我是虚心请教的!~~
斑竹,如果你说这东西出现了几百年,请拿出证明
的东西来呀!
ff这个东西对你们来说是简单,可是回答一下费力吗?
只知道卖书赚钱,现在学crack没赶上时候啊!
以前热心的大虾很多,现在我来这里和不来这里
都一样!
我学破解到现在也只有1个月左右,已经破截了2个软件了!
鬼子的和国产的各一个~~~!
怪不的国内的软件比国外的落后很多啊,固步自封的人太多了!
我去国外的Crack bbs了,这里的某些人太势利眼了!
2004-8-5 11:17
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
同意!
2004-8-5 11:24
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
16
Armadillo V3.40标准加壳方式的脱壳――Win98的Notepad

   
  
作者 正文
fly

时间: 2003-11-25 周二, 下午8:29    标题: Armadillo V3.40标准加壳方式的脱壳――Win98的Notepad   

--------------------------------------------------------------------------------

Armadillo V3.40标准加壳方式的脱壳――Win98的Notepad
  

下载地址:  http://www.siliconrealms.com/download/Armd340.exe  
软件大小:  1.63M

【软件简介】:Armadillo is a powerful software protection system. It wraps around your program like an armored shell, defending your work from pirates and program crackers with state-of-the-art encryption, data compression, and other security features. It allows you to design and add a complete software protection and registration-key system to your existing programs in five minutes or less, with no changes to your program's code! And it works with any language that produces a 32-bit Windows EXE file.

【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

【调试环境】:WinXP、Ollydbg1.09、PEiD、LordPE、ImportREC

―――――――――――――――――――――――――――――――――  
【脱壳过程】:
           

从其主页下载了Armadillo V3.40,应该是目前的最新版吧?
试炼品:用Armadillo V3.40标准方式(Standard Protections Only)加壳的Win98的Notepad,想试试就自己加吧。

Armadillo是当今猛壳之一啦。其CopyMem-II+Debug-Blocker的加壳方式是非常强劲的,其标准加壳方式相对来说则容易的多。无聊时偶来捏捏软柿子, 看看V3.40的标准加壳有无变化。

用IsDebug 1.4插件去掉Ollydbg的调试器标志。设置忽略所有的异常选项。Let's Go!

00425869   55                     push ebp
                                  ====>进入OD后断在这!

F9运行,弹出“未授权”的Armadillo保护提示。偶们下断:BP GetModuleHandleA+5  点OK后断下。当然,对于用注册版加壳的没有这个提示,可以直接在GetModuleHandleA+5处下 硬件执行 断点。断下后看看堆栈:

77E59F93     837C24 04 00         cmp dword ptr ss:[esp+4],0
77E59F98     0F84 23060000        je kernel32.77E5A5C1
                                  ====>断在这!按7次F9,然后取消断点,Ctrl+F9执行到返回

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
BP GetModuleHandleA+5  中断后的堆栈变化:

0012BE84    00AA6A5E   返回到 00AA6A5E 来自 kernel32.GetModuleHandleA
0012BE88    0012BFC0   ASCII "kernel32.dll"

0012BE84    00AA6A5E   返回到 00AA6A5E 来自 kernel32.GetModuleHandleA
0012BE88    0012BFC0   ASCII "user32.dll"

0012BE84    00AA6A5E  返回到 00AA6A5E 来自 kernel32.GetModuleHandleA
0012BE88    0012BFC0  ASCII "MSVBVM60.DLL"

0012B77C    66001BB1   返回到 66001BB1 来自 kernel32.GetModuleHandleA
0012B780    66003DA8   ASCII "kernel32.dll"

0012B770    66002848   返回到 66002848 来自 kernel32.GetModuleHandleA
0012B774    66003DD4   ASCII "KERNEL32"

0012B768    660031FB   返回到 660031FB 来自 kernel32.GetModuleHandleA
0012B76C    00000000

0012BE84    00AA6A5E   返回到 00AA6A5E 来自 kernel32.GetModuleHandleA
0012BE88    0012BFC0   ASCII "advapi32.dll"

0012C110    00ABE6C1   返回到 00ABE6C1 来自 kernel32.GetModuleHandleA
0012C114    00000000   //好了,到此为止吧  再来几次就运行了

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

77E59F9E     FF7424 04            push dword ptr ss:[esp+4]
77E59FA2     E8 55080000          call kernel32.77E5A7FC
77E59FA7     85C0                 test eax,eax
77E59FA9     74 08                je short kernel32.77E59FB3
77E59FAB     FF70 04              push dword ptr ds:[eax+4]
77E59FAE     E8 B0060000          call kernel32.GetModuleHandleW
77E59FB3     C2 0400              retn 4
                                  ====>返回到 00ABE6C1

――――――――――――――――――――――――

00ABE6BB     FF15 C4C0AC00        call dword ptr ds:[ACC0C4]              ; kernel32.GetModuleHandleA
00ABE6C1     3985 B0E9FFFF        cmp dword ptr ss:[ebp-1650], eax        ; Notepad.00400000
00ABE6C7     75 0F                jnz short 00ABE6D8
00ABE6C9     C785ACE9FFFF4002AD00 mov dword ptr ss:[ebp-1654], 0AD0240
00ABE6D3     E9 C4000000          jmp 00ABE79C
00ABE6D8     83A5 84E7FFFF 00     and dword ptr ss:[ebp-187C], 0
00ABE6DF     C78580E7FFFF5008AD00 mov dword ptr ss:[ebp-1880], 0AD0850
00ABE6E9     EB 1C                jmp short 00ABE707
00ABE6EB     8B85 80E7FFFF        mov eax, dword ptr ss:[ebp-1880]
00ABE6F1     83C0 0C              add eax, 0C
00ABE6F4     8985 80E7FFFF        mov dword ptr ss:[ebp-1880], eax
00ABE6FA     8B85 84E7FFFF        mov eax, dword ptr ss:[ebp-187C]
00ABE700     40                   inc eax
00ABE701     8985 84E7FFFF        mov dword ptr ss:[ebp-187C], eax
00ABE707     8B85 80E7FFFF        mov eax, dword ptr ss:[ebp-1880]
00ABE70D     8338 00              cmp dword ptr ds:[eax], 0
00ABE710     0F84 86000000        je 00ABE79C   //在这里偶中断了6次
                                  ====>这就是那个Magic Jump   
此处下 硬件执行 断点,每次断下后改标志Z=1,使其JMP,就能得到未被破坏的输入表了  

接着下断:BP GetCurrentThreadId   断下后取消断点,Ctrl+F9执行到返回   

77E57CC4     64:A1 18000000       mov eax, dword ptr fs:[18]
77E57CCA     8B40 24              mov eax, dword ptr ds:[eax+24]
77E57CCD     C3                   retn
                                  ====>返回到 00AC1351

00AC134B     FF15 14C1AC00        call dword ptr ds:[ACC114]   ; kernel32.GetCurrentThreadId
00AC1351     A3 F0B8AD00          mov dword ptr ds:[ADB8F0], eax
                                  ====>返回到这里  向下找CALL EDI,在00AC13E4处,F2下断
00AC1356     E8 E759FEFF          call 00AA6D42
00AC135B     6A 00                push 0
00AC135D     E8 FBB1FEFF          call 00AAC55D
00AC1362     6A 00                push 0
00AC1364     C7054418AD008022AD00 mov dword ptr ds:[AD1844], 0AD2280      ; ASCII "RC"
00AC136E     E8 A22D0000          call 00AC4115
00AC1373     59                   pop ecx
00AC1374     59                   pop ecx
00AC1375     E8 1B2BFFFF          call 00AB3E95
00AC137A     8BF8                 mov edi, eax
00AC137C     A1 DCB8AD00          mov eax, dword ptr ds:[ADB8DC]
00AC1381     8B48 78              mov ecx, dword ptr ds:[eax+78]
00AC1384     3348 3C              xor ecx, dword ptr ds:[eax+3C]
00AC1387     3348 38              xor ecx, dword ptr ds:[eax+38]
00AC138A     03F9                 add edi, ecx
00AC138C     8B0E                 mov ecx, dword ptr ds:[esi]
00AC138E     85C9                 test ecx, ecx
00AC1390     75 2F                jnz short 00AC13C1
00AC1392     8B78 3C              mov edi, dword ptr ds:[eax+3C]
00AC1395     E8 FB2AFFFF          call 00AB3E95
00AC139A     8B0D DCB8AD00        mov ecx, dword ptr ds:[ADB8DC]          ; Notepad.0043D260
00AC13A0     FF76 14              push dword ptr ds:[esi+14]
00AC13A3     8B51 78              mov edx, dword ptr ds:[ecx+78]
00AC13A6     FF76 10              push dword ptr ds:[esi+10]
00AC13A9     3351 38              xor edx, dword ptr ds:[ecx+38]
00AC13AC     FF76 0C              push dword ptr ds:[esi+C]
00AC13AF     33D7                 xor edx, edi
00AC13B1     03C2                 add eax, edx
00AC13B3     8B51 6C              mov edx, dword ptr ds:[ecx+6C]
00AC13B6     3351 28              xor edx, dword ptr ds:[ecx+28]
00AC13B9     33D7                 xor edx, edi
00AC13BB     2BC2                 sub eax, edx
00AC13BD     FFD0                 call eax
00AC13BF     EB 25                jmp short 00AC13E6
00AC13C1     83F9 01              cmp ecx, 1
00AC13C4     75 22                jnz short 00AC13E8
00AC13C6     FF76 04              push dword ptr ds:[esi+4]
00AC13C9     FF76 08              push dword ptr ds:[esi+8]
00AC13CC     6A 00                push 0
00AC13CE     E8 C22AFFFF          call 00AB3E95
00AC13D3     50                   push eax
00AC13D4     A1 DCB8AD00          mov eax, dword ptr ds:[ADB8DC]
                                  ====>EAX=0043D260
00AC13D9     8B48 6C              mov ecx, dword ptr ds:[eax+6C]
                                  ====>ECX=CE6D8D16
00AC13DC     3348 3C              xor ecx, dword ptr ds:[eax+3C]
                                  ====>ECX=CE6D8D16 XOR 0423AE82=CA4E2394
00AC13DF     3348 28              xor ecx, dword ptr ds:[eax+28]
                                  ====>ECX=CA4E2394 XOR 8A844884=40CA6B10
00AC13E2     2BF9                 sub edi, ecx
                                  ====>EDI=410A7BDC  -  40CA6B10=004010CC
00AC13E4     FFD7                 call edi             ; Notepad.004010CC
                                  ====>此处下断!F7进入!!  飞向光明之巅!GO GO GO   
00AC13E6     8BD8                 mov ebx, eax
00AC13E8     5F                   pop edi
00AC13E9     8BC3                 mov eax, ebx
00AC13EB     5E                   pop esi
00AC13EC     5B                   pop ebx
00AC13ED     C3                   retn

――――――――――――――――――――――――

004010CC     55                   push ebp
                                  ====>在这儿用LordPE完全DUMP这个进程
004010CD     8BEC                 mov ebp,esp
004010CF     83EC 44              sub esp,44
004010D2     56                   push esi
004010D3     FF15 E4634000        call dword ptr ds:[4063E4]  ; kernel32.GetCommandLineA
004010D9     8BF0                 mov esi,eax
004010DB     8A00                 mov al,byte ptr ds:[eax]
004010DD     3C 22                cmp al,22
004010DF     75 1B                jnz short Notepad.004010FC
004010E1     56                   push esi
004010E2     FF15 F4644000        call dword ptr ds:[4064F4]  ; USER32.CharNextA

―――――――――――――――――――――――――――――――――

运行ImportREC,选择这个进程。把OEP改为000010CC,点IT AutoSearch,点“Get Import”,放心CUT掉6个无效的指针,FixDump,正常运行!   

―――――――――――――――――――――――――――――――――
     
                                 
         ,     _/  
        /| _.-~/            \_     ,        青春都一饷
       ( /~   /              \~-._ |\
       `\\  _/                \   ~\ )          忍把浮名  
   _-~~~-.)  )__/;;,.          \_  //'
  /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        换了破解轻狂
`~ _( ,_..--\ (     ,;'' /    ~--   /._`\  
  /~~//'   /' `~\         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`\    `\\~~\   
                         "     "   "~'  ""

     

          Cracked By 巢水工作坊――fly [OCN][FCG][NUKE]

                   2003-11-25  20:20

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
一蓑烟雨……任平生!
2004-8-5 11:27
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
17
简单脱壳-Armadillo360标准加壳的win98记事本程序

【破解作者】 csjwaman

【作者邮箱】 [email]csjwaman@sohu.com[/email]

【使用工具】 OD110Bb,LordPE,ImprotREC16F,FI30

【破解平台】 Win9x/NT/2000/XP

【软件名称】 Armadillo360标准加壳的win98记事本程序

【下载地址】 本地下载  

【软件简介】 Armadillo360标准加壳的win98记事本程序

【加壳方式】 Armadillo360标准加壳

【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)

--------------------------------------------------------------------------------

【破解内容】

简单脱壳-Armadillo360标准加壳的win98记事本程序

用FI30查看为Armadillo 2.5? {glue}加壳(晕!)。首选用IsDebug 1.4插件去掉Ollydbg的调试器标志。设置忽略所有的异常选项。
载入程序后,停在:

00432999 >/$  55            PUSH EBP====>停在此处。
0043299A  |.  8BEC          MOV EBP,ESP
0043299C  |.  6A FF         PUSH -1
0043299E  |.  68 502C4500   PUSH NOTEPAD.00452C50
004329A3  |.  68 80234300   PUSH NOTEPAD.00432380                    ;  SE handler installation
004329A8  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
004329AE  |.  50            PUSH EAX
004329AF  |.  64:8925 00000>MOV DWORD PTR FS:[0],ESP

一、DUMP程序

ALT+M打开内存镜像:

Memory map, item 11
Address=00400000
Size=00001000 (4096.)=====>在这行下内存访问断点。
Owner=NOTEPAD  00400000 (itself)
Section=
Contains=PE header
Type=Imag 01001002
Access=R
Initial access=RWE

F9运行程序,中间会有一个提示错误的对话框,点确定后再SHIFT+F9程序断在:

004010CC    55              PUSH EBP=====>呵呵,这是什么?DUMP吧!
004010CD    8BEC            MOV EBP,ESP
004010CF    83EC 44         SUB ESP,44
004010D2    56              PUSH ESI
004010D3    FF15 E4634000   CALL DWORD PTR DS:[4063E4]
004010D9    8BF0            MOV ESI,EAX
004010DB    8A00            MOV AL,BYTE PTR DS:[EAX]
004010DD    3C 22           CMP AL,22
004010DF    75 1B           JNZ SHORT NOTEPAD.004010FC
004010E1    56              PUSH ESI
004010E2    FF15 F4644000   CALL DWORD PTR DS:[4064F4]               ; USER32.CharNextA
004010E8    8BF0            MOV ESI,EAX
004010EA    8A00            MOV AL,BYTE PTR DS:[EAX]
004010EC    84C0            TEST AL,AL
004010EE    74 04           JE SHORT NOTEPAD.004010F4
004010F0    3C 22           CMP AL,22
004010F2  ^ 75 ED           JNZ SHORT NOTEPAD.004010E1
004010F4    803E 22         CMP BYTE PTR DS:[ESI],22
004010F7    75 15           JNZ SHORT NOTEPAD.0040110E
004010F9    46              INC ESI
004010FA    EB 12           JMP SHORT NOTEPAD.0040110E
004010FC    3C 20           CMP AL,20
004010FE    7E 0E           JLE SHORT NOTEPAD.0040110E
00401100    56              PUSH ESI
00401101    FF15 F4644000   CALL DWORD PTR DS:[4064F4]               ; USER32.CharNextA
00401107    8038 20         CMP BYTE PTR DS:[EAX],20
0040110A    8BF0            MOV ESI,EAX
0040110C  ^ 7F F2           JG SHORT NOTEPAD.00401100
0040110E    803E 00         CMP BYTE PTR DS:[ESI],0

DUMP后用LordPE修改入口点为4010CC。

二、查找Magic JMP

用OD载入DUMP程序:

004010CC >  55              PUSH EBP
004010CD    8BEC            MOV EBP,ESP
004010CF    83EC 44         SUB ESP,44
004010D2    56              PUSH ESI
004010D3    FF15 E4634000   CALL DWORD PTR DS:[4063E4]=====>当用F7走到这里时出错,记下地址4063E4。
004010D9    8BF0            MOV ESI,EAX
004010DB    8A00            MOV AL,BYTE PTR DS:[EAX]
004010DD    3C 22           CMP AL,22
004010DF    75 1B           JNZ SHORT dumped.004010FC
004010E1    56              PUSH ESI

用OD载入带壳程序,在DUMP区CTRL+G,输入4063E4,点OK,在DUMP区看到的都是00000000,看来数据还未写入。好,在4063E4处的4个字节上下硬件写入DWORD断点。F9运行程序,出现错误提示对话框,确定后SHIFT+F9。再F9一次,程序停在:

00A5181A    8B85 20ECFFFF   MOV EAX,DWORD PTR SS:[EBP-13E0]=====>断在此处(不要删除断点,等下还要用)。再看看DUMP区,数据已经写入了。
00A51820    83C0 04         ADD EAX,4
00A51823    8985 20ECFFFF   MOV DWORD PTR SS:[EBP-13E0],EAX
00A51829  ^ E9 36FDFFFF     JMP 00A51564
00A5182E    83BD F4EAFFFF 0>CMP DWORD PTR SS:[EBP-150C],0
00A51835    0F85 8A000000   JNZ 00A518C5
00A5183B    0FB685 B0E8FFFF MOVZX EAX,BYTE PTR SS:[EBP-1750]
00A51842    85C0            TEST EAX,EAX
00A51844    74 7F           JE SHORT 00A518C5
00A51846    6A 00           PUSH 0
00A51848    8B85 B4E8FFFF   MOV EAX,DWORD PTR SS:[EBP-174C]
00A5184E    C1E0 02         SHL EAX,2
00A51851    50              PUSH EAX

往上找Magic JMP,来到:

00A51349    FF15 C480A500   CALL DWORD PTR DS:[A580C4]                        ; KERNEL32.GetModuleHandleA
00A5134F    3985 BCE8FFFF   CMP DWORD PTR SS:[EBP-1744],EAX
00A51355    75 0F           JNZ SHORT 00A51366
00A51357    C785 B8E8FFFF 3>MOV DWORD PTR SS:[EBP-1748],0A5C530
00A51361    E9 C4000000     JMP 00A5142A
00A51366    83A5 94E6FFFF 0>AND DWORD PTR SS:[EBP-196C],0
00A5136D    C785 90E6FFFF 4>MOV DWORD PTR SS:[EBP-1970],0A5CB48
00A51377    EB 1C           JMP SHORT 00A51395
00A51379    8B85 90E6FFFF   MOV EAX,DWORD PTR SS:[EBP-1970]
00A5137F    83C0 0C         ADD EAX,0C
00A51382    8985 90E6FFFF   MOV DWORD PTR SS:[EBP-1970],EAX
00A51388    8B85 94E6FFFF   MOV EAX,DWORD PTR SS:[EBP-196C]
00A5138E    40              INC EAX
00A5138F    8985 94E6FFFF   MOV DWORD PTR SS:[EBP-196C],EAX
00A51395    8B85 90E6FFFF   MOV EAX,DWORD PTR SS:[EBP-1970]
00A5139B    8338 00         CMP DWORD PTR DS:[EAX],0
00A5139E    0F84 86000000   JE 00A5142A=====>这就是Magic JMP!
00A513A4    8B85 90E6FFFF   MOV EAX,DWORD PTR SS:[EBP-1970]
00A513AA    8B40 08         MOV EAX,DWORD PTR DS:[EAX+8]
00A513AD    83E0 01         AND EAX,1
00A513B0    85C0            TEST EAX,EAX
00A513B2    74 25           JE SHORT 00A513D9
00A513B4    A1 9455A600     MOV EAX,DWORD PTR DS:[A65594]
00A513B9    8B0D 9455A600   MOV ECX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A513BF    8B40 58         MOV EAX,DWORD PTR DS:[EAX+58]
00A513C2    3341 6C         XOR EAX,DWORD PTR DS:[ECX+6C]
00A513C5    8B0D 9455A600   MOV ECX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A513CB    3341 70         XOR EAX,DWORD PTR DS:[ECX+70]
00A513CE    25 80000000     AND EAX,80
00A513D3    85C0            TEST EAX,EAX
00A513D5    74 02           JE SHORT 00A513D9
00A513D7  ^ EB A0           JMP SHORT 00A51379
00A513D9    8B85 94E6FFFF   MOV EAX,DWORD PTR SS:[EBP-196C]
00A513DF    8B0D E011A600   MOV ECX,DWORD PTR DS:[A611E0]
00A513E5    8B15 9455A600   MOV EDX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A513EB    8B0481          MOV EAX,DWORD PTR DS:[ECX+EAX*4]
00A513EE    3342 54         XOR EAX,DWORD PTR DS:[EDX+54]
00A513F1    8B0D 9455A600   MOV ECX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A513F7    3341 70         XOR EAX,DWORD PTR DS:[ECX+70]
00A513FA    8B0D 9455A600   MOV ECX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A51400    3341 24         XOR EAX,DWORD PTR DS:[ECX+24]
00A51403    8B0D 9455A600   MOV ECX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A51409    3341 30         XOR EAX,DWORD PTR DS:[ECX+30]
00A5140C    3985 BCE8FFFF   CMP DWORD PTR SS:[EBP-1744],EAX
00A51412    75 11           JNZ SHORT 00A51425
00A51414    8B85 90E6FFFF   MOV EAX,DWORD PTR SS:[EBP-1970]
00A5141A    8B40 04         MOV EAX,DWORD PTR DS:[EAX+4]
00A5141D    8985 B8E8FFFF   MOV DWORD PTR SS:[EBP-1748],EAX
00A51423    EB 05           JMP SHORT 00A5142A
00A51425  ^ E9 4FFFFFFF     JMP 00A51379
00A5142A    80A5 B0E8FFFF 0>AND BYTE PTR SS:[EBP-1750],0
00A51431    83BD F4EAFFFF 0>CMP DWORD PTR SS:[EBP-150C],0
00A51438    75 3F           JNZ SHORT 00A51479
00A5143A    A1 6C5AA600     MOV EAX,DWORD PTR DS:[A65A6C]
00A5143F    8A80 82370000   MOV AL,BYTE PTR DS:[EAX+3782]
00A51445    8885 4CD2FFFF   MOV BYTE PTR SS:[EBP-2DB4],AL
00A5144B    0FB685 4CD2FFFF MOVZX EAX,BYTE PTR SS:[EBP-2DB4]
00A51452    85C0            TEST EAX,EAX
00A51454    74 23           JE SHORT 00A51479
00A51456    8B85 ACE8FFFF   MOV EAX,DWORD PTR SS:[EBP-1754]
00A5145C    3B85 B8FDFFFF   CMP EAX,DWORD PTR SS:[EBP-248]
00A51462    72 15           JB SHORT 00A51479
00A51464    8B85 ACE8FFFF   MOV EAX,DWORD PTR SS:[EBP-1754]
00A5146A    3B85 C4FDFFFF   CMP EAX,DWORD PTR SS:[EBP-23C]
00A51470    73 07           JNB SHORT 00A51479
00A51472    C685 B0E8FFFF 0>MOV BYTE PTR SS:[EBP-1750],1

记下Magic JMP的地址00A5139E。

CRTL+F12重新载入程序,F9,确定,SHIFT+F9,程序来到:

780109B3    F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]=====>程序停在此处。删除硬件断点。
780109B5    FF2495 C80A0178 JMP DWORD PTR DS:[EDX*4+78010AC8]
780109BC    8BC7            MOV EAX,EDI
780109BE    BA 03000000     MOV EDX,3
780109C3    83E9 04         SUB ECX,4
780109C6    72 0C           JB SHORT MSVCRT.780109D4
780109C8    83E0 03         AND EAX,3
780109CB    03C8            ADD ECX,EAX
780109CD    FF2485 E0090178 JMP DWORD PTR DS:[EAX*4+780109E0]
780109D4    FF248D D80A0178 JMP DWORD PTR DS:[ECX*4+78010AD8]
780109DB    FF248D 580A0178 JMP DWORD PTR DS:[ECX*4+78010A58]
780109E2    0000            ADD BYTE PTR DS:[EAX],AL
780109E4    F0:0901         LOCK OR DWORD PTR DS:[ECX],EAX                    ; LOCK prefix
780109E7    78 19           JS SHORT MSVCRT.78010A02
780109E9    0A01            OR AL,BYTE PTR DS:[ECX]
780109EB    78 3C           JS SHORT MSVCRT.78010A29
780109ED    0A01            OR AL,BYTE PTR DS:[ECX]
780109EF    78 23           JS SHORT MSVCRT.78010A14
780109F1    D18A 0688078A   ROR DWORD PTR DS:[EDX+8A078806],1
780109F7    46              INC ESI
780109F8    0188 47018A46   ADD DWORD PTR DS:[EAX+468A0147],ECX
780109FE    02C1            ADD AL,CL
78010A00  - E9 02884702     JMP 7A489207
78010A05    83C6 03         ADD ESI,3
78010A08    83C7 03         ADD EDI,3
78010A0B    83F9 08         CMP ECX,8
78010A0E  ^ 72 CB           JB SHORT MSVCRT.780109DB
78010A10    F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
78010A12    FF2495 C80A0178 JMP DWORD PTR DS:[EDX*4+78010AC8]
78010A19    23D1            AND EDX,ECX
78010A1B    8A06            MOV AL,BYTE PTR DS:[ESI]
78010A1D    8807            MOV BYTE PTR DS:[EDI],AL
78010A1F    8A46 01         MOV AL,BYTE PTR DS:[ESI+1]

CTRL+F9执行到返回,再F7,来到:

00A5079A    83C4 0C         ADD ESP,0C=====>返回到这里。用F8走。
00A5079D    8D85 D4E9FFFF   LEA EAX,DWORD PTR SS:[EBP-162C]
00A507A3    50              PUSH EAX
00A507A4    FFB5 D4E9FFFF   PUSH DWORD PTR SS:[EBP-162C]
00A507AA    FFB5 DCE9FFFF   PUSH DWORD PTR SS:[EBP-1624]
00A507B0    8B85 1CEBFFFF   MOV EAX,DWORD PTR SS:[EBP-14E4]
00A507B6    0385 D8E9FFFF   ADD EAX,DWORD PTR SS:[EBP-1628]
00A507BC    50              PUSH EAX
00A507BD    FF15 3481A500   CALL DWORD PTR DS:[A58134]                        ; KERNEL32.VirtualProtect
00A507C3    8B85 E0E9FFFF   MOV EAX,DWORD PTR SS:[EBP-1620]
00A507C9    8985 0CD4FFFF   MOV DWORD PTR SS:[EBP-2BF4],EAX
00A507CF    FFB5 0CD4FFFF   PUSH DWORD PTR SS:[EBP-2BF4]
00A507D5    E8 146F0000     CALL 00A576EE                                     ; JMP to MSVCRT.??3@YAXPAX@Z
00A507DA    59              POP ECX
00A507DB  ^ E9 A5FAFFFF     JMP 00A50285
00A507E0    8325 A055A600 0>AND DWORD PTR DS:[A655A0],0
00A507E7    83BD 78ECFFFF 0>CMP DWORD PTR SS:[EBP-1388],0
00A507EE    74 33           JE SHORT 00A50823
00A507F0    8D85 B0E9FFFF   LEA EAX,DWORD PTR SS:[EBP-1650]
00A507F6    50              PUSH EAX
00A507F7    6A 20           PUSH 20
00A507F9    FFB5 78ECFFFF   PUSH DWORD PTR SS:[EBP-1388]
00A507FF    FF35 3C57A600   PUSH DWORD PTR DS:[A6573C]
00A50805    FF15 3481A500   CALL DWORD PTR DS:[A58134]                        ; KERNEL32.VirtualProtect
00A5080B    8B85 10EBFFFF   MOV EAX,DWORD PTR SS:[EBP-14F0]
00A50811    8985 08D4FFFF   MOV DWORD PTR SS:[EBP-2BF8],EAX
00A50817    FFB5 08D4FFFF   PUSH DWORD PTR SS:[EBP-2BF8]
00A5081D    E8 CC6E0000     CALL 00A576EE                                     ; JMP to MSVCRT.??3@YAXPAX@Z
00A50822    59              POP ECX
00A50823    66:C785 FCEAFFF>MOV WORD PTR SS:[EBP-1504],4675
00A5082C    66:C785 64ECFFF>MOV WORD PTR SS:[EBP-139C],0B5F3
00A50835    C745 FC 0100000>MOV DWORD PTR SS:[EBP-4],1
00A5083C    B9 00000000     MOV ECX,0
00A50841    66:8CC9         MOV CX,CS
00A50844    32C9            XOR CL,CL
00A50846    E3 64           JECXZ SHORT 00A508AC
00A50848    B4 43           MOV AH,43
00A5084A    CD 68           INT 68

然后用F8走,一直来到:

00A512D3    83BD BCE8FFFF 0>CMP DWORD PTR SS:[EBP-1744],0
00A512DA    75 58           JNZ SHORT 00A51334
00A512DC    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
00A512DF    8B00            MOV EAX,DWORD PTR DS:[EAX]
00A512E1    C700 03000000   MOV DWORD PTR DS:[EAX],3
00A512E7    0FBE85 A4E7FFFF MOVSX EAX,BYTE PTR SS:[EBP-185C]
00A512EE    85C0            TEST EAX,EAX
00A512F0    74 0E           JE SHORT 00A51300
00A512F2    8D85 A4E7FFFF   LEA EAX,DWORD PTR SS:[EBP-185C]
00A512F8    8985 CCD1FFFF   MOV DWORD PTR SS:[EBP-2E34],EAX
00A512FE    EB 0C           JMP SHORT 00A5130C
00A51300    8B85 A0E7FFFF   MOV EAX,DWORD PTR SS:[EBP-1860]
00A51306    8985 CCD1FFFF   MOV DWORD PTR SS:[EBP-2E34],EAX
00A5130C    FF15 D480A500   CALL DWORD PTR DS:[A580D4]                        ; KERNEL32.GetLastError
00A51312    50              PUSH EAX
00A51313    FFB5 CCD1FFFF   PUSH DWORD PTR SS:[EBP-2E34]
00A51319    68 34E5A500     PUSH 0A5E534                                      ; ASCII "File "%s", error %d"
00A5131E    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
00A51321    FF70 04         PUSH DWORD PTR DS:[EAX+4]
00A51324    FF15 C482A500   CALL DWORD PTR DS:[A582C4]                        ; MSVCRT.sprintf
00A5132A    83C4 10         ADD ESP,10
00A5132D    33C0            XOR EAX,EAX
00A5132F    E9 74140000     JMP 00A527A8
00A51334    FFB5 BCE8FFFF   PUSH DWORD PTR SS:[EBP-1744]
00A5133A    E8 0664FEFF     CALL 00A37745
00A5133F    59              POP ECX
00A51340    83A5 B8E8FFFF 0>AND DWORD PTR SS:[EBP-1748],0
00A51347    6A 00           PUSH 0
00A51349    FF15 C480A500   CALL DWORD PTR DS:[A580C4]                        ; KERNEL32.GetModuleHandleA
00A5134F    3985 BCE8FFFF   CMP DWORD PTR SS:[EBP-1744],EAX
00A51355    75 0F           JNZ SHORT 00A51366
00A51357    C785 B8E8FFFF 3>MOV DWORD PTR SS:[EBP-1748],0A5C530
00A51361    E9 C4000000     JMP 00A5142A
00A51366    83A5 94E6FFFF 0>AND DWORD PTR SS:[EBP-196C],0
00A5136D    C785 90E6FFFF 4>MOV DWORD PTR SS:[EBP-1970],0A5CB48
00A51377    EB 1C           JMP SHORT 00A51395
00A51379    8B85 90E6FFFF   MOV EAX,DWORD PTR SS:[EBP-1970]
00A5137F    83C0 0C         ADD EAX,0C
00A51382    8985 90E6FFFF   MOV DWORD PTR SS:[EBP-1970],EAX
00A51388    8B85 94E6FFFF   MOV EAX,DWORD PTR SS:[EBP-196C]
00A5138E    40              INC EAX
00A5138F    8985 94E6FFFF   MOV DWORD PTR SS:[EBP-196C],EAX
00A51395    8B85 90E6FFFF   MOV EAX,DWORD PTR SS:[EBP-1970]
00A5139B    8338 00         CMP DWORD PTR DS:[EAX],0
00A5139E    0F84 86000000   JE 00A5142A=====>在此下内存访问断点!
00A513A4    8B85 90E6FFFF   MOV EAX,DWORD PTR SS:[EBP-1970]
00A513AA    8B40 08         MOV EAX,DWORD PTR DS:[EAX+8]
00A513AD    83E0 01         AND EAX,1
00A513B0    85C0            TEST EAX,EAX
00A513B2    74 25           JE SHORT 00A513D9
00A513B4    A1 9455A600     MOV EAX,DWORD PTR DS:[A65594]
00A513B9    8B0D 9455A600   MOV ECX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A513BF    8B40 58         MOV EAX,DWORD PTR DS:[EAX+58]
00A513C2    3341 6C         XOR EAX,DWORD PTR DS:[ECX+6C]
00A513C5    8B0D 9455A600   MOV ECX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A513CB    3341 70         XOR EAX,DWORD PTR DS:[ECX+70]
00A513CE    25 80000000     AND EAX,80
00A513D3    85C0            TEST EAX,EAX
00A513D5    74 02           JE SHORT 00A513D9
00A513D7  ^ EB A0           JMP SHORT 00A51379
00A513D9    8B85 94E6FFFF   MOV EAX,DWORD PTR SS:[EBP-196C]
00A513DF    8B0D E011A600   MOV ECX,DWORD PTR DS:[A611E0]
00A513E5    8B15 9455A600   MOV EDX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A513EB    8B0481          MOV EAX,DWORD PTR DS:[ECX+EAX*4]
00A513EE    3342 54         XOR EAX,DWORD PTR DS:[EDX+54]
00A513F1    8B0D 9455A600   MOV ECX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A513F7    3341 70         XOR EAX,DWORD PTR DS:[ECX+70]
00A513FA    8B0D 9455A600   MOV ECX,DWORD PTR DS:[A65594]                     ; NOTEPAD.0044D260
00A51400    3341 24         XOR EAX,DWORD PTR DS:[ECX+24]

F9运行,每次程序停在00A5139E时修改寄存器跳转标志Z为1,让其跳转。当程序停在别处时,再ALT+M打开内存镜像,在00401000行下内存访问断点,然后F9,程序直接停在入口处:

004010CC    55              PUSH EBP=====>断在此处!
004010CD    8BEC            MOV EBP,ESP
004010CF    83EC 44         SUB ESP,44
004010D2    56              PUSH ESI
004010D3    FF15 E4634000   CALL DWORD PTR DS:[4063E4]                        ; KERNEL32.GetCommandLineA
004010D9    8BF0            MOV ESI,EAX
004010DB    8A00            MOV AL,BYTE PTR DS:[EAX]
004010DD    3C 22           CMP AL,22
004010DF    75 1B           JNZ SHORT NOTEPAD.004010FC
004010E1    56              PUSH ESI
004010E2    FF15 F4644000   CALL DWORD PTR DS:[4064F4]                        ; USER32.CharNextA
004010E8    8BF0            MOV ESI,EAX
004010EA    8A00            MOV AL,BYTE PTR DS:[EAX]
004010EC    84C0            TEST AL,AL
004010EE    74 04           JE SHORT NOTEPAD.004010F4
004010F0    3C 22           CMP AL,22
004010F2  ^ 75 ED           JNZ SHORT NOTEPAD.004010E1
004010F4    803E 22         CMP BYTE PTR DS:[ESI],22
004010F7    75 15           JNZ SHORT NOTEPAD.0040110E
004010F9    46              INC ESI
004010FA    EB 12           JMP SHORT NOTEPAD.0040110E
004010FC    3C 20           CMP AL,20

运行ImprotREC修复,填入入口10CC,自动搜索,再把无效指针剪去,最后修复,OK!

                  csjwaman[DFCG]于2004年3月9日

--------------------------------------------------------------------------------
【破解总结】

无。
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
2004-8-5 11:28
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
18
序 号:266031
标 题:用Armadillo标准加壳的程序的脱壳和引入表修复方案---OLLYDBG (8千字)
发信人:jwh51
时 间:2003-6-14 11:55:55
阅读次数:652
详细信息:

用过ARMADILLO的人都知道,用它加壳有两种方式,一是使用COPYMEMII,一是标准加壳.用COPYMEMII的一般可用DILLODUMP脱(当然也有时脱不了),而用标准加壳用DILLODUMP是脱不了的,这是DILLODUMP中的说明,我们来看看:
NOTE: This only really works on programs that are at least protected to some extent.
For example, it will not work on "Standard Protection" aramadillo files, which isn't
a big deal, because for those you do not need to have any "advanced" tools to dump. I plan
on released a "lite" version to support those files soon..
本人E文很菜,只能了解大意,是说标准加壳的脱壳比较简单,不需用工具.但是对我等菜来说,还是要用工具的好,不过既然现在还没有,还是手脱吧.
脱壳目标:SoundEdit pro v1.30.634,5月29日更新.
下载:
http://www.rmbsoft.com/getit.asp?pid=6&server=http://www.winsoft98.com/programs/sep13.exe
加壳程序:Armadillo v3.00a
工具:OLLYDBG,LOADPE,importREC
SoundEdit是一个声音编辑软件(国外的),采用了ARMADILLO的KEY加密,启动要你输入KEY,否则要等N秒才能让你启动,还有30天试用期,所以,如果脱了壳,上述现象都将没有了.现在开始脱壳历程.!!
第一步,DUMP出程序:
用OLLYDBG载入程序.在调试选项中忽略所有异常,这样可以少按SHIFT+F9
BP VirtualProtect,F9运行,这时会有异常,用SHIFT+F9过程序会断下来,这时你不停按F9,一般在第5次会出现注册框,OK后再次中断,这时你要注意堆?开始记下F9的次数了.我这第20下时在堆?出现如下信息:
0012F214  7342F406  /CALL to VirtualProtect from MSVBVM60.7342F400
说明程序,已经运行了.(VB是先运行MSVBVM60.DLL的,在其中也用调用VirtualProtect,如果是DELPHI等程序,可一直F9到程序运行为止)
现在重新载入程序,到出现这个信息的前一次中断停下来,然后按几次CTRL+F9到程序中(也就是地址较低的地方,一般都是004*****,005*****,本程序在这:
004DA060    83C4 04        ADD    ESP, 4
004DA063    8945 FC        MOV    DWORD PTR SS:[EBP-4], EAX
004DA066    837D B8 00      CMP    DWORD PTR SS:[EBP-48], 0
004DA06A    74 0A          JE      SHORT SoundEdi.004DA076
004DA06C    8B45 B8        MOV    EAX, DWORD PTR SS:[EBP-48]
004DA06F    50              PUSH    EAX
004DA070    FF15 E8615000  CALL    DWORD PTR DS:[<&USER32.DestroyWi>; USER32.DestroyWindow
004DA076    8B45 FC        MOV    EAX, DWORD PTR SS:[EBP-4]
004DA079    8BE5            MOV    ESP, EBP
004DA07B    5D              POP    EBP
004DA07C    C3              RETN
这时小心地用F8,因为有一堆的JMP,JNZ,JO等,不过也用不了多久的,大概20多次就可来到这:
004DB483    61              POPAD
004DB484    6A 00          PUSH    0
004DB486    E8 6E000000    CALL    SoundEdi.004DB4F9
004DB48B    83C4 04        ADD    ESP, 4
004DB48E    6A 00          PUSH    0
004DB490    E8 46830000    CALL    SoundEdi.004E37DB
004DB495    83C4 04        ADD    ESP, 4
004DB498    837D E4 01      CMP    DWORD PTR SS:[EBP-1C], 1
004DB49C    75 11          JNZ    SHORT SoundEdi.004DB4AF
004DB49E    68 E8965000    PUSH    SoundEdi.005096E8
004DB4A3    FF15 0C975000  CALL    DWORD PTR DS:[50970C]    ,这个CALL用F7跟进
004DB4A9    83C4 04        ADD    ESP, 4
004DB4AC    8945 E4        MOV    DWORD PTR SS:[EBP-1C], EAX
004DB4AF    68 0C9E4D00    PUSH    SoundEdi.004D9E0C
在4db4a3这个CALL用f7跟进,然后继续F8,几次后就来到这:
00D0B5E0  /75 29          JNZ    SHORT 00D0B60B
00D0B5E2  |E8 A05AFFFF    CALL    00D01087
00D0B5E7  |FF76 04        PUSH    DWORD PTR DS:[ESI+4]
00D0B5EA  |8BF8            MOV    EDI, EAX
00D0B5EC  |A1 CCEED100    MOV    EAX, DWORD PTR DS:[D1EECC]
00D0B5F1  |FF76 08        PUSH    DWORD PTR DS:[ESI+8]
00D0B5F4  |8B48 70        MOV    ECX, DWORD PTR DS:[EAX+70]
00D0B5F7  |3348 50        XOR    ECX, DWORD PTR DS:[EAX+50]
00D0B5FA  |6A 00          PUSH    0
00D0B5FC  |3348 34        XOR    ECX, DWORD PTR DS:[EAX+34]
00D0B5FF  |03F9            ADD    EDI, ECX
00D0B601  |E8 815AFFFF    CALL    00D01087
00D0B606  |50              PUSH    EAX
00D0B607  |FFD7            CALL    EDI                              ; SoundEdi.004059B0
看到最后这个CALL EDI吗,004059B0就是程序的OEP了,我们F7跟进:
00405996  - FF25 3C114000  JMP    DWORD PTR DS:[40113C]
0040599C  - FF25 8C104000  JMP    DWORD PTR DS:[40108C]
004059A2  - FF25 B0104000  JMP    DWORD PTR DS:[4010B0]
004059A8  - FF25 E8114000  JMP    DWORD PTR DS:[4011E8]
004059AE    0000            ADD    BYTE PTR DS:[EAX], AL
004059B0    68 787D4000    PUSH    SoundEdi.00407D78    ,这是OEP了,
004059B5    E8 EEFFFFFF    CALL    SoundEdi.004059A8
呵,典型的VB代码.拿出LOADPE,快快DUMP吧.我们把DUMP的程序保存为DUMPED.EXE
第二步,引入表的修复
以前总以为它的修复很难,但实际上只要修改程序流程,完全可得到正确的引入表的.
1.可先用importREC试试,有一个指针无效,如果CUT程序退出时会出错,所以要修复它.通过它我们可看到iat的rva为1000,错误指针为1030,(如果很多指针无效,只要记住一个无效的RVA就可以了)
2.重新载入程序,BP VirtualProtect,断下后f9,注意堆?的变化,当出现如下信息时要注意了:
0012DB28  00D0887E  /CALL to VirtualProtect from 00D08878
0012DB2C  00401000  |Address = SoundEdi.00401000
0012DB30  000CB000  |Size = CB000 (831488.)
0012DB34  00000004  |NewProtect = PAGE_READWRITE
0012DB38  0012F034  \pOldProtect = 0012F034
它将往401000也就是IAT所在的地方写入信息:这是再按一下F9,又停下来,D 401000,我们可看到,IAT所在的位置已经写入了东西,还不是dll的地址,还记得那个无效指针的地址吗:401030,我们清掉断点,然后在在内存定位到401030处,"右键-->breakpoint-->hardware on write-->dword",然后按F9运行,程序停了下来:
00D0942F    8B85 5CFBFFFF  MOV    EAX, DWORD PTR SS:[EBP-4A4]
00D09435    8B8D 48F9FFFF  MOV    ECX, DWORD PTR SS:[EBP-6B8]
00D0943B    8908            MOV    DWORD PTR DS:[EAX], ECX
00D0943D    8B85 5CFBFFFF  MOV    EAX, DWORD PTR SS:[EBP-4A4]      ; 停在这
00D09443    83C0 04        ADD    EAX, 4
00D09446    8985 5CFBFFFF  MOV    DWORD PTR SS:[EBP-4A4], EAX
00D0944C  ^ E9 78FEFFFF    JMP    00D092C9
看到上述二行:MOV ECX,DWORD PRT [EBP-6B8],我们再往上找几行可看到这个语句:
00D093E3    E8 F8C0FEFF    CALL    00CF54E0
00D093E8    8985 48F9FFFF  MOV    DWORD PTR SS:[EBP-6B8], EAX
00D093EE    83BD 48F9FFFF 0>CMP    DWORD PTR SS:[EBP-6B8], 0
00D093F5    75 38          JNZ    SHORT 00D0942F
在第二行也有个[EBP-6B8],注意前面这个CALL,我们去看一看
00CF54E0    55              PUSH    EBP
00CF54E1    8BEC            MOV    EBP, ESP
00CF54E3    53              PUSH    EBX
00CF54E4    56              PUSH    ESI
00CF54E5    57              PUSH    EDI
00CF54E6    33FF            XOR    EDI, EDI
00CF54E8    33DB            XOR    EBX, EBX
00CF54EA    66:F745 0E FFFF TEST    WORD PTR SS:[EBP+E], 0FFFF
00CF54F0    75 03          JNZ    SHORT 00CF54F5
00CF54F2    8B5D 0C        MOV    EBX, DWORD PTR SS:[EBP+C]
00CF54F5    57              PUSH    EDI
00CF54F6    FF15 A430D100  CALL    DWORD PTR DS:[D130A4]            ; kernel32.GetModuleHandleA
00CF54FC    3945 08        CMP    DWORD PTR SS:[EBP+8], EAX
00CF54FF    75 07          JNZ    SHORT 00CF5508
00CF5501    BE C053D100    MOV    ESI, 0D153C0
00CF5506    EB 60          JMP    SHORT 00CF5568
00CF5508    393D 9859D100  CMP    DWORD PTR DS:[D15998], EDI
00CF550E    B9 9859D100    MOV    ECX, 0D15998
00CF5513    74 3C          JE      SHORT 00CF5551
00CF5515    8B35 B8B1D100  MOV    ESI, DWORD PTR DS:[D1B1B8]
00CF551B    A1 CCEED100    MOV    EAX, DWORD PTR DS:[D1EECC]
00CF5520    F641 08 01      TEST    BYTE PTR DS:[ECX+8], 1
00CF5524    74 0E          JE      SHORT 00CF5534
00CF5526    8B50 70        MOV    EDX, DWORD PTR DS:[EAX+70]
00CF5529    3350 60        XOR    EDX, DWORD PTR DS:[EAX+60]
00CF552C    3350 3C        XOR    EDX, DWORD PTR DS:[EAX+3C]
00CF552F    F6C2 80        TEST    DL, 80
00CF5532    75 13          JNZ    SHORT 00CF5547
00CF5534    8B50 70        MOV    EDX, DWORD PTR DS:[EAX+70]
00CF5537    3350 64        XOR    EDX, DWORD PTR DS:[EAX+64]
00CF553A    3350 58        XOR    EDX, DWORD PTR DS:[EAX+58]
00CF553D    3350 20        XOR    EDX, DWORD PTR DS:[EAX+20]
00CF5540    3316            XOR    EDX, DWORD PTR DS:[ESI]
00CF5542    3955 08        CMP    DWORD PTR SS:[EBP+8], EDX
00CF5545    74 1E          JE      SHORT 00CF5565
00CF5547    83C1 0C        ADD    ECX, 0C
00CF554A    83C6 04        ADD    ESI, 4
00CF554D    3939            CMP    DWORD PTR DS:[ECX], EDI
00CF554F  ^ 75 CF          JNZ    SHORT 00CF5520
00CF5551    FF75 0C        PUSH    DWORD PTR SS:[EBP+C]
这里面有几个跳转,其中最后一个CF554F是往上跳的.我们看一个就可发现:
00CF5513    74 3C          JE      SHORT 00CF5551,这个跳正好可跳出这个循环.只要改这个跳,就不会破坏引入表了.
再次重新载入,BP VirtualProtect,出现注册框后OK,程序再断下来,这时清除断点(包括硬件断点),CTRL+F9回程序领空,把CF5513的74 3c改成eb 3c,按F9运行,程序运行后打开importREC,选中程序,入口填入59b0,-->IAT自动搜索-->获得输入信息",如果还有无效的大可放心的cut,因为它们本来就不是有用指针了(也可能是importREC把IAT的大小判断错了),.然后修复脱壳后的文件.OK,大功告成.
测试了下脱壳后的程序,运行正常,那个烦人的注册框没有,时间限制也注册了,别说30天,就是30年都没问题.
--------------------------------------------------------------------------------
2004-8-5 11:29
0
雪    币: 182
活跃值: (221)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
勤学好问
14楼的兄弟似乎只是好问:)
和我一样潜水学习学习吧:D
2004-8-5 11:30
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
20
不知你满意了吗?arm的文章都太长,很多贴不上.

就是无法确信是不是这里??
===>dump fix 运行不就知道了?何必多此一问?

如果都不愿意多说,
看来我要戒版几周,潜心钻研了!
真的要有什么心得,也不会发表的!
===>你的权力

我是虚心请教的!~~
斑竹,如果你说这东西出现了几百年,请拿出证明
的东西来呀!
===>那么多文章贴出来浪费论坛资源, 选了几个短的贴上

ff这个东西对你们来说是简单,可是回答一下费力吗?
===>太多的的现成文章,我还有必要(或者说有理由)再饶舌吗

只知道卖书赚钱,现在学crack没赶上时候啊!
===>难道要kanxue倾家荡产支持这个bbs?到处都是资料,早些年找都找不到.

以前热心的大虾很多,现在我来这里和不来这里
都一样!
===>你的自由.

我学破解到现在也只有1个月左右,已经破截了2个软件了!
鬼子的和国产的各一个~~~!
===>好

怪不的国内的软件比国外的落后很多啊,固步自封的人太多了!
===>真的?

我去国外的Crack bbs了,这里的某些人太势利眼了!
===>我势利眼,好罢
2004-8-5 11:30
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我认真搜索了论坛的Armadillo关键字,
关于Armadillo的共有73篇,最早的那篇文章
也是2004年的!只有12篇有点参考价值~~~!
斑竹还能提供点线索吗?论坛可以提供的资源
实在有点少啊!

你说几百年前可以找到的资料在哪里那?

1 请脱壳,并给出程序的密码  
2 求助]Armadillo 3.00a - 3.50 -> Silicon Realms Toolworks的壳!  
3 [求助]Armadillo 3.00a - 3.20 -> Silicon Realms Toolworks的壳!  
4 奇迹main Armadillo 3.00a - 3.20 -> Silicon Realms Toolworks的壳!急  
5  或许新一代的脱壳和破解是从外挂中成长起来的  
6 脱Armadillo壳的问题  
7 popo123456 加壳与脱壳 6 151 2004-08-03 21:14
8 Armadillo脱壳求助!  
9 seamon777 加壳与脱壳 0 44 2004-08-02 15:57
10 请教fly老大,关于armadillo的问题  
11 atjack 加壳与脱壳 5 300 2004-08-01 21:27
12 关于Arma的一些总结(个人总结仅适合初学者)  
UltraEdit-32 10.20版脱壳记  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
只有这篇文章有点实质的内容,但并没有写出armd壳的
实际的大小!
2004-8-5 11:35
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
22
最初由 limee 发布
我认真搜索了论坛的Armadillo关键字,
......


我疏忽了,没有注意老论坛没有恢复.希望看雪早日恢复.对于这点对你表示歉意.

以前的文章收录在udv整理的密界脱壳文集中.你可以找一本看看.

看雪精华中也有些.
2004-8-5 11:39
0
雪    币: 218
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
命令行下 bp GetModuleHandleA+5
(看堆栈提示,在这里按Alt+F9返回)
0012C258   00D55331  RETURN to 00D55331 from kernel32.GetModuleHandleA
0012C25C   0012C394  ASCII "kernel32.dll"

返回到这里,可看到 Magic Jump
00D55331    8B0D 60D8D700   MOV ECX,DWORD PTR DS:[D7D860]
00D55337    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
00D5533A    A1 60D8D700     MOV EAX,DWORD PTR DS:[D7D860]
00D5533F    393C06          CMP DWORD PTR DS:[ESI+EAX],EDI
00D55342    75 16           JNZ SHORT 00D5535A
00D55344    8D85 B4FEFFFF   LEA EAX,DWORD PTR SS:[EBP-14C]
00D5534A    50              PUSH EAX
00D5534B    FF15 B850D700   CALL DWORD PTR DS:[D750B8]               ; kernel32.LoadLibraryA
00D55351    8B0D 60D8D700   MOV ECX,DWORD PTR DS:[D7D860]
00D55357    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
00D5535A    A1 60D8D700     MOV EAX,DWORD PTR DS:[D7D860]
00D5535F    393C06          CMP DWORD PTR DS:[ESI+EAX],EDI
00D55362    0F84 AD000000   JE 00D55415 (Magic Jump)....把它改成JMP 00D55415
00D55368    33C9            XOR ECX,ECX
00D5536A    8B03            MOV EAX,DWORD PTR DS:[EBX]
00D5536C    3938            CMP DWORD PTR DS:[EAX],EDI
00D5536E    74 06           JE SHORT 00D55376
00D55370    41              INC ECX
00D55371    83C0 0C         ADD EAX,0C
00D55374  ^ EB F6           JMP SHORT 00D5536C
00D55376    8BC1            MOV EAX,ECX
00D55378    C1E0 02         SHL EAX,2
00D5537B    50              PUSH EAX
00D5537C    E8 C48E0100     CALL 00D6E245
00D55381    59              POP ECX

跳过後在00401000 下内存访问断点,F9运行,即来到
0040C382    6A 60           PUSH 60 (入口点 在此DUMP程序)
0040C384    68 C0914200     PUSH Crack001.004291C0
0040C389    E8 36130000     CALL Crack001.0040D6C4
0040C38E    BF 94000000     MOV EDI,94
0040C393    8BC7            MOV EAX,EDI
0040C395    E8 46FFFFFF     CALL Crack001.0040C2E0
0040C39A    8965 E8         MOV DWORD PTR SS:[EBP-18],ESP
0040C39D    8BF4            MOV ESI,ESP
0040C39F    893E            MOV DWORD PTR DS:[ESI],EDI
0040C3A1    56              PUSH ESI
0040C3A2    FF15 88624200   CALL DWORD PTR DS:[426288]               ; kernel32.GetVersionExA

后面就不写了,应该都会吧!!!!
找密就更容易了,直接在寄存器就看得到了!!!
2004-8-7 00:55
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
24
最初由 limee 发布
就是无法确信是不是这里??如果都不愿意多说,
看来我要戒版几周,潜心钻研了!


匆在浮沙筑高台,

戒版几周潜心钻研 为何要是最后的手段?
2004-8-7 08:36
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
forgot人民公仆的说:p
安装使用售后服务一条龙的说:D
2004-8-7 08:56
0
游客
登录 | 注册 方可回帖
返回
//