能力值:
( LV4,RANK:50 )
|
-
-
26 楼
厉害啊,以楼主的功力绝对天下无敌,举世最强,快出脱壳机吧,等好久了,就等你出手了
|
能力值:
( LV12,RANK:360 )
|
-
-
27 楼
膜拜........
|
能力值:
(RANK:330 )
|
-
-
28 楼
识别垃圾代码需要人肉收集成对的垃圾指令,还是根据指令读\写\覆盖的特征来识别垃圾指令才是王道。
|
能力值:
( LV3,RANK:30 )
|
-
-
29 楼
我只是好奇,逆向VMP需要简化(清除垃圾指令吗?由于完全不懂,故此好奇)
|
能力值:
( LV7,RANK:100 )
|
-
-
30 楼
我也是完全不懂,只是觉得在大量垃圾指令面前,应该先去掉垃圾指令才对。不管是对vmprotect,还是其他的壳。
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
向研究VMProtec的高手致敬~
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
服了。。一个下午到了这个程度了,估计离插件泄出不远了。。HOHO
|
能力值:
( LV4,RANK:50 )
|
-
-
33 楼
强大.....学习ing
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
没懂~楼主能详细点么?
|
能力值:
( LV4,RANK:50 )
|
-
-
35 楼
同等~~~~~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
膜拜大牛~~
|
能力值:
( LV5,RANK:60 )
|
-
-
37 楼
完全看不懂,无法学习
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
很强大 楼主发出来
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
好东西都是普通会员发的
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
不懂 围观·········
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
支持一下啊 期待了啊
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
除了佩服,没啥
|
能力值:
( LV7,RANK:110 )
|
-
-
43 楼
占个位子 等BIN
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
关注中。。。。。。。。。
|
能力值:
( LV7,RANK:100 )
|
-
-
45 楼
这几天又断断续续研究了一下,在完全去除花指令后,提取其有用的指令,对每个虚拟机dispatch函数进行特征定义,然后可以打印所有的dispatch函数:
(期间还需要自动找到dispatch函数表、取指令位置、dispath函数的解密算法并进行自动解密)
typedef struct _OPCSIG
{
char* asmsig;
int id;
BOOL bRecognized;
}OPCSIG;
OPCSIG opcsig[] =
{
{
"and al,0x3C\0"
"mov edx,[ebp]\0"
"add ebp,4\0"
"mov [eax+edi],edx\0\0",
OPC_POPREG,
FALSE
},
{
"and al,0x3C\0"
"mov edx,[eax+edi]\0"
"sub ebp,4\0"
"mov [ebp],edx\0\0",
OPC_PUSHREG,
FALSE
},
{
//会 inc esi
"mov dx,[ebp]\0"
"add ebp,2\0"
"mov [eax+edi],dx\0\0",
OPC_POPWORDREG,
FALSE
},
{
//下面2个相同,一个正常执行,一个倒序
//"movzx eax,byte ptr [esi]\0"
"add esi,1\0"
"mov ax,[eax+edi]\0"
"sub ebp,2\0"
"mov [ebp],ax\0\0",
OPC_PUSHWORDREG,
FALSE
},
执行一下:
D:\exer\vmp\Debug>vmp.exe d:\NOTEPAD.vmp.EXE
VMOpcodeGetAddr = 0106B44F
VMEntry = 01043D6A
ecx VMDispatchTable = 0106C045
xor ecx,0x9D602FCA
add ecx,0x0
dwVMOpcodeGetAddr = 0106B2C6
00 0106BAAF: call api
01 0106BA78: pushreg
02 0106AEB1: write byte mem
03 0106B962: jmp
04 0106AC58: div word
05 0106C5F4: write byte mem
06 0106CCCE: popreg word
07 0106AD92: nand byte
08 0106BDCB: calc hash
09 0106B1C0: read word mem
0A 0106B00F: read dword mem
0B 0106B00F: read dword mem
0C 0106C5F4: write byte mem
0D 0106D00E: pushreg word
0E 0106AEA0: pushrdtsc
0F 0106BB58: pushsximm byte
10 0106CCCE: popreg word
11 0106B1C0: read word mem
12 0106AC87: pushreg word byte
13 0106BB2B: push esp
14 0106B17F: push sp
15 0106AC87: pushreg word byte
16 0106BB2B: push esp
17 0106AEA0: pushrdtsc
18 0106AC58: div word
19 0106B962: jmp
1A 0106C467: write dword mem
1B 0106C467: write dword mem
1C 0106C689: shl byte
1D 0106B17F: push sp
1E 0106CB39: read word mem
1F 0106B35B: shrd
20 0106B6E3: write word mem
21 0106ACB2: shr dword
22 0106B7FD: nand word
23 0106AF81: shr byte
24 0106BC4E: add word
25 0106AEF3: add byte
26 0106B6F6: write word mem
27 0106CCB2: shl dword
28 0106BE40: mul word
29 0106B034: read word mem byte
2A 0106CCCE: popreg word
2B 0106AC58: div word
2C 0106B0EF: read word mem byte
2D 0106BAAF: call api
2E 0106C467: write dword mem
2F 0106AF81: shr byte
30 0106B4F8: set sp
31 0106B834: jmp
32 0106C53F: write dword mem
33 0106BB58: pushsximm byte
34 0106AEB1: write byte mem
35 0106CCB7: add dword
36 0106BCC6: popreg word byte
37 0106B034: read word mem byte
38 0106B55E: div dword
39 0106B0EF: read word mem byte
3A 0106CCB2: shl dword
3B 0106B9BC: nand dword
3C 0106B962: jmp
3D 0106CCB7: add dword
3E 0106B834: jmp
3F 0106B1C0: read word mem
40 0106AD6B: pushwordimm byte
41 0106BBD5: cpuid
42 0106B35B: shrd
43 0106BB2B: push esp
44 0106B35B: shrd
45 0106BBD5: cpuid
46 0106B4F8: set sp
47 0106ACB2: shr dword
48 0106B034: read word mem byte
49 0106B4F8: set sp
4A 0106BBD5: cpuid
4B 0106B962: jmp
4C 0106BE40: mul word
4D 0106BB2B: push esp
4E 0106B9BC: nand dword
4F 0106B2F2: shr word
50 0106BB2B: push esp
51 0106C467: write dword mem
52 0106B834: jmp
53 0106AD92: nand byte
54 0106B8AF: VMExit
55 0106BDCB: calc hash
56 0106BE40: mul word
57 0106AD92: nand byte
58 0106AC87: pushreg word byte
59 0106C467: write dword mem
5A 0106CB39: read word mem
5B 0106C53F: write dword mem
5C 0106BBF1: shld
5D 0106B00F: read dword mem
5E 0106BC73: read dword mem
5F 0106B55E: div dword
60 0106D00E: pushreg word
61 0106B1C0: read word mem
62 0106CE90: shl word
63 0106AD6B: pushwordimm byte
64 0106C979: set esp
65 0106B7FD: nand word
66 0106B7FD: nand word
67 0106B8AF: VMExit
68 0106CCB2: shl dword
69 0106AD6B: pushwordimm byte
6A 0106BB58: pushsximm byte
6B 0106C5F4: write byte mem
6C 0106B17F: push sp
6D 0106C467: write dword mem
6E 0106BB58: pushsximm byte
6F 0106C979: set esp
70 0106ACB2: shr dword
71 0106BDCB: calc hash
72 0106C979: set esp
73 0106CB39: read word mem
74 0106AC58: div word
75 0106B0EF: read word mem byte
76 0106BBF1: shld
77 0106BCC6: popreg word byte
78 0106C53F: write dword mem
79 0106AD6B: pushwordimm byte
7A 0106AEF3: add byte
7B 0106C53F: write dword mem
7C 0106B4F8: set sp
7D 0106B35B: shrd
7E 0106B034: read word mem byte
7F 0106BE40: mul word
80 0106ACB2: shr dword
81 0106AC87: pushreg word byte
82 0106CCB2: shl dword
83 0106C53F: write dword mem
84 0106B962: jmp
85 0106B9BC: nand dword
86 0106B2F2: shr word
87 0106BAAF: call api
88 0106C4EC: popreg
89 0106B7FD: nand word
8A 0106BA78: pushreg
8B 0106B0EF: read word mem byte
8C 0106BBD5: cpuid
8D 0106BC73: read dword mem
8E 0106AE25: pushwordimm
8F 0106C90C: popfd
90 0106C4EC: popreg
91 0106B6F6: write word mem
92 0106BA78: pushreg
93 0106CCCE: popreg word
94 0106ADAF: write dword mem
95 0106AEF3: add byte
96 0106CCB7: add dword
97 0106AE25: pushwordimm
98 0106C4EC: popreg
99 0106CB39: read word mem
9A 0106BA78: pushreg
9B 0106AD6B: pushwordimm byte
9C 0106B00F: read dword mem
9D 0106C90C: popfd
9E 0106B962: jmp
9F 0106B55E: div dword
A0 0106C4EC: popreg
A1 0106C4DA: pushdwordimm
A2 0106BA78: pushreg
A3 0106BDCB: calc hash
A4 0106B55E: div dword
A5 0106BBD5: cpuid
A6 0106BCC6: popreg word byte
A7 0106CCCE: popreg word
A8 0106C4EC: popreg
A9 0106CCB2: shl dword
AA 0106BA78: pushreg
AB 0106BC4E: add word
AC 0106B034: read word mem byte
AD 0106B6F6: write word mem
AE 0106CCCE: popreg word
AF 0106B2F2: shr word
B0 0106C4EC: popreg
B1 0106BA78: pushreg
B2 0106C4DA: pushdwordimm
B3 0106C53F: write dword mem
B4 0106B7FD: nand word
B5 0106BC73: read dword mem
B6 0106B0EF: read word mem byte
B7 0106C4EC: popreg
B8 0106BE40: mul word
B9 0106BA78: pushreg
BA 0106B0EF: read word mem byte
BB 0106AC58: div word
BC 0106B4F8: set sp
BD 0106AC87: pushreg word byte
BE 0106CE90: shl word
BF 0106C4EC: popreg
C0 0106CE90: shl word
C1 0106BA78: pushreg
C2 0106AF81: shr byte
C3 0106B6F6: write word mem
C4 0106CCB7: add dword
C5 0106BC73: read dword mem
C6 0106AD92: nand byte
C7 0106C4EC: popreg
C8 0106B962: jmp
C9 0106BA78: pushreg
CA 0106CE90: shl word
CB 0106B9BC: nand dword
CC 0106C53F: write dword mem
CD 0106C90C: popfd
CE 0106BB2B: push esp
CF 0106C4EC: popreg
D0 0106B35B: shrd
D1 0106BA78: pushreg
D2 0106CB39: read word mem
D3 0106CCB2: shl dword
D4 0106D00E: pushreg word
D5 0106AEA0: pushrdtsc
D6 0106CB39: read word mem
D7 0106C4EC: popreg
D8 0106CE90: shl word
D9 0106BA78: pushreg
DA 0106BC73: read dword mem
DB 0106AC87: pushreg word byte
DC 0106AE25: pushwordimm
DD 0106AC87: pushreg word byte
DE 0106AC58: div word
DF 0106C4EC: popreg
E0 0106AC87: pushreg word byte
E1 0106BA78: pushreg
E2 0106AC58: div word
E3 0106B6F6: write word mem
E4 0106AEF3: add byte
E5 0106C467: write dword mem
E6 0106AEF3: add byte
E7 0106C4EC: popreg
E8 0106CCB2: shl dword
E9 0106BA78: pushreg
EA 0106C53F: write dword mem
EB 0106AE25: pushwordimm
EC 0106CCB7: add dword
ED 0106B2F2: shr word
EE 0106AC87: pushreg word byte
EF 0106C4EC: popreg
F0 0106CCB2: shl dword
F1 0106BA78: pushreg
F2 0106ADAF: write dword mem
F3 0106AEF3: add byte
F4 0106B8F7: pushsximm word
F5 0106AEA0: pushrdtsc
F6 0106B4F8: set sp
F7 0106C4EC: popreg
F8 0106AC58: div word
F9 0106BA78: pushreg
FA 0106C979: set esp
FB 0106B35B: shrd
FC 0106BBF1: shld
FD 0106CCCE: popreg word
FE 0106B55E: div dword
FF 0106C4EC: popreg
|
能力值:
( LV3,RANK:30 )
|
-
-
46 楼
一眼看去和 NP 的 FKVMP 有点像了,顶一下
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
膜拜下```
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
vm要倒下了 以后都云壳?
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
[I] {
//会 inc esi
"mov dx,[ebp]\0"
"add ebp,2\0"
"mov [eax+edi],dx\0\0",
OPC_POPWORDREG,
FALSE
},[/I]
一个handler不一定每次都以这样的形式出现吧.
vmp的handler代码不是固定的,对不同的加密,handler是不同的.
|
能力值:
( LV7,RANK:100 )
|
-
-
50 楼
[QUOTE=histimes;903297]{
//会 inc esi
"mov dx,[ebp]\0"
"add ebp,2\0"
"mov [eax+edi],dx\0\0",
OPC_POPWORDREG,
FALSE
},
一个handler不一定每次都以这样的形式出...[/QUOTE]
OPCSIG结构中的特征是去除了解密代码后的特征,解密代码每次都不一样,但是去掉了解密代码后的指令每次都是一样的。
|
|
|