首页
社区
课程
招聘
用Arm3.75加壳的ASProtect V1.31 build 06.14主程序 (2)
2004-10-3 17:18 6654

用Arm3.75加壳的ASProtect V1.31 build 06.14主程序 (2)

2004-10-3 17:18
6654
用Arm3.75加壳的ASProtect V1.31 build 06.14主程序 (2)

【破解作者】 wangli_com

【使用工具】 WinXP、Ollydbg、PEiD、LordPE、ImportREC 1.6F

【官方主页】 http://www.888cp.com/bbs/

【破解平台】 WinXP

【软件名称】 asprotect(v1.31 build 6.14) armadillo cc 版

【下载地址】 http://bbs.pediy.com/showthread.php?s=&threadid=2453

【软件大小】 1.14 MB

【加壳方式】 armadillo cc 版+iat乱序+抽取代码

【破解下载】附件:un-Aspr1.rar 附件:un-Aspr2.rar

【破解声明】 我是一菜青虫,偶得一点心得,愿与大家分享  ! ! !前面这几行模仿小虾,这种格式看起来

             比较舒服! ! !

在(1)中如果先修复cc,再把Region033A0000-033C0000.dmp附加到程序中,就不会出现很大的文件了。其实

修复cc时可以把要改的代码写成二进制文件,用复制加粘贴的方法还是很快的,以下是我用到的文件。
406000~406100  int3地址表
406100~406200  跳转类型表
406200~406300  跳转量表
406300~406400  跳转命令长度表

得到cc地址的代码如下:005154cf:
90 90 90 90 90 90 90 90 90 90 90 90 90 8B 0D F0 8F 4D 00 3E 8D 34 8D 00 10 40 00 BF 00 10 40 00
8B 85 54 EC FF FF F2 AF 74 16 90 90 90 90 89 06 FF 05 F0 8F 4D 00 BF 0E 00 00 00 BE 10 00 00 00
90 90 90 90

1.005154cf:  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 A1 00 40 40 00 3E 8B 04 85 00

10 40 00 85
C0 0F 84 96 03 00 00 8D 95 54 EC FF FF 90 89 02 FF 05 00 40 40 00 90 90 90 90 90 90 90 90 90 90
90 90 90 90

2.005155ef:90 90 8B 95 68 EE FF FF 8B 04 95 88 06 54 00 8B 8D 94 EB FF FF 8B 14 88 3B 95 98 EB FF

FF 0F 85
CE FE FF FF 90

3.00515614: 90 90 A1 04 40 40 00 8D 95 54 EC FF FF 8B 12 3E 89 14 85 00 60 40 00 90 90 B8 0C 40

40 00 33 C9
89 08 89 48 04 89 48 0C 41 89 48 08 89 48 10 C7 40 14 04 00 00 00 C7 40 18 40 00 00 00 C7 40 1C
80 00 00 00 C7 40 20 00 08 00 00 8D 85 9C EB FF FF 8B 0D 0C 40 40 00 3E 8B 14 8D 10 40 40 00 83
F9 01 7F 08 89 90 AC 00 00 00 EB 06 89 90 C0 00 00 00 90 90 90 90 90 90 90 90

4.00515798:  90 90 8B 0D 0C 40 40 00 3E 89 04 8D 10 40 40 00 41 89 0D 0C 40 40 00 83 F9 07 0F 8E

A7 FE FF FF
90 90 60 9C E8 D6 00 00 00 9D 61 90 90 90

5.005157F2:  90 90 A1 04 40 40 00 3E 89 0C 85 00 62 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90

90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90

6.00515871:  90 90 8B 0D 04 40 40 00 88 81 00 63 40 00 90 90 FF 05 04 40 40 00 E9 55 FC FF FF 90

90

7.00515897: 8B 3D 04 40 40 00 81 C7 00 61 40 00 BA 0C 40 40 00 8B 42 04 8B 5A 08 33 D8 74 0F 90

