【破文作者】   HBQJXHW

【加密方式】   ASProtect v1.23 RC1 *加壳

【破解工具】   OD、PEiD0.94、Anti-RDTSC

【破解平台】   WinXP SP2

----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
【破解过程】
一外挂软件的脱壳过程:
用PEiD查看显示ASProtect v1.23 RC1 *

首先运行Anti-RDTSC
OK现在用OD载入加壳程序,选不继续分析。除了INT3中断与非法访问内存不勾,其它全部打勾。
00401000 >  68 01D08A00     PUSH wg.008AD001---》停在此处。
00401005    E8 01000000     CALL wg.0040100B
0040100A    C3              RETN
0040100B    C3              RETN
0040100C    5F              POP EDI
0040100D    1D DA9D4ADA     SBB EAX,DA4A9DDA
================================
F9运行之后
013CD4CF    0000            ADD BYTE PTR DS:[EAX],AL---》停在此处。
013CD4D1    E8 33C05A59     CALL 5A979509
013CD4D6    59              POP ECX
013CD4D7    64:8910         MOV DWORD PTR FS:[EAX],EDX
013CD4DA    EB 0F           JMP SHORT 013CD4EB
================================
单击右键--》查找--》所有参考文本字符串
找到有两个“85”在一起的地方,双击来到。
013CC9F4   /EB 0A           JMP SHORT 013CCA00
013CC9F6   |68 3CCC3C01     PUSH 13CCC3C                             ; ASCII "85"
013CC9FB   |E8 508DFDFF     CALL 013A5750
013CCA00   \A1 DCF93C01     MOV EAX,DWORD PTR DS:[13CF9DC]
013CCA05    8B00            MOV EAX,DWORD PTR DS:[EAX]
013CCA07    E8 640CFFFF     CALL 013BD670---------》在此处下硬件执行断点。
013CCA0C    84C0            TEST AL,AL
013CCA0E    75 0A           JNZ SHORT 013CCA1A
013CCA10    68 3CCC3C01     PUSH 13CCC3C                             ; ASCII "85"
=================================
几下SHIFT+F9之后停在013CCA07    E8 640CFFFF     CALL 013BD670
F7进入,向下找到
013BD702    8B4424 04       MOV EAX,DWORD PTR SS:[ESP+4]
013BD706    014424 08       ADD DWORD PTR SS:[ESP+8],EAX
013BD70A    E9 80000000     JMP 013BD78F---------》直接F4来到这里。
013BD70F    3A5E 37         CMP BL,BYTE PTR DS:[ESI+37]
013BD712    75 17           JNZ SHORT 013BD72B
此时看堆栈
0012FF18   0012FF01
0012FF1C   00400000  wg.00400000
0012FF20   00401000  wg.<模块入口点>---》在命令行输入D 00401000
0012FF24   0012FF74
=================================
继续向下找
013BD77F    E8 8CFCFFFF     CALL 013BD410---------》直接F4来到这里之后,F7进入。
013BD784    0FB707          MOVZX EAX,WORD PTR DS:[EDI]
013BD787    83C0 02         ADD EAX,2
013BD78A    03F8            ADD EDI,EAX
013BD78C    8A1F            MOV BL,BYTE PTR DS:[EDI]
013BD78E    47              INC EDI
013BD78F    3A5E 34         CMP BL,BYTE PTR DS:[ESI+34]
013BD792  ^ 0F85 77FFFFFF   JNZ 013BD70F
013BD798    8BDF            MOV EBX,EDI
013BD79A    8B03            MOV EAX,DWORD PTR DS:[EBX]
013BD79C    85C0            TEST EAX,EAX
013BD79E  ^ 0F85 0AFFFFFF   JNZ 013BD6AE
013BD7A4    8A0424          MOV AL,BYTE PTR SS:[ESP]
013BD7A7    83C4 0C         ADD ESP,0C
013BD7AA    5D              POP EBP
013BD7AB    5F              POP EDI
013BD7AC    5E              POP ESI
013BD7AD    5B              POP EBX
013BD7AE    C3              RETN-------》在此处下F2断点。

