首页
社区
课程
招聘
学习ASProtect手动脱壳修复遇难
发表于: 2006-7-2 20:39 5164

学习ASProtect手动脱壳修复遇难

2006-7-2 20:39
5164
现在只会用补区段的方法脱,,想脱得更完美些,所以学习手动修复遇到困难,,请大侠们多多指教下。
查壳为ASProtect2。11X壳,,OD载入后粗跟了看看,IAT没加密,就是有很多CALL变形

01460368    55              PUSH EBP   伪OEP
01460369    2BE9            SUB EBP,ECX
0146036B    65:EB 01        JMP SHORT 0146036F                       ; 多余的前缀
0146036E    6933 6C242883   IMUL ESI,DWORD PTR DS:[EBX],8328246C
01460374    CD 99           INT 99
01460376    336C24 08       XOR EBP,DWORD PTR SS:[ESP+8]
0146037A    336C24 28       XOR EBP,DWORD PTR SS:[ESP+28]
0146037E    8D6C04 5D       LEA EBP,DWORD PTR SS:[ESP+EAX+5D]
01460382    2BE8            SUB EBP,EAX
01460384    8D6C25 A3       LEA EBP,DWORD PTR SS:[EBP-5D]
//////////////////////////////

CTRL+B 搜FF15
01460507    FF15 10A14300   CALL DWORD PTR DS:[43A110]               ; kernel32.ExitProcess
0146050D    C3              RETN
0146050E    FF35 F4FF4400   PUSH DWORD PTR DS:[44FFF4]
01460514    FF7424 08       PUSH DWORD PTR SS:[ESP+8]
01460518    68 01124601     PUSH 1461201
0146051D    E8 DEFA0500     CALL 014C0000
/////////////////////////////////
回到OEP处CTRL+G到01276730    E8 17BEFDFF     CALL 0125254C
01276726    33C0            XOR EAX,EAX
01276728    8945 F0         MOV DWORD PTR SS:[EBP-10],EAX
0127672B    B8 00070000     MOV EAX,700
01276730    E8 17BEFDFF     CALL 0125254C 申请内存空间14E0000,,,这行改为JMP14E0043 
/////////////////////////////////
014E0000    0000            ADD BYTE PTR DS:[EAX],AL
014E0002    0000            ADD BYTE PTR DS:[EAX],AL
014E0004    0000            ADD BYTE PTR DS:[EAX],AL
014E0006    0000            ADD BYTE PTR DS:[EAX],AL
014E0008    0000            ADD BYTE PTR DS:[EAX],AL
014E000A    BA 00104000     MOV EDX,DownLoad.<模块入口点> 这里新建EIP,,F9运行
014E000F    803A E8         CMP BYTE PTR DS:[EDX],0E8
014E0012    75 14           JNZ SHORT 014E0028
014E0014    8B42 01         MOV EAX,DWORD PTR DS:[EDX+1]
014E0017    03C2            ADD EAX,EDX
014E0019    05 05000000     ADD EAX,5
014E001E    3D 00004C01     CMP EAX,14C0000
014E0023    75 03           JNZ SHORT 014E0028
014E0025    EB 0C           JMP SHORT 014E0033
014E0027    90              NOP
014E0028    42              INC EDX
014E0029    81FA 00A04300   CMP EDX,43A000
014E002F  ^ 72 DE           JB SHORT 014E000F
014E0031  - EB FE           JMP SHORT 014E0031
014E0033    8915 00014E01   MOV DWORD PTR DS:[14E0100],EDX
014E0039    60              PUSHAD
014E003A    FFE2            JMP EDX
014E003C    90              NOP
014E003D    90              NOP
014E003E    90              NOP
014E003F    90              NOP
014E0040    90              NOP
014E0041    90              NOP
014E0042    90              NOP
014E0043    60              PUSHAD
014E0044    B8 00A04300     MOV EAX,43A000
014E0049    90              NOP
014E004A    3910            CMP DWORD PTR DS:[EAX],EDX
014E004C    75 23           JNZ SHORT 014E0071
014E004E    8B0D 00014E01   MOV ECX,DWORD PTR DS:[14E0100]
014E0054    C701 FF150000   MOV DWORD PTR DS:[ECX],15FF
014E005A    8941 02         MOV DWORD PTR DS:[ECX+2],EAX
014E005D    61              POPAD
014E005E    90              NOP
014E005F    8B15 00014E01   MOV EDX,DWORD PTR DS:[14E0100]
014E0065    90              NOP
014E0066    90              NOP
014E0067    90              NOP
014E0068  ^ EB BE           JMP SHORT 014E0028
014E006A    90              NOP
014E006B    90              NOP
014E006C    90              NOP
014E006D    90              NOP
014E006E    90              NOP
014E006F    90              NOP
014E0070    90              NOP
014E0071    83C0 04         ADD EAX,4
014E0074    3D 7CA64300     CMP EAX,43A67C
014E0079  ^ 7E CF           JLE SHORT 014E004A
014E007B  ^ EB E0           JMP SHORT 014E005D
014E007D    90              NOP
014E007E    90              NOP
014E007F    90              NOP