90 C6 07 E3
E9 20 01 00 00 90 90 90 90 90 8B 42 0C 8B 5A 14 33 D8 74 1D 85 C0 74 0C 90 90 C6 07 7B E9 03 01
00 00 90 90 C6 07 7A E9 F9 00 00 00 90 90 90 90 90 8B 5A 18 33 D8 74 61 90 90 8B 5A 10 33 D8 74
1A 85 C0 74 0C 90 90 C6 07 77 E9 D6 00 00 00 90 90 C6 07 76 E9 CC 00 00 00 90 90 8B 5A 1C 33 D8
74 1A 85 C0 74 0C 90 90 C6 07 7F E9 B5 00 00 00 90 90 C6 07 7E E9 AB 00 00 00 90 90 85 C0 74 0C
90 90 C6 07 75 E9 9B 00 00 00 90 90 C6 07 74 E9 91 00 00 00 90 90 90 90 90 8B 5A 1C 33 D8 74 34
90 90 8B 5A 20 33 D8 74 14 85 C0 74 09 90 90 C6 07 7D EB 71 90 90 C6 07 7C EB 6A 90 90 85 C0 74
09 90 90 C6 07 79 EB 5D 90 90 C6 07 78 EB 56 90 90 90 90 90 8B 5A 20 33 D8 74 17 85 C0 74 09 90
90 C6 07 71 EB 3F 90 90 C6 07 70 EB 38 90 90 90 90 90 8B 5A 10 33 D8 74 17 85 C0 74 09 90 90 C6
07 73 EB 21 90 90 C6 07 72 EB 1A 90 90 90 90 90 85 C0 74 0C 90 90 C6 07 EB EB 0A 90 90 90 90 90
C6 07 90 90 90 C3

8.修复cc  004fa000:   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 33 C9 3E 8B 04 8D 00

90 52 00 83 F8 00 74
69 0F B6 91 00 91 52 00 3E 8B 1C 8D 00 92 52 00 0F B6 B9 00 93 52 00 48 41 81 38 CC 55 8B EC 74
D3 80 78 FF CC 74 CD 80 78 01 CC 74 C7 90 83 FF 01 75 09 88 10 FE CB 88 58 01 90 90 83 FF 05 75
11 C6 00 0F 80 C2 10 88 50 01 83 EB 05 89 58 02 90 90 83 FF 04 75 10 80 FA EB 75 0B C6 00 E9 83
EB 04 89 58 01 90 90 EB 8B 90 90 90

(4)找到正确排序的iat
1.使程序把自己当成子进程运行
用OD再一次载入未脱壳的程序Aspr.exe,bp DebugActiveProcess,F9断下。看堆栈窗口:

0012BC8C    00513F28  /CALL 到 DebugActiveProcess 来自 Aspr.00513F22
0012BC90    000005C0  \ProcessId = 5C0<=====子进程句柄
0012BC94    0012FF04

打开另一个OD附加5C0这个子进程。然后ALT+F9返回程序:

0052A000 A>- EB FE                       jmp short Aspr.<ModuleEntryPoint>><====中断在此处,还原

代码
0052A002     0000                        add byte ptr ds:[eax],al
0052A004     0000                        add byte ptr ds:[eax],al
0052A006     5D                          pop ebp

还原0052A000处代码代码,EB FE改为60 E8,接下来就要按照FLY等大虾们的方法了.
使程序把自己当成子进程运行 ,取消以前断点,下断:BP OpenMutexA
77E6074A k>  55                          push ebp    //断在这,看看堆栈
77E6074B     8BEC                        mov ebp,esp
77E6074D     51                          push ecx
77E6074E     51                          push ecx
77E6074F     837D 10 00                  cmp dword ptr ss:[ebp+10],0
77E60753     56                          push esi
77E60754     0F84 EA500200               je kernel32.77E85844

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆  
BP OpenMutexA 时的堆栈:  
0012D778    0050FBBD  /CALL 到 OpenMutexA 来自 Aspr.0050FBB7
0012D77C    001F0001  |Access = 1F0001
0012D780    00000000  |Inheritable = FALSE
0012D784    0012DDB8  \MutexName = "7E8::DAD92F6E24" --->注意0012DDB8
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
Ctrl+G:401000  键入以下代码  

00401000     60                  pushad  
00401001     9C                  pushfd  
00401002     68 B4FB1200         push 12DDB8 ★ 堆栈里看到的值  
00401007     33C0                xor eax,eax  
00401009     50                  push eax  
0040100A     50                  push eax  
0040100B     E8 B4B2A577         call kernel32.CreateMutexA  
00401010     9D                  popfd  
00401011     61                  popad  
00401012     E9 33F7A577         jmp kernel32.OpenMutexA