进入到这里
013BD410    55              PUSH EBP
013BD411    8BEC            MOV EBP,ESP
013BD413    81C4 F8FEFFFF   ADD ESP,-108
013BD419    53              PUSH EBX
013BD41A    56              PUSH ESI
013BD41B    57              PUSH EDI
013BD41C    8B55 14         MOV EDX,DWORD PTR SS:[EBP+14]
013BD41F    8B5D 08         MOV EBX,DWORD PTR SS:[EBP+8]
013BD422    8DBD FAFEFFFF   LEA EDI,DWORD PTR SS:[EBP-106]
013BD428    8BC2            MOV EAX,EDX
013BD42A    48              DEC EAX
013BD42B    83E8 02         SUB EAX,2
013BD42E    0FB630          MOVZX ESI,BYTE PTR DS:[EAX]
013BD431    8B45 10         MOV EAX,DWORD PTR SS:[EBP+10]
013BD434    83E8 02         SUB EAX,2
013BD437    0FB600          MOVZX EAX,BYTE PTR DS:[EAX]
013BD43A    3B43 2C         CMP EAX,DWORD PTR DS:[EBX+2C]
013BD43D    76 06           JBE SHORT 013BD445
013BD43F    8943 2C         MOV DWORD PTR DS:[EBX+2C],EAX
013BD442    EB 01           JMP SHORT 013BD445
013BD444    6933 C08A433B   IMUL ESI,DWORD PTR DS:[EBX],3B438AC0
013BD44A    3BF0            CMP ESI,EAX----》这里下F2断点,0X46、0XCA是不加密IAT,好像只有一处等于0x11处加密(这里改ESI的值为0X46就可以跳过加密)。
013BD44C    75 5E           JNZ SHORT 013BD4AC
013BD44E    EB 01           JMP SHORT 013BD451
最后得到一个完整的IAT,从00401000----00401128
013BD7AE    C3              RETN----》断在这里。去掉所有F2断点。
=================================
ALT+M
内存映射, 条目 23
 地址=00401000
 大小=00007000 (28672.)
 属主=wg       00400000
 区段=
 包含=代码
 类型=Imag 01001002
 访问=R
 初始访问=RWE
在此处下F2断点。SHIFT+F9来到
013CB2FB    8945 00         MOV DWORD PTR SS:[EBP],EAX---》停在此处。
013CB2FE    6A 0A           PUSH 0A
013CB300    E8 B3A9FDFF     CALL 013A5CB8
013CB305    8BC8            MOV ECX,EAX
向上找到
013CB19F    098D 04408B54   OR DWORD PTR SS:[EBP+548B4004],ECX
013CB1A5    8368 8B C6      SUB DWORD PTR DS:[EAX-75],-3A
013CB1A9    FFD2            CALL EDX-------》这里要PACH一下。所以在这里下硬件执行断点。
013CB1AB    807B 20 00      CMP BYTE PTR DS:[EBX+20],0
013CB1AF    0F85 3D010000   JNZ 013CB2F2----》(013CB1AF这个地址要记住,等一下要用到)。
013CB1B5    3C 01           CMP AL,1
013CB1B7    0F85 35010000   JNZ 013CB2F2
-------------------------------------------------------
好了,执行到这里我们重来。(CTRL+F2)
最后被断在这里:013CB1A9    FFD2            CALL EDX---》去掉硬件执行断点。
改为:013CB1A9    FFD2           JMP 02640000
分配一段内存,我这里分配的是02640000写下如下代码:
02640000    FFD2             CALL EDX
02640002    60               PUSHAD
02640003    8B1D 30006402    MOV EBX,DWORD PTR DS:[2640030]
02640009    C1E0 1F          SHL EAX,1F
0264000C    03C5             ADD EAX,EBP
0264000E    8903             MOV DWORD PTR DS:[EBX],EAX
02640010    83C3 04          ADD EBX,4
02640013    891D 30006402    MOV DWORD PTR DS:[2640030],EBX
02640019    61               POPAD
0264001A    807B 20 00       CMP BYTE PTR DS:[EBX+20],0
0264001E  - E9 8CB1D8FE      JMP 013CB1AF----》这里是上面提到要记住的地址。
二进制代码为:
FF D2 60 8B 1D 30 00 64 02 C1 E0 1F 03 C5 89 03 83 C3 04 89 1D 30 00 64 02 61 80 7B 20 00 E9 8C
B1 D8 FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 64 02 00
上面代码写好之后,F4到如下代码
013CB2FB    8945 00         MOV DWORD PTR SS:[EBP],EAX
013CB2FE    6A 0A           PUSH 0A
013CB300    E8 B3A9FDFF     CALL 013A5CB8
013CB305    8BC8            MOV ECX,EAX
013CB307    038B E4000000   ADD ECX,DWORD PTR DS:[EBX+E4]
013CB30D    8BD6            MOV EDX,ESI
013CB30F    8BC3            MOV EAX,EBX
013CB311    E8 AAE6FFFF     CALL 013C99C0
013CB316    FF0C24          DEC DWORD PTR SS:[ESP]
013CB319    03B3 E4000000   ADD ESI,DWORD PTR DS:[EBX+E4]
013CB31F    833C24 00       CMP DWORD PTR SS:[ESP],0
013CB323  ^ 0F87 55FEFFFF   JA 013CB17E
013CB329    53              PUSH EBX------》F4就这里了。
013CB32A    E8 5D000000     CALL 013CB38C
013CB32F    0183 EC000000   ADD DWORD PTR DS:[EBX+EC],EAX
013CB335    B0 01           MOV AL,1
013CB337    83C4 24         ADD ESP,24
013CB33A    5D              POP EBP
013CB33B    5F              POP EDI
013CB33C    5E              POP ESI
013CB33D    5B              POP EBX
013CB33E    C3              RETN

