首页
社区
课程
招聘
一不小心dump了一段ASPR的SMC实现代码~
发表于: 2007-1-27 18:55 5145

一不小心dump了一段ASPR的SMC实现代码~

2007-1-27 18:55
5145
我是壳肓,所以开始学习壳的知识,于是拿来ASPR(ASProtect 1.33 - 2.1 Registered)玩玩,
可能是因为ASPR经典的原因,里面包含了很多变态的加密方式,所以我选择了他,觉得即使跟不出结果也会学到很多加密上东西!
这不
没跟几步,就跟出了一点SMC处理代码,
我想,如果把这种编码方式运用到生活中,那将会是一件多么开心的事!
当然,这一切都是针对我们这种密肓而言的,高手不屑了!

这一次动作全是动态跟踪,仅仅是记录CPU处理的每一个数据以及处理结果,所以很像是程序里的顺序结构
流水一样
判断循环就靠的是感觉

这里DUMP的SMC实现代码就是第一个循环
哈哈

原文:(从一载入停在入口点开始的)

push 00450001
call 0040100b
retn
retn

pushad
call 0045000a

pop ebp
inc ebp
push ebp
retn

jmp short 0045000e
call 00450014

pop ebp
mov ebx,-13
add ebx,ebp
sub ebx,50000
cmp byte ptr[ebp+4d],1
jnz short 00450034

lea eax,dword ptr[ebp+53]
push eax
push ebx
push dword ptr[ebp+be5]
lea eax,dword ptr[ebp+35]
push eax
jmp 004500ca

call 004500de

mov bl,al
pop edx
call 004500f9

movzx edx,bx
pop edi
add ebx,46af625b
add edi,0a43
xor bh,0d
mov eax,251
call 00450124

++++++这下面就是了,一个循环,SMC的

mov ebx,1e158e6c
pop esi
push dword ptr[edi]
jmp 0045013c

pop ecx
je 00450147
mov si,3b5d
sub ecx,5e73d7dd
xor ecx,15066f52
je 0045015d
push eax
push edx
pop edx
pop ebx
add ecx,55149223
sub esi,24f590ce
push ecx
push 65debda
mov bh,0eb
pop edx
pop dword ptr[edi]
mov ebx,0a4dc97e
sub edi,56b5872c
add edi,56b58728
push ecx
pop edx
dec eax
jnz 004501af

call 004501c1

jle 004501d8
jmp 004501d8

pop edx
jmp 0045012a

push dword ptr[edi]
jmp 0045013c

pop ecx
je 00450147
mov si,3b5d
sub ecx,5e73d7dd
xor ecx,15066f52
je 0045015d
push eax
push edx
pop edx
pop ebx
add ecx,55149223
sub esi,24f590ce
push ecx
push 65debda
mov bh,0eb
pop edx
pop dword ptr[edi]
mov ebx,0a4dc97e
sub edi,56b5872c
add edi,56b58728
push ecx
pop edx
dec eax
jnz 004501af

call 004501c1

jle 004501d8
jmp 004501d8

pop edx
jmp 0025012a

push dword ptr[edi]
jmp 0045013c

pop ecx
je 00450147
mov si,3b5d
sub ecx,5e73d7dd
xor ecx,15066f52
je 0045015d
push eax
push edx
pop edx
pop ebx
add ecx,55149223
sub esi,24f590ce
push ecx
push 65debda
mov bh,0eb
pop edx
pop dword ptr[edi]
mov ebx,0a4dc97e
sub edi,56b5872c
add edi,56b58728
push ecx
pop edx
dec eax
jnz 004501af

call 004501c1

jle 004501d8
jmp 004501d8

pop edx
jmp 0045012a

push dword ptr[edi]
jmp 0045013c

pop ecx
je 00450147
mov si,3b5d
sub ecx,5e73d7dd
xor ecx,15066f52
je 0045015d
push eax
push edx
pop edx
pop ebx
add ecx,55149223
sub esi,24f590ce
push ecx
push 65debda
mov bh,0eb
pop edx
pop dword ptr[edi]
mov ebx,0a4dc97e
sub edi,56b5872c
add edi,56b58728
push ecx
pop edx
dec eax
jnz 004501af
call 0045019e

pop ebx
jmp 004501e9


是不是觉得这些代码难读
哈哈
是的
我现在读起来也感到好笑
因为这是CPU顺序处理机器码时的反汇编
所以
要把所有的CALL和跳转去掉

另外
这是ASPR壳
所以变态

当然
既然是DUMP一段
并不是像上面那样随便给出来让各位看
所以
下面的即是分离出来的代码
去掉了花指令

push dword ptr[edi]
pop ecx
mov si,3b5d
sub ecx,5e73d7dd
xor eax,15066f52
add ecx,55149223
sub esi,24590ce
push ecx
pop dword ptr[edi]
sub edi,2
dec eax
jnz ****

不错吧
这下就通俗罗

是的
这一段代码是SMC处理
但处理后的结果是用来做什么至少现在我还不清楚
因为我只跟到这里
后面还没去看

看了再说
也可能不说,很多事都是说不清的,就是这样


看到ASPR的代码
才发现
mov a,b
可以写成
push a
pop b
减二可以写成
sub edi,56b5872c
add edi,56b58728


确实变态

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

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
自己先坐
2007-1-27 18:58
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
我不懂什么叫SMC,我只觉得楼主给的代码像花指令。
2007-1-27 20:07
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
不懂...
2007-1-27 20:08
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
5
同意3楼的说法~
SMC应该是动态代码更改(注入)技术吧
2007-1-27 20:09
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
SMC跟注入是两码事
2007-1-28 03:32
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
SMC -> Self Modify Code
2007-1-28 03:32
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
8
最初由 fonge 发布
才发现
mov a,b
可以写成
push a
pop b
减二可以写成
sub edi,56b5872c
add edi,56b58728


笑死我了

这两句明显是错的嘛

明明就应该
mov a,b

=
push b
pop a


sub edi,56b5872c
add edi,56b58728

这是个减四
2007-1-29 09:56
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
好像是变形
2007-1-30 14:31
0
雪    币: 356
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 fonge 发布
笑死我了

这两句明显是错的嘛

明明就应该
........

无语,楼主的数学......
2007-1-30 15:31
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
2007-1-31 03:09
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
12
我现在也不知道到底哪个是对的了
2007-1-31 12:40
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
13
那些是很简单的等效指令,有兴趣可以看看翻译区关于多态病毒的技术文章。
2007-1-31 13:02
0
游客
登录 | 注册 方可回帖
返回
//