在401000处新建起源,F9运行,再次中断在OpenMutexA处

2.Magic Jump,避开IAT加密
取消以前断点,下断:BP GetModuleHandleA+5,在这里中断十几次,中间会出现无法处理异常的对话框,用

SHIFT+F9跳过就行了;Alt+F9返回程序。判断返回程序的时机:
☆  ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆  
注意看BP GetModuleHandleA 时的堆栈变化:

00128CE4    00D404D2  返回到 00D404D2 来自 kernel32.GetModuleHandleA
00128CE8    00D52D40  ASCII "kernel32.dll"
00128CEC    00D53F30  ASCII "VirtualAlloc"

00128CE4    00D404EF  返回到 00D404EF 来自 kernel32.GetModuleHandleA
00128CE8    00D52D40  ASCII "kernel32.dll"
00128CEC    00D53F24  ASCII "VirtualFree"

//再F9下去就会出现无法处理异常的对话框 ,SHIFT+F9跳过

00128A5C    00D29900  返回到 00D29900 来自 kernel32.GetModuleHandleA
00128A60    00128B98  ASCII "kernel32.dll"
00128A64    00000000
到这里时就用alt+F9返回主程序:

00D29900     8B0D 0881D500               mov ecx,dword ptr ds:[D58108]
00D29906     89040E                      mov dword ptr ds:[esi+ecx],eax
00D29909     A1 0881D500                 mov eax,dword ptr ds:[D58108]
00D2990E     393C06                      cmp dword ptr ds:[esi+eax],edi
00D29911     75 16                       jnz short 00D29929
00D29913     8D85 B4FEFFFF               lea eax,dword ptr ss:[ebp-14C]
00D29919     50                          push eax
00D2991A     FF15 D4D0D400               call dword ptr ds:[D4D0D4]                         ;

kernel32.LoadLibraryA
00D29920     8B0D 0881D500               mov ecx,dword ptr ds:[D58108]
00D29926     89040E                      mov dword ptr ds:[esi+ecx],eax
00D29929     A1 0881D500                 mov eax,dword ptr ds:[D58108]
00D2992E     393C06                      cmp dword ptr ds:[esi+eax],edi
00D29931     0F84 AD000000               je 00D299E4--->//这里就是我们常说的Magic Jump,把它改为

JMP 00D299E4,代码改为90e9AD000000

00D29937     33C9                        xor ecx,ecx
00D29939     8B03                        mov eax,dword ptr ds:[ebx]

再f9运行,观察堆栈变化:
☆  ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
当出现以下代码时:
00128A5C    00D29900  返回到 00D29900 来自 kernel32.GetModuleHandleA
00128A60    00128B98  ASCII "advapi32.dll"

00128CE8    00D45306  返回到 00D45306 来自 kernel32.GetModuleHandleA
00128CEC    00000000
到这里时就用alt+F9返回主程序:
00D45306     3985 B4D4FFFF               cmp dword ptr ss:[ebp-2B4C],eax                    ;

Aspr.00400000
00D4530C     75 0F                       jnz short 00D4531D
00D4530E     C785 B0D4FFFF 301BD500      mov dword ptr ss:[ebp-2B50],0D51B30
00D45318     E9 C4000000                 jmp 00D453E1

向下一直到这:
00D45803     8B85 18D8FFFF               mov eax,dword ptr ss:[ebp-27E8]
00D45809     3B85 68D8FFFF               cmp eax,dword ptr ss:[ebp-2798]
00D4580F     73 1D                       jnb short 00D4582E
00D45811     8B85 18D8FFFF               mov eax,dword ptr ss:[ebp-27E8]->在这设断得到iat的位置

003d7940
00D45817     8B8D 7CD2FFFF               mov ecx,dword ptr ss:[ebp-2D84]
00D4581D     8908                        mov dword ptr ds:[eax],ecx
00D4581F     8B85 18D8FFFF               mov eax,dword ptr ss:[ebp-27E8]
00D45825     83C0 04                     add eax,4
00D45828     8985 18D8FFFF               mov dword ptr ss:[ebp-27E8],eax
00D4582E   ^ E9 E8FCFFFF                 jmp 00D4551B

在00D45811处设断得到iat的位置,我的是3e7940是iat的首地址,看到很多00d2????之类的就是iat的位置,计