此时查看02640100
52 13 40 00 58 13 40 00 5E 13 40 00 64 13 40 00 6A 13 40 00 70 13 40 00 76 13 40 00 7C 13 40 00
82 13 40 00 88 13 40 00 8E 13 40 00 94 13 40 00 9A 13 40 00 A0 13 40 00 A6 13 40 00 AC 13 40 00
B2 13 40 00 B8 13 40 00 BE 13 40 00 C4 13 40 00 CA 13 40 00 D6 13 40 00 DC 13 40 00 E2 13 40 00
E8 13 40 00 EE 13 40 00 F4 13 40 00 FA 13 40 00 00 14 40 00 12 14 40 00 18 14 40 00 1E 14 40 00
24 14 40 00 2A 14 40 00 30 14 40 00 36 14 40 00 3C 14 40 00 42 14 40 00 4E 14 40 00 54 14 40 00
60 14 40 00 66 14 40 00 6C 14 40 00 72 14 40 00 78 14 40 00 7E 14 40 00 8A 14 40 00 90 14 40 00
96 14 40 00 9C 14 40 00 A2 14 40 00 A8 14 40 00 AE 14 40 00 BA 14 40 00 C0 14 40 00 C6 14 40 00
CC 14 40 00 D2 14 40 00 DE 14 40 00 32 3D 40 00 3F 3D 40 00 4E 3D 40 00 5C 3D 40 00 6A 3D 40 00
73 3D 40 00 7D 3D 40 00 F2 3D 40 00 18 3E 40 00 55 3E 40 00 6A 3E 40 00 80 3E 40 00 89 3E 40 00
99 3E 40 00 A6 3E 40 00 CA 3E 40 00 44 3F 40 00 87 3F 40 00 90 3F 40 00 C4 3F 40 00 21 40 40 00
2F 40 40 00 62 40 40 00 6E 40 40 00 92 40 40 00 B7 40 40 00 DB 40 40 00 07 41 40 00 10 41 40 00
2C 41 40 00 73 41 40 00 D0 41 40 00 DE 41 40 00 11 42 40 00 1D 42 40 00 41 42 40 00 66 42 40 00
8A 42 40 00 B6 42 40 00 BF 42 40 00 DB 42 40 00 22 43 40 00 7F 43 40 80 8D 43 40 80 C0 43 40 80
CC 43 40 80 F0 43 40 80 15 44 40 80 39 44 40 80 65 44 40 80 6E 44 40 80 B2 44 40 80 0F 45 40 80
1D 45 40 00 50 45 40 80 5C 45 40 80 80 45 40 00 A5 45 40 80 C9 45 40 80 F5 45 40 80 FE 45 40 80
1A 46 40 00 57 46 40 00 B4 46 40 80 C2 46 40 00 F5 46 40 80 01 47 40 80 25 47 40 80 4A 47 40 80
6E 47 40 80 9A 47 40 80 A3 47 40 80 BF 47 40 80 DE 47 40 80 E7 47 40 80 31 48 40 80 61 48 40 80
87 48 40 80 93 48 40 80 AB 48 40 80 BB 48 40 80 48 49 40 00 5E 49 40 80 7B 49 40 80 84 49 40 00
8A 49 40 80 9D 49 40 00 35 4A 40 00 5E 4A 40 80 80 4A 40 00 89 4A 40 80 A9 4A 40 80 DA 4A 40 80
FA 4A 40 80 27 4B 40 80 3C 4B 40 80 49 4B 40 80 61 4B 40 80 6A 4B 40 80 73 4B 40 80 4C 4C 40 80
55 4C 40 80 B7 4C 40 80 C0 4C 40 80 22 4D 40 00 2B 4D 40 00 8D 4D 40 80 96 4D 40 00 EB 4D 40 00
F4 4D 40 80 0B 4E 40 80 84 4E 40 80 C9 4E 40 80 DF 4E 40 80 F7 4E 40 00 19 4F 40 00 A6 4F 40 00
B4 4F 40 80 2A 50 40 80 39 50 40 00 4F 50 40 80 76 50 40 80 AE 50 40 80 0F 51 40 80 2B 51 40 80
5A 51 40 80 74 51 40 80 7D 51 40 80 86 51 40 80 90 51 40 00 1A 52 40 80 29 52 40 80 3F 52 40 80
66 52 40 80 9E 52 40 80 FF 52 40 80 1B 53 40 80 4A 53 40 80 64 53 40 80 6D 53 40 00 76 53 40 80
80 53 40 00 0A 54 40 80 19 54 40 80 2F 54 40 00 56 54 40 80 8E 54 40 80 EF 54 40 80 0B 55 40 80
3A 55 40 80 54 55 40 80 5D 55 40 80 66 55 40 80 70 55 40 00 E2 55 40 80 01 56 40 00 39 56 40 80
6D 56 40 80 7B 56 40 00 89 56 40 00 C4 56 40 80 D4 56 40 80 DB 56 40 00 E1 56 40 00 F5 56 40 80
05 57 40 80 11 57 40 00 1E 57 40 80 B6 57 40 80 DD 57 40 80 84 58 40 80 C3 58 40 80 E4 58 40 80
41 59 40 80 88 59 40 80 53 5A 40 80 7A 5A 40 80 8A 5A 40 80 AE 5A 40 80 73 5B 40 80 9A 5B 40 80
11 5C 40 80 50 5C 40 00 71 5C 40 80 C8 5C 40 80 09 5D 40 80 D4 5D 40 80 FB 5D 40 80 0B 5E 40 80
2C 5E 40 80 E3 5E 40 80 0A 5F 40 80 81 5F 40 80 C0 5F 40 00 E1 5F 40 80 38 60 40 80 79 60 40 80
44 61 40 80 6B 61 40 80 7B 61 40 80 9C 61 40 80 3A 62 40 80 AD 62 40 80 55 63 40 80 94 63 40 00
DE 63 40 80 1D 64 40 80 3D 64 40 80 4B 64 40 80 54 64 40 80 93 64 40 80 B2 64 40 80 C0 64 40 80
C9 64 40 80 D9 64 40 00 E9 64 40 00 F9 64 40 80 00 65 40 80 44 65 40 00 75 65 40 80 BF 65 40 80
FE 65 40 80 5B 66 40 00 8C 66 40 00 F9 66 40 80 17 67 40 80 23 67 40 80 2F 67 40 80 3C 67 40 80
D5 67 40 80 14 68 40 80 6F 68 40 80 CC 68 40 80 29 69 40 80 5A 69 40 80 EA 69 40 00 08 6A 40 00
82 6A 40 80 F4 6A 40 80 FC 6A 40 80
上面是所有变形的CALL。
撤销所有PACH的代码。
ALT+M
内存映射, 条目 23
 地址=00401000
 大小=00007000 (28672.)
 属主=wg       00400000
 区段=
 包含=代码
 类型=Imag 01001002
 访问=R
 初始访问=RWE