00 00 00 00 00 00 00 00 00 00 BA 00 10 40 00 80 3A E8 75 14 8B 42 01 03 C2 05 05 00 00 00 3D 00
00 4C 01 75 03 EB 0C 90 42 81 FA 00 A0 43 00 72 DE EB FE 89 15 00 01 4E 01 60 FF E2 90 90 90 90
90 90 90 60 B8 00 A0 43 00 90 39 10 75 23 8B 0D 00 01 4E 01 C7 01 FF 15 00 00 89 41 02 61 90 8B
15 00 01 4E 01 90 90 90 EB BE 90 90 90 90 90 90 90 83 C0 04 3D 7C A6 43 00 7E CF EB E0 90 90 90
按照大侠们说的数据窗口看看是不是己修复好了,,CTRL+G   0146051D
看了几个CALL 014C0000的地方,一个都没变,,

大侠们指教下,,是那里错了

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 277
活跃值: (312)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
2
直接用脚本吧
2006-7-2 20:50
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 wangshq397 发布
直接用脚本吧

用脚本修复是方便。。可这个修复脚本下面这几个点如何确定
mov count,0eb0100             //存放需要手动修复代码地址
mov cc1,00eb0023              //普通断点:cc1
mov cc2,00eb002f              //普通断点:cc2
mov he1,00c488da             //跳转类型断点(记为he1)
mov he2,0ea00ba              //跳转地址断点(记为he2)
mov return,00eb0026          //返回PATCH继续扫描的地址,记为return
能用这个脚本做个实列吗,,我这样的菜鸟实在无法领会,学无止尽
2006-7-3 11:42
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Aspr2.XX_IATfixer_v1.02.osc用这个脚本跑到OEP处,查看CALL 014C0000己被修复,可OEP下面还有许多这样的 CALL 01450000
的。