算一下得之VA=3e7940,SIZA=990,通过对3e7940下硬件写入断点,第一次中断时得到完整得 iat,第二次就能

找到壳是怎样把iat给搅和乱了得代码,为了讲解方便,我直接在加密iat得地方设断。取消原来得断点。

00D459A2    /EB 0D                       jmp short 00D459B1--------》在这地方设断,f9运行------》

dump出来的代码1
00D459A4    |8B85 64D1FFFF               mov eax,dword ptr ss:[ebp-2E9C]
00D459AA    |40                          inc eax
00D459AB    |8985 64D1FFFF               mov dword ptr ss:[ebp-2E9C],eax
00D459B1    \8B85 64D1FFFF               mov eax,dword ptr ss:[ebp-2E9C]
00D459B7     3B85 6CD1FFFF               cmp eax,dword ptr ss:[ebp-2E94]--》1注意加密的数目020B
00D459BD     0F83 9A000000               jnb 00D45A5D
00D459C3     68 0D5EDF01                 push 1DF5E0D
00D459C8     FFB5 68D1FFFF               push dword ptr ss:[ebp-2E98]----》2注意[ebp-2E98]的值
00D459CE     8D8D 68D1FFFF               lea ecx,dword ptr ss:[ebp-2E98]
00D459D4     E8 98B6FDFF                 call 00D21071----》f7进入
00D459D9     40                          inc eax
00D459DA     33D2                        xor edx,edx
00D459DC     B9 00E1F505                 mov ecx,5F5E100
00D459E1     F7F1                        div ecx
00D459E3     8995 68D1FFFF               mov dword ptr ss:[ebp-2E98],edx
00D459E9     8B85 68D1FFFF               mov eax,dword ptr ss:[ebp-2E98]
00D459EF     33D2                        xor edx,edx
00D459F1     B9 10270000                 mov ecx,2710
00D459F6     F7F1                        div ecx
00D459F8     0FAF85 48D8FFFF             imul eax,dword ptr ss:[ebp-27B8]----》3注意数目 264
00D459FF     33D2                        xor edx,edx
00D45A01     B9 10270000                 mov ecx,2710
00D45A06     F7F1                        div ecx
00D45A08     8985 5CD1FFFF               mov dword ptr ss:[ebp-2EA4],eax
00D45A0E     8B85 ECD6FFFF               mov eax,dword ptr ss:[ebp-2914]
00D45A14     8B00                        mov eax,dword ptr ds:[eax]
00D45A16     8985 60D1FFFF               mov dword ptr ss:[ebp-2EA0],eax
00D45A1C     8B85 5CD1FFFF               mov eax,dword ptr ss:[ebp-2EA4]
00D45A22     8D0485 04000000             lea eax,dword ptr ds:[eax*4+4]
00D45A29     50                          push eax
00D45A2A     8B85 ECD6FFFF               mov eax,dword ptr ss:[ebp-2914]
00D45A30     83C0 04                     add eax,4
00D45A33     50                          push eax
00D45A34     FFB5 ECD6FFFF               push dword ptr ss:[ebp-2914]
00D45A3A     FF15 ECD2D400               call dword ptr ds:[D4D2EC]                         ;

msvcrt.memmove
00D45A40     83C4 0C                     add esp,0C
00D45A43     8B85 5CD1FFFF               mov eax,dword ptr ss:[ebp-2EA4]
00D45A49     8B8D ECD6FFFF               mov ecx,dword ptr ss:[ebp-2914]-->4注意iat首地址
00D45A4F     8B95 60D1FFFF               mov edx,dword ptr ss:[ebp-2EA0]--》首地址的函数
00D45A55     891481                      mov dword ptr ds:[ecx+eax*4],edx
00D45A58   ^ E9 47FFFFFF                 jmp 00D459A4

在00D459A2设断,f9运行,断下,当所有IAT处理完毕后,就可以用ImportREC.exe得到所有正确IAT了。

RVA=3e7940-400000=FFFE7940,SIZA=990,然后即可点get imports. ,CUT掉无效函数,在按save tree把输入

表存成txt文件。再f8单步走,注意我以上提到的四个值,在已壳脱壳时有用。把00D459A4到00D45A58,之间的

代码用二进制复制的方法复制下来备用。

00D459D4     E8 98B6FDFF                 call 00D21071---------》f7进入