在此处下F2断点。SHIFT+F9来到
013B0F3F    C603 E9         MOV BYTE PTR DS:[EBX],0E9---》停在此处。
013B0F42    8D53 01         LEA EDX,DWORD PTR DS:[EBX+1]
013B0F45    8902            MOV DWORD PTR DS:[EDX],EAX
013B0F47    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
013B0F4A    8910            MOV DWORD PTR DS:[EAX],EDX
013B0F4C    B8 05000000     MOV EAX,5
013B0F51    5B              POP EBX
013B0F52    5D              POP EBP
013B0F53    C2 0400         RETN 4---》CTRL+F9到这里
继续ALT+M
内存映射, 条目 23
 地址=00401000
 大小=00007000 (28672.)
 属主=wg       00400000
 区段=
 包含=代码
 类型=Imag 01001002
 访问=R
 初始访问=RWE
在此处下F2断点。SHIFT+F9两下来到
004014F6  - FF25 F0104000   JMP DWORD PTR DS:[4010F0] --》停在这里           ; msvbvm60.ThunRTMain
004014FC  - E9 26EFA101     JMP 01E20427-----》根据上面的可以肯定是VB的程序,这里才是真OEP。
00401501    49              DEC ECX
00401502    3A91 27806E00   CMP DL,BYTE PTR DS:[ECX+6E8027]
00401508    50              PUSH EAX
00401509    0000            ADD BYTE PTR DS:[EAX],AL
====================================
根据进入变形的CALL找到三个如下硬件断点,还有一个AL的值。
AL=FD