013B027D    55              PUSH EBP                                 ; 00049D57C
013B027E    BD A2CD4400     MOV EBP,44CDA2
013B0283    83DD 4D         SBB EBP,4D
013B0286    336C24 28       XOR EBP,DWORD PTR SS:[ESP+28]
013B028A    336C24 08       XOR EBP,DWORD PTR SS:[ESP+8]
013B028E    BD F2BE4200     MOV EBP,42BEF2
013B0293    336C24 28       XOR EBP,DWORD PTR SS:[ESP+28]
013B0297    F3:             PREFIX REP:                              ; 多余的前缀
013B0298    EB 02           JMP SHORT 013B029C
013B029A    CD 20           INT 20
013B029C    8D6C04 35       LEA EBP,DWORD PTR SS:[ESP+EAX+35]
013B02A0    2BE8            SUB EBP,EAX
013B02A2    8D6D CB         LEA EBP,DWORD PTR SS:[EBP-35]
013B02A5    83C4 F0         ADD ESP,-10
013B02A8    53              PUSH EBX
013B02A9    F3:             PREFIX REP:                              ; 多余的前缀
013B02AA    EB 02           JMP SHORT 013B02AE
013B02AC    CD 20           INT 20
013B02AE    8D445E 32       LEA EAX,DWORD PTR DS:[ESI+EBX*2+32]
013B02B2    8D4420 CE       LEA EAX,DWORD PTR DS:[EAX-32]
013B02B6    EB 02           JMP SHORT 013B02BA
013B02B8    CD 20           INT 20
013B02BA    FF7424 20       PUSH DWORD PTR SS:[ESP+20]
013B02BE    EB 02           JMP SHORT 013B02C2
013B02C0    CD 20           INT 20
013B02C2    66:9C           PUSHFW
013B02C4    57              PUSH EDI
013B02C5    EB 02           JMP SHORT 013B02C9
013B02C7    CD 20           INT 20
013B02C9    8DBC0B 6E104200 LEA EDI,DWORD PTR DS:[EBX+ECX+42106E]
013B02D0    2BF9            SUB EDI,ECX
013B02D2    8BFC            MOV EDI,ESP
013B02D4    8D7C07 06       LEA EDI,DWORD PTR DS:[EDI+EAX+6]
013B02D8    2BF8            SUB EDI,EAX
013B02DA    2E:EB 01        JMP SHORT 013B02DE                       ; 多余的前缀
013B02DD    C7              ???                                      ; 未知命令
013B02DE    53              PUSH EBX
013B02DF    81F3 D63773C2   XOR EBX,C27337D6
013B02E5    BB 56F44300     MOV EBX,43F456
013B02EA    BB 0EBC4800     MOV EBX,48BC0E
013B02EF    3E:EB 02        JMP SHORT 013B02F4                       ; 多余的前缀
013B02F2    CD 20           INT 20
013B02F4    8D9C11 B4D14900 LEA EBX,DWORD PTR DS:[ECX+EDX+49D1B4]
013B02FB    F3:             PREFIX REP:                              ; 多余的前缀
013B02FC    EB 02           JMP SHORT 013B0300
013B02FE    CD 20           INT 20
013B0300    2BDA            SUB EBX,EDX
013B0302    2BD9            SUB EBX,ECX
013B0304    53              PUSH EBX
013B0305    8F07            POP DWORD PTR DS:[EDI]
013B0307    5B              POP EBX
013B0308    5F              POP EDI
013B0309    66:9D           POPFW
013B030B    B8 263A4700     MOV EAX,473A26
013B0310    B8 DE2C4700     MOV EAX,472CDE
013B0315    58              POP EAX
013B0316    E9 0A000000     JMP 013B0325
013B031B    59              POP ECX
013B031C    59              POP ECX
013B031D    64:8910         MOV DWORD PTR FS:[EAX],EDX
013B0320    E8 DBFC0900     CALL 01450000
013B0325    68 700A3B01     PUSH 13B0A70
013B032A    E8 D1FC0900     CALL 01450000
013B032F    B9 F2264500     MOV ECX,4526F2
013B0334    B9 EA0A4800     MOV ECX,480AEA
013B0339    034C24 18       ADD ECX,DWORD PTR SS:[ESP+18]
013B033D    83D9 DF         SBB ECX,-21
013B0340    8D8C22 0B000000 LEA ECX,DWORD PTR DS:[EDX+B]
013B0347    2BCA            SUB ECX,EDX
013B0349    F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
013B034B    5F              POP EDI
013B034C    5E              POP ESI
013B034D    C9              LEAVE
013B034E    C2 0C00         RETN 0C

在01617190    E8 B7B3FDFF     CALL 015F254C写入jmp 18c0037