00D21071     55                          push ebp------》dump出来的代码2
00D21072     8BEC                        mov ebp,esp
00D21074     51                          push ecx
00D21075     8B45 08                     mov eax,dword ptr ss:[ebp+8]
00D21078     53                          push ebx
00D21079     B9 10270000                 mov ecx,2710
00D2107E     56                          push esi
00D2107F     99                          cdq
00D21080     8BF1                        mov esi,ecx
00D21082     57                          push edi
00D21083     F7FE                        idiv esi
00D21085     8B45 0C                     mov eax,dword ptr ss:[ebp+C]
00D21088     8BF9                        mov edi,ecx
00D2108A     8BD9                        mov ebx,ecx
00D2108C     8955 FC                     mov dword ptr ss:[ebp-4],edx
00D2108F     99                          cdq
00D21090     F7FE                        idiv esi
00D21092     8B45 08                     mov eax,dword ptr ss:[ebp+8]
00D21095     8BF2                        mov esi,edx
00D21097     99                          cdq
00D21098     F7FF                        idiv edi
00D2109A     8BF8                        mov edi,eax
00D2109C     8B45 0C                     mov eax,dword ptr ss:[ebp+C]
00D2109F     99                          cdq
00D210A0     0FAFFE                      imul edi,esi
00D210A3     F7FB                        idiv ebx
00D210A5     0FAF75 FC                   imul esi,dword ptr ss:[ebp-4]
00D210A9     33D2                        xor edx,edx
00D210AB     0FAF45 FC                   imul eax,dword ptr ss:[ebp-4]
00D210AF     03C7                        add eax,edi
00D210B1     5F                          pop edi
00D210B2     F7F1                        div ecx
00D210B4     B9 00E1F505                 mov ecx,5F5E100
00D210B9     8BC2                        mov eax,edx
00D210BB     33D2                        xor edx,edx
00D210BD     69C0 10270000               imul eax,eax,2710
00D210C3     03C6                        add eax,esi
00D210C5     5E                          pop esi
00D210C6     F7F1                        div ecx
00D210C8     5B                          pop ebx
00D210C9     8BC2                        mov eax,edx
00D210CB     C9                          leave
00D210CC     C2 0800                     retn 8

把00D21071到00D210CC,之间的代码也用二进制复制的方法复制下来备用。
(5)修复iat
把dump出来的文件oep改为004d874c,用od加载,如下:
004D874C z>  55                          push ebp
004D874D     8BEC                        mov ebp,esp
004D874F     83C4 F4                     add esp,-0C
004D8752     53                          push ebx
004D8753     B8 4C814D00                 mov eax,zy2.004D814C
004D8758     E8 3BE1F2FF                 call zy2.00406898------》f7进入

00406898     50                          push eax
00406899     6A 00                       push 0
0040689B     E8 F8FEFFFF                 call zy2.00406798------》f7进入
004068A0   - E9 B0C5F902                 jmp zy2.033A2E55

00406798     FF25 60793E00               jmp dword ptr ds:[3E7960]----》这些地址就是iat,但都在

400000以内,我把它修改一下。
0040679E     8BC0                        mov eax,eax
004067A0     FF25 947B3E00               jmp dword ptr ds:[3E7B94]
004067A6     8BC0                        mov eax,eax
004067A8     FF25 E07A3E00               jmp dword ptr ds:[3E7AE0]
004067AE     8BC0                        mov eax,eax
004067B0     FF25 747E3E00               jmp dword ptr ds:[3E7E74]

用winhex打开修复了cc的文件,在401000---4d9000范围内,用查找和替换功能,用FF25FFFF4E00替换

FF25FFFF3E00,中间的ffff是通配符,设通配符为ff。用winhex打开保存下来的iat原始文本文件,用查找和替

换功能,用000E替换FFFD,ok,下一步运行ImportREC 1.6,提取修改过的iat原始文本文件,FixDump。
这中间可能遇到iat的首地址每次运行都不同的问题,多做两遍,或是用复制加粘贴的方法,用ImportREC 1.6
在我们想要得地址处提取iat原始文件。

