首页
社区
课程
招聘
[原创]ACProtect1.41保护技术分析
发表于: 2011-9-11 20:48 13111

[原创]ACProtect1.41保护技术分析

2011-9-11 20:48
13111

这个壳很老了,但是还是来分析下它所使用的保护技术,这个壳是使用加密解密三的SMC那章的保护技术,依次循环解码,分几个段,由当前段解码加密后的字节码,放到下一个执行段,当前段解码执行完成后,执行下一段解出来的代码,每段解码代码中包含了花指令,代码变形,迷惑等等,当解压到最后一段代码的时候,这个壳就直接一个JMP跳到Oep了,我们脱这个壳分为两个步骤,
第一步:清除花指令
第二部:查找迷惑变形代码
我们首先清除花指令,花指令的清除比较简单,比如下面这段代码

00405000 >  60              PUSHAD
00405001    EB 01           JMP SHORT 00405004                       ; JMP SHORT 00405004
00405003    E8 0F810100     CALL 0041D117
00405008    0000            ADD BYTE PTR DS:[EAX],AL
00405016   /7E 03           JLE SHORT 0040501B
00405018   |7F 01           JG SHORT 0040501B
0040502A    50              PUSH EAX
0040502B    E8 01000000     CALL 00405031                            ; 花指令,下指令的开始字节NOP掉
00405030  - 76 83           JBE SHORT 00404FB5
花指令后的代码
0040502A    50              PUSH EAX                                 ; 保存EAX的值
0040502B    E8 01000000     CALL 00405031                            ; Call会压入下个地址到堆栈,esp-4
00405030    90              NOP
00405031    83C4 04         ADD ESP,4                                ; 恢复堆栈,ESP+4
00405034    58              POP EAX                                  ; 恢复EAX的值
00405036    E8 01000000     CALL 0040503C
0040503B  - 7C 83           JL SHORT 00404FC0                        ; 花指令
0040503D    04 24           ADD AL,24
清除后的代码
00405036    E8 01000000     CALL 0040503C                            ; Call会压入下个地址到堆栈,esp-4
0040503B    90              NOP                                      ; 花指令
0040503C    830424 06       ADD DWORD PTR SS:[ESP],6                 ; 下条指令的地址加上6,CALL的下一条指令到RETN刚好6字节,所以目标地址就是RETN后一条指令
00405040    C3              RETN
00405043   /EB 01           JMP SHORT 00405046                       ; 直接跳到XXXX地址,其下的代码到目标地址之间的代码是无效的
00405045   |90              NOP                                      ; 花指令
0040508B    E8 01000000      CALL 00405091
00405090    90               NOP
00405091    83C4 04          ADD ESP,4

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 6
支持
分享
最新回复 (19)
雪    币: 1489
活跃值: (1088)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
不错学习了
2011-9-11 22:07
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
3
支持韬哥大作!!回学校后仔细研究
2011-9-12 09:49
0
雪    币: 7161
活跃值: (1175)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持LZ,好好学习下!
2011-9-12 10:07
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
收下学习一下
2011-9-12 10:24
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
第三个函数那里写错了把,应该是 7C80B741
2011-9-12 10:51
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
为什么我的OEP是这样的

00401000    6A 00           push    0
00401002    E8 E8000000     call    004010EF   你的是0040102e
00401007    6A 00           push    0
00401009    68 09304000     push    00403009                         ; ASCII "Test"
2011-9-12 10:57
0
雪    币: 106
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
下面总结花指令的方式,当有一个JMP指令跳到一个XXXX地址的时候,这个地址不管是不是花指令,其JMP指令到目标地址的上一条指令都是无效的,有模拟JMP指令的时候也是如此

此言差矣...中间有些指令有时候还是有效的,要看具体的情况.在ASPr里应该能见到不少
另外LZ真的是"手工"修复输入表了
2011-9-12 11:59
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
楼主是真手工了。。不过跟进去也很简单,就是两个数异或一下就得到地址了
2011-9-12 12:56
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
10
其中MessageBoxA被加码了,这个过程我没贴出来,一大堆代码,到最后就是 JMP EAX,eax就是MessageBoxA的地址
2011-9-12 14:30
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
11
多谢大侠指点啊
2011-9-12 15:45
0
雪    币: 287
活跃值: (583)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
滔哥好厉害,我都看不懂
2011-9-12 19:53
0
雪    币: 89
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
8楼  求赐教
2011-9-13 11:13
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
14
邓韬做的是逆向?
2011-9-13 20:20
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
15
这是没事,在网吧分析的,我做的是逆向,困难啊!
2011-9-14 08:37
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
16
我也在做逆向,天下无难事,毅力加耐心,互勉 :)
2011-9-14 08:42
0
雪    币: 136
活跃值: (1490)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
17
韬哥求交流哇
2011-9-15 12:39
0
雪    币: 76
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
韬哥,你是我学习的榜样啊
2011-9-15 18:01
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
下下来学习的,无奈金山和小红伞都报,没办法啊。估计都报壳了
2011-9-21 15:07
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不错
2012-7-13 00:34
0
游客
登录 | 注册 方可回帖
返回
//