018C0000    BA 00104000     MOV EDX,.<模块入口点>此新建EIP,运行
018C0005    803A E8         CMP BYTE PTR DS:[EDX],0E8
018C0008    75 12           JNZ SHORT 018C001C
018C000A    8B42 01         MOV EAX,DWORD PTR DS:[EDX+1]
018C000D    03C2            ADD EAX,EDX
018C000F    83C0 05         ADD EAX,5
018C0012    3D 00008A01     CMP EAX,1450000
018C0017    75 03           JNZ SHORT 018C001C
018C0019    EB 0C           JMP SHORT 018C0027
018C001B    90              NOP
018C001C    42              INC EDX
018C001D    81FA 00A04800   CMP EDX,48A000
018C0023  ^ 72 E0           JB SHORT 018C0005
018C0025  - EB FE           JMP SHORT 018C0025
018C0027    8915 00018C01   MOV DWORD PTR DS:[18C0100],EDX
018C002D    60              PUSHAD
018C002E    FFE2            JMP EDX
018C0030    90              NOP
018C0031    90              NOP
018C0032    90              NOP
018C0033    90              NOP
018C0034    90              NOP
018C0035    90              NOP
018C0036    90              NOP
018C0037    60              PUSHAD
018C0038    B8 78E14800     MOV EAX,48E178
018C003D    90              NOP
018C003E    3910            CMP DWORD PTR DS:[EAX],EDX
018C0040    75 20           JNZ SHORT 018C0062
018C0042    8B0D 00018C01   MOV ECX,DWORD PTR DS:[18C0100]
018C0048    C701 FF250000   MOV DWORD PTR DS:[ECX],25FF
018C004E    8941 02         MOV DWORD PTR DS:[ECX+2],EAX
018C0051    61              POPAD
018C0052    90              NOP
018C0053    8B15 00018C01   MOV EDX,DWORD PTR DS:[18C0100]
018C0059    90              NOP
018C005A    90              NOP
018C005B    90              NOP
018C005C  ^ EB BE           JMP SHORT 018C001C
018C005E    90              NOP
018C005F    90              NOP
018C0060    90              NOP
018C0061    90              NOP
018C0062    83C0 04         ADD EAX,4
018C0065    3D 70E84800     CMP EAX,48E870
018C006A  ^ 7E D2           JLE SHORT 018C003E
018C006C  ^ EB E3           JMP SHORT 018C0051

查看CALL 01450000仍没有修复,按代码变形方法也找不到相应数据

大侠们帮帮忙啊,,有没有遇到同样问题的。。
好多脱文的程序都不象我遇到的这个
难到这个只有用补区段方法脱吗??
2006-7-15 10:53
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
没人知道吗
2006-7-15 17:57
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 kmjyq 发布
没人知道吗

知道的人很多
有很多文章你不参考
那也没辙了
2006-7-15 19:18
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我看了很多脱文都没看到一个象我这个一样的啊,,
有两种的壳调用CALL 1450000在OEP下面的
一种是内存断点(大侠们的文章多数的都是内存断点法就达OPE),面我这个是到了CALL 13C0000壳调用,
用手动或脚本都只能修复CALL 13C0000这样的调用,
而CALL 1450000修复不了
2006-7-15 21:08
0
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
8
最初由 kmjyq 发布
我看了很多脱文都没看到一个象我这个一样的啊,,
有两种的壳调用CALL 1450000在OEP下面的
一种是内存断点(大侠们的文章多数的都是内存断点法就达OPE),面我这个是到了CALL 13C0000壳调用,
用手动或脚本都只能修复CALL 13C0000这样的调用,
而CALL 1450000修复不了


你说的是从伪oep开始后出现的push xxxxx,call xxxxx或者就只有call xxxxx,这些是变形跳转或者变形call。
进入call xxxxx后有3层,第一层是堆栈的保护,第二层是变形类型与跳转类型的判别,第3层的最后指向变形的最终位置。
详细参考wak的文章:
ASProtect.SKE.2.11 stolen code解密
相当详细,只是排版不大好看。
2006-7-16 07:29
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
还是CYTO老大厉害,,感谢
2006-7-16 13:06
0
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
10
最初由 kmjyq 发布
还是CYTO老大厉害,,感谢


更正一下,我不是老大,也不厉害,只是刚好能帮上忙。
2006-7-16 14:40
0
游客
登录 | 注册 方可回帖
返回
//