以壳脱壳,修复iat 用od加载dump文件,如下:
修改前:
004D874C z>  55                          push ebp
004D874D     8BEC                        mov ebp,esp
004D874F     83C4 F4                     add esp,-0C
004D8752     53                          push ebx
004D8753     B8 4C814D00                 mov eax,zy2.004D814C
004D8758     E8 3BE1F2FF                 call zy2.00406898
修改后:
004D874C u>  55                          push ebp
004D874D     8BEC                        mov ebp,esp
004D874F     83C4 F4                     add esp,-0C
004D8752     53                          push ebx
004D8753   - E9 A8290100                 jmp un-Aspr.004EB100
004D8758     E8 3BE1F2FF                 call un-Aspr.00406898

修改004EB100处的代码:
004EB100       90                        nop
004EB101       90                        nop
004EB102       90                        nop
004EB103    .  C785 6CD1FFFF 0B020000    mov dword ptr ss:[ebp-2E94],20B
004EB10D    .  C785 ECD6FFFF 40794E00    mov dword ptr ss:[ebp-2914],<&kernel32.CloseHandle>
004EB117    .  C785 48D8FFFF 64020000    mov dword ptr ss:[ebp-27B8],264
004EB121    .  C785 68D1FFFF 731E4400    mov dword ptr ss:[ebp-2E98],un-Aspr.00441E73
004EB12B    .  EB 21                     jmp short un-Aspr.004EB14E
004EB12D       90                        nop
004EB12E       90                        nop
004EB12F       90                        nop
004EB130       90                        nop
004EB131       90                        nop
004EB132       90                        nop
004EB133       90                        nop
004EB134       90                        nop
004EB135       90                        nop
004EB136       90                        nop
004EB137       90                        nop
004EB138       90                        nop
004EB139       90                        nop
004EB13A       90                        nop
004EB13B       90                        nop
004EB13C       90                        nop
004EB13D       90                        nop
004EB13E       90                        nop
004EB13F       90                        nop
004EB140       90                        nop
004EB141    >  8B85 64D1FFFF             mov eax,dword ptr ss:[ebp-2E9C]------》前面dump出来的代码1开始
004EB147    .  40                        inc eax
004EB148    .  8985 64D1FFFF             mov dword ptr ss:[ebp-2E9C],eax
004EB14E    >  8B85 64D1FFFF             mov eax,dword ptr ss:[ebp-2E9C]
004EB154    .  3B85 6CD1FFFF             cmp eax,dword ptr ss:[ebp-2E94]
004EB15A    .  0F83 9A000000             jnb un-Aspr.004EB1FA
004EB160    .  68 0D5EDF01               push un-Aspr.01DF5E0D
004EB165    .  FFB5 68D1FFFF             push dword ptr ss:[ebp-2E98]
004EB16B    .  8D8D 68D1FFFF             lea ecx,dword ptr ss:[ebp-2E98]
004EB171    .  E8 AD000000               call un-Aspr.004EB223
004EB176    .  40                        inc eax
004EB177    .  33D2                      xor edx,edx
004EB179    .  B9 00E1F505               mov ecx,5F5E100
004EB17E    .  F7F1                      div ecx
004EB180    .  8995 68D1FFFF             mov dword ptr ss:[ebp-2E98],edx
004EB186    .  8B85 68D1FFFF             mov eax,dword ptr ss:[ebp-2E98]
004EB18C    .  33D2                      xor edx,edx
004EB18E    .  B9 10270000               mov ecx,2710
004EB193    .  F7F1                      div ecx
004EB195    .  0FAF85 48D8FFFF           imul eax,dword ptr ss:[ebp-27B8]
004EB19C    .  33D2                      xor edx,edx
004EB19E    .  B9 10270000               mov ecx,2710
004EB1A3    .  F7F1                      div ecx
004EB1A5    .  8985 5CD1FFFF             mov dword ptr ss:[ebp-2EA4],eax
004EB1AB    .  8B85 ECD6FFFF             mov eax,dword ptr ss:[ebp-2914]
004EB1B1    .  8B00                      mov eax,dword ptr ds:[eax]
004EB1B3    .  8985 60D1FFFF             mov dword ptr ss:[ebp-2EA0],eax
004EB1B9    .  8B85 5CD1FFFF             mov eax,dword ptr ss:[ebp-2EA4]
004EB1BF    .  8D0485 04000000           lea eax,dword ptr ds:[eax*4+4]
004EB1C6    .  50                        push eax                                                 ; /n
004EB1C7    .  8B85 ECD6FFFF             mov eax,dword ptr ss:[ebp-2914]                          ; |
004EB1CD    .  83C0 04                   add eax,4                                                ; |
004EB1D0    .  50                        push eax                                                 ; |src
004EB1D1    .  FFB5 ECD6FFFF             push dword ptr ss:[ebp-2914]                             ; |dest
004EB1D7    .  FF15 38794E00             call dword ptr ds:[<&msvcrt.memmove>]                    ; \memmove
004EB1DD    .  83C4 0C                   add esp,0C
004EB1E0    .  8B85 5CD1FFFF             mov eax,dword ptr ss:[ebp-2EA4]
004EB1E6    .  8B8D ECD6FFFF             mov ecx,dword ptr ss:[ebp-2914]
004EB1EC    .  8B95 60D1FFFF             mov edx,dword ptr ss:[ebp-2EA0]
004EB1F2    .  891481                    mov dword ptr ds:[ecx+eax*4],edx
004EB1F5    .^ E9 47FFFFFF               jmp un-Aspr.004EB141---》前面dump出来的代码1结束
004EB1FA    >  90                        nop
004EB1FB    .  90                        nop
004EB1FC    .  90                        nop
004EB1FD    .  90                        nop
004EB1FE    .  90                        nop
004EB1FF    .  90                        nop
004EB200    .  90                        nop
004EB201    .  90                        nop
004EB202    .  90                        nop
004EB203    .  90                        nop
004EB204    .  90                        nop
004EB205    .  B8 4C814D00               mov eax,un-Aspr.004D814C
004EB20A    .- E9 49D5FEFF               jmp un-Aspr.004D8758
004EB20F       90                        nop
004EB210       90                        nop
004EB211       90                        nop
004EB212       90                        nop
004EB213       90                        nop
004EB214       90                        nop
004EB215       90                        nop
004EB216       90                        nop
004EB217       90                        nop
004EB218       90                        nop
004EB219       90                        nop
004EB21A       90                        nop
004EB21B       90                        nop
004EB21C       90                        nop
004EB21D       90                        nop
004EB21E       90                        nop
004EB21F       90                        nop
004EB220       90                        nop
004EB221       90                        nop
004EB222       90                        nop
004EB223   /$  55                        push ebp------》前面dump出来的代码2开始
004EB224   |.  8BEC                      mov ebp,esp
004EB226   |.  51                        push ecx
004EB227   |.  8B45 08                   mov eax,dword ptr ss:[ebp+8]
004EB22A   |.  53                        push ebx
004EB22B   |.  B9 10270000               mov ecx,2710
004EB230   |.  56                        push esi
004EB231   |.  99                        cdq
004EB232   |.  8BF1                      mov esi,ecx
004EB234   |.  57                        push edi
004EB235   |.  F7FE                      idiv esi
004EB237   |.  8B45 0C                   mov eax,dword ptr ss:[ebp+C]
004EB23A   |.  8BF9                      mov edi,ecx
004EB23C   |.  8BD9                      mov ebx,ecx
004EB23E   |.  8955 FC                   mov dword ptr ss:[ebp-4],edx
004EB241   |.  99                        cdq
004EB242   |.  F7FE                      idiv esi
004EB244   |.  8B45 08                   mov eax,dword ptr ss:[ebp+8]
004EB247   |.  8BF2                      mov esi,edx
004EB249   |.  99                        cdq
004EB24A   |.  F7FF                      idiv edi
004EB24C   |.  8BF8                      mov edi,eax
004EB24E   |.  8B45 0C                   mov eax,dword ptr ss:[ebp+C]
004EB251   |.  99                        cdq
004EB252   |.  0FAFFE                    imul edi,esi
004EB255   |.  F7FB                      idiv ebx
004EB257   |.  0FAF75 FC                 imul esi,dword ptr ss:[ebp-4]
004EB25B   |.  33D2                      xor edx,edx
004EB25D   |.  0FAF45 FC                 imul eax,dword ptr ss:[ebp-4]
004EB261   |.  03C7                      add eax,edi
004EB263   |.  5F                        pop edi
004EB264   |.  F7F1                      div ecx
004EB266   |.  B9 00E1F505               mov ecx,5F5E100
004EB26B   |.  8BC2                      mov eax,edx
004EB26D   |.  33D2                      xor edx,edx
004EB26F   |.  69C0 10270000             imul eax,eax,2710
004EB275   |.  03C6                      add eax,esi
004EB277   |.  5E                        pop esi
004EB278   |.  F7F1                      div ecx
004EB27A   |.  5B                        pop ebx
004EB27B   |.  8BC2                      mov eax,edx
004EB27D   |.  C9                        leave
004EB27E   \.  C2 0800                   retn 8----》前面dump出来的代码2结束