013CA203    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
013CA206    8B80 E0000000   MOV EAX,DWORD PTR DS:[EAX+E0]
013CA20C    0145 FC         ADD DWORD PTR SS:[EBP-4],EAX
013CA20F    8D45 0C         LEA EAX,DWORD PTR SS:[EBP+C]----》1.硬件断点

013CA151    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
013CA154    8B80 E0000000   MOV EAX,DWORD PTR DS:[EAX+E0]
013CA15A    0145 FC         ADD DWORD PTR SS:[EBP-4],EAX
013CA15D    EB 01           JMP SHORT 013CA160---------》2.硬件断点

013CB040    8BD0            MOV EDX,EAX
013CB042    02D3            ADD DL,BL
013CB044    8B4D FC         MOV ECX,DWORD PTR SS:[EBP-4]----》3.硬件断点
013CB047    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]

忽略所有异常,去掉所有断点,然后下三个硬件断点
三个硬件断点下好之后,再02640000写下如下代码:
02640000    A1 C0006402     MOV EAX,DWORD PTR DS:[26400C0]
02640005    8B18            MOV EBX,DWORD PTR DS:[EAX]
02640007    81E3 FFFFFF7F   AND EBX,7FFFFFFF
0264000D    FFE3            JMP EBX
0264000F    0000            ADD BYTE PTR DS:[EAX],AL
02640011    0000            ADD BYTE PTR DS:[EAX],AL
02640013    0000            ADD BYTE PTR DS:[EAX],AL
02640015    0000            ADD BYTE PTR DS:[EAX],AL
02640017    0000            ADD BYTE PTR DS:[EAX],AL
02640019    0000            ADD BYTE PTR DS:[EAX],AL
0264001B    0000            ADD BYTE PTR DS:[EAX],AL
0264001D    0000            ADD BYTE PTR DS:[EAX],AL
0264001F    0000            ADD BYTE PTR DS:[EAX],AL
02640021    BF C0006402     MOV EDI,26400C0
02640026    8B07            MOV EAX,DWORD PTR DS:[EDI]
02640028    8B18            MOV EBX,DWORD PTR DS:[EAX]
0264002A    81FB FFFFFF7F   CMP EBX,7FFFFFFF
02640030    79 49           JNS SHORT 0264007B
02640032    837D D4 FF      CMP DWORD PTR SS:[EBP-2C],-1
02640036    74 0F           JE SHORT 02640047
02640038    8B47 04         MOV EAX,DWORD PTR DS:[EDI+4]
0264003B    8B1F            MOV EBX,DWORD PTR DS:[EDI]
0264003D    8B1B            MOV EBX,DWORD PTR DS:[EBX]
0264003F    8918            MOV DWORD PTR DS:[EAX],EBX
02640041    83C0 04         ADD EAX,4
02640044    8947 04         MOV DWORD PTR DS:[EDI+4],EAX
02640047    8B5D FC         MOV EBX,DWORD PTR SS:[EBP-4]
0264004A    E8 46000000     CALL 02640095
0264004F    B0 FD           MOV AL,0FD
02640051    66:B9 FF15      MOV CX,15FF
02640055    3A45 EF         CMP AL,BYTE PTR SS:[EBP-11]
02640058    74 05           JE SHORT 0264005F
0264005A    66:81C1 0010    ADD CX,1000
0264005F    8B07            MOV EAX,DWORD PTR DS:[EDI]
02640061    8B18            MOV EBX,DWORD PTR DS:[EAX]
02640063    81E3 FFFFFF7F   AND EBX,7FFFFFFF
02640069    83C0 04         ADD EAX,4
0264006C    8907            MOV DWORD PTR DS:[EDI],EAX
0264006E    66:890B         MOV WORD PTR DS:[EBX],CX
02640071    83C3 02         ADD EBX,2
02640074    8933            MOV DWORD PTR DS:[EBX],ESI
02640076  ^ EB 88           JMP SHORT 02640000
02640078    90              NOP
02640079    90              NOP
0264007A    90              NOP
0264007B    8B5D B4         MOV EBX,DWORD PTR SS:[EBP-4C]
0264007E    E8 12000000     CALL 02640095
02640083    B0 FD           MOV AL,0FD
02640085    66:B9 FF15      MOV CX,15FF
02640089    3AC2            CMP AL,DL
0264008B  ^ 74 D2           JE SHORT 0264005F
0264008D  ^ EB CB           JMP SHORT 0264005A
0264008F    0000            ADD BYTE PTR DS:[EAX],AL
02640091    0000            ADD BYTE PTR DS:[EAX],AL
02640093    0000            ADD BYTE PTR DS:[EAX],AL
02640095    BE 00104000     MOV ESI,wg.<模块入口点>
0264009A    391E            CMP DWORD PTR DS:[ESI],EBX
0264009C    74 0D           JE SHORT 026400AB
0264009E    83C6 04         ADD ESI,4
026400A1    81FE 24114000   CMP ESI,401124
026400A7    77 03           JA SHORT 026400AC
026400A9  ^ EB EF           JMP SHORT 0264009A
026400AB    C3              RETN
026400AC  - EB FE           JMP SHORT 026400AC
二进制代码为:
A1 C0 00 64 02 8B 18 81 E3 FF FF FF 7F FF E3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 BF C0 00 64 02 8B 07 8B 18 81 FB FF FF FF 7F 79 49 83 7D D4 FF 74 0F 8B 47 04 8B 1F 8B 1B 89
18 83 C0 04 89 47 04 8B 5D FC E8 46 00 00 00 B0 FD 66 B9 FF 15 3A 45 EF 74 05 66 81 C1 00 10 8B
07 8B 18 81 E3 FF FF FF 7F 83 C0 04 89 07 66 89 0B 83 C3 02 89 33 EB 88 90 90 90 8B 5D B4 E8 12
00 00 00 B0 FD 66 B9 FF 15 3A C2 74 D2 EB CB 00 00 00 00 00 00 BE 00 10 40 00 39 1E 74 0D 83 C6
04 81 FE 24 11 40 00 77 03 EB EF C3 EB FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 01 64 02 00 06 64 02
================================================