修改完毕,重新做了一遍,给文件减了一下肥,修改了一些地方,在w98和winxp下作了测试,运行正常,但如果在winxp下装了瑞星就会运行出错,不知为什么,还望各位朋友指教,谢谢您耐着性子看完,有些东西写的不是很清楚,还忘见谅,有些东西需要自己细细体会和琢磨。自己太菜,有不对的地方还望指教。
                                       
                                       2004.10.3下午5.20

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞7
打赏
分享
最新回复 (12)
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
askformore 18 2004-10-3 17:34
2
0
顶,又一个“猖狂”少年,利害!;)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
stephenteh 2004-10-3 18:35
3
0
nice... :)
雪    币: 250
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
baby 2004-10-3 18:47
4
0
佩服。
雪    币: 229
活跃值: (50)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
VolX 4 2004-10-4 11:07
5
0
Excellent job!
雪    币: 282
活跃值: (233)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
wangli_com 5 2004-10-7 16:30
6
0
重新做了一遍,给文件减了一下肥,修改了一些地方,增加了脱文下载,在w98和winxp下作了测试,运行正常,但如

果在winxp下装了瑞星就会运行出错,不知为什么,还望各位朋友指教,谢谢您耐着性子看完,有些东西写的

不是很清楚,还忘见谅,有些东西需要自己细细体会和琢磨。自己太菜,有不对的地方还望指教
雪    币: 250
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
baby 2004-10-8 00:08
7
0
增加了脱文下载

在哪??
雪    币: 282
活跃值: (233)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
wangli_com 5 2004-10-8 12:38
8
0
最上面几行;
【破解下载】附件:un-Aspr1.rar 附件:un-Aspr2.rar
雪    币: 241
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xiluoyou 2004-10-8 21:05
9
0
CC是什么东西啊?
雪    币: 282
活跃值: (233)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
wangli_com 5 2004-10-8 23:38
10
0
cc就是Armadillo嵌入子进程的INT 3中断, 可能有 50, 100甚至 200个INT 3,它们被放入了子进程的第一个section ,以阻止子进程脱离父进程运行。INT 3中断替代了原始文件的条件跳转。所以每当父进程接收到INT 3中断,它就到存放跳转类型的report中去,看一下标志以决定是否跳转,然后测算出新的EIP,改变到子进程中去然后继续运行直到下一个 INT 3。
雪    币: 250
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
baby 2004-10-9 12:12
11
0
我的电脑装有瑞星杀毒, 不能下断BP GetModuleHandleA+5 ,请问有什么方法解决? 或者有别的方法吗?
雪    币: 282
活跃值: (233)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
wangli_com 5 2004-10-9 19:42
12
0
winxp下装有瑞星杀毒软件,调试起来很麻烦,ravmond.exe对每个api函数都要做检查,我是没调试过,问问别人。
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
骨灰C 2005-1-24 14:22
13
0
这里:
修改004EB100处的代码:
004EB100       90                        nop
004EB101       90                        nop
004EB102       90                        nop
004EB103    .  C785 6CD1FFFF 0B020000    mov dword ptr ss:[ebp-2E94],20B
004EB10D    .  C785 ECD6FFFF 40794E00    mov dword ptr ss:[ebp-2914],<&kernel32.CloseHandle>
004EB117    .  C785 48D8FFFF 64020000    mov dword ptr ss:[ebp-27B8],264
004EB121    .  C785 68D1FFFF 731E4400    mov dword ptr ss:[ebp-2E98],un-Aspr.00441E73
004EB12B    .  EB 21                     jmp short un-Aspr.004EB14E
   中的这一句  C785 68D1FFFF 731E4400    mov dword ptr ss:[ebp-2E98],un-Aspr.00441E73
0044173这个值应该是不固定的吧 在我机上是一个16进制数如:03d7a8b 这样的 这个值应该是由时间校验决定的吧。
游客
登录 | 注册 方可回帖
返回