00401352    E8 A9ECA301     CALL 01E40000---》在这里新建EIP,F9运行程序来到

013CA203    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
013CA206    8B80 E0000000   MOV EAX,DWORD PTR DS:[EAX+E0]
013CA20C    0145 FC         ADD DWORD PTR SS:[EBP-4],EAX
013CA20F    8D45 0C         LEA EAX,DWORD PTR SS:[EBP+C]---》停在第一处下的硬件断点。
就运行以下脚本:

写一个OllyScript.dll插件的脚本(这招是和shoooo学来的,简单有效),内容如下:
mov eip,2640021 
run
mov eip,2640021 
run
mov eip,2640021 
run
mov eip,2640021 
run
mov eip,2640021 
run
mov eip,2640021 
run
(地址表里有多少项就多少行,当然少些也没关系,多运行几次)
一直运行到出现“不知道如何继续,因为内存地址00000000处是不可读。请尝试更改EIP.................”
到插件内暂停脚本运行。
这时就可以用LordPe纠正大小后dump了。
然后用ImportREC Fixed.
OEP=004014FC
RVA=00401000
SIZE=128
修复之后,载入脱壳之后的程序
004014FC >- E9 26EFA101     JMP 01E20427
00401501    49              DEC ECX
00401502    3A91 27806E00   CMP DL,BYTE PTR DS:[ECX+6E8027]
00401508    50              PUSH EAX
改为:
004014FC > $  68 68224000   PUSH dumped_1.00402268                   ;  ASCII "VB5!6&vb6chs.dll"
00401501   .  E8 F0FFFFFF   CALL <JMP.&msvbvm60.ThunRTMain>
改了之后保存。
以上参考了kanxue的Asprotect SKE 2.2 的Advanced Import protection保护技术浅析

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

【版权声明】   本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! 
----------------------------------------------------------------------------------------------
                                                                                 文章写于2006-7-5 00:49:29