使用Beyond Compare比较Patch前后 VA_X.dll文件的变化:
ShellCode分析:
1F62D3C7
.
-
E9
346C0A00
JMP
VA_X.1F6D4000
; Jmp to ShellCode
1F6D4000
>
\
60
PUSHAD
; ShellCode Start
1F6D4001
.
9C
PUSHFD
1F6D4002
.
8B4C24
24
MOV
ECX
,DWORD
PTR
SS
:[
ESP
+
0x24
]
1F6D4006
.
8139
4F757470
CMP
DWORD
PTR
DS
:[
ECX
],
0x7074754F
; if OutputDebugStringA
1F6D400C
.
75
1A
JNZ
SHORT
VA_X.1F6D4028
1F6D400E
.
8179
04
75744465
CMP
DWORD
PTR
DS
:[
ECX
+
0x4
],
0x65447475
1F6D4015
.
75
11
JNZ
SHORT
VA_X.1F6D4028
1F6D4017
.
8179
08
62756753
CMP
DWORD
PTR
DS
:[
ECX
+
0x8
],
0x53677562
1F6D401E
.
75
08
JNZ
SHORT
VA_X.1F6D4028
1F6D4020
. C74424
20
58406D1F
MOV
DWORD
PTR
SS
:[
ESP
+
0x20
],
VA_X.1F6D4058
1F6D4028
>
8139
56697274
CMP
DWORD
PTR
DS
:[
ECX
],
0x74726956
; if VirtualProtect
1F6D402E
.
75
1A
JNZ
SHORT
VA_X.1F6D404A
1F6D4030
.
8179
04
75616C50
CMP
DWORD
PTR
DS
:[
ECX
+
0x4
],
0x506C6175
1F6D4037
.
75
11
JNZ
SHORT
VA_X.1F6D404A
1F6D4039
.
8179
08
726F7465
CMP
DWORD
PTR
DS
:[
ECX
+
0x8
],
0x65746F72
1F6D4040
.
75
08
JNZ
SHORT
VA_X.1F6D404A
1F6D4042
. C74424
20
8B406D1F
MOV
DWORD
PTR
SS
:[
ESP
+
0x20
],
VA_X.1F6D408B
1F6D404A
>
9D
POPFD
1F6D404B
.
61
POPAD
1F6D404C
.
8945
E4
MOV
DWORD
PTR
SS
:[
EBP
-
0x1C
],
EAX
1F6D404F
.
837D
E4
00
CMP
DWORD
PTR
SS
:[
EBP
-
0x1C
],
0x0
1F6D4053
.
-
E9
7493F5FF
JMP
VA_X.1F62D3CC
1F6D4058
.
8B0424
MOV
EAX
,DWORD
PTR
SS
:[
ESP
]
; Hook OutputDebugStringA
1F6D405B
.
8178
1E
33511433
CMP
DWORD
PTR
DS
:[
EAX
+
0x1E
],
0x33145133
1F6D4062
.
75
23
JNZ
SHORT
VA_X.1F6D4087
1F6D4064
. C745 EC C0BA3066
MOV
DWORD
PTR
SS
:[
EBP
-
0x14
],
0x6630BAC0
; !! Patch CRC
1F6D406B
. C745 E4
3457866C
MOV
DWORD
PTR
SS
:[
EBP
-
0x1C
],
0x6C865734
1F6D4072
. C745 E0
73B888F5
MOV
DWORD
PTR
SS
:[
EBP
-
0x20
],
0xF588B873
1F6D4079
. C745 DC CD9D2AE0
MOV
DWORD
PTR
SS
:[
EBP
-
0x24
],
0xE02A9DCD
1F6D4080
. C745 D8
13BB96E8
MOV
DWORD
PTR
SS
:[
EBP
-
0x28
],
0xE896BB13
1F6D4087
>
33C0
XOR
EAX
,
EAX
1F6D4089
.
40
INC
EAX
1F6D408A
. C3
RETN
1F6D408B
. C64424
0C
40
MOV
BYTE
PTR
SS
:[
ESP
+
0xC
],
0x40
; Hook VirtualProtect
1F6D4090
.
833D
0010D01E
00
CMP
DWORD
PTR
DS
:[
0x1ED01000
],
0x0
1F6D4097
.
74
1B
JE
SHORT
<
JMP.
&
KERNEL32.VirtualProtect
>
1F6D4099
. C705 DFC2D81E
33C040E9
MOV
DWORD
PTR
DS
:[
0x1ED8C2DF
],
0xE940C033
; Patch-1
1F6D40A3
. C705 E3C2D81E
39060000
MOV
DWORD
PTR
DS
:[
0x1ED8C2E3
],
0x639
1F6D40AD
. C605
316AE01E
32
MOV
BYTE
PTR
DS
:[
0x1EE06A31
],
0x32
; Patch-2
1F6D40B4
>-
FF25
34426E1F
JMP
DWORD
PTR
DS
:[<&
KERNEL32.VirtualProtect
>]
Patch-1:
1ED8C2DF
8D
45
B0
68
5C
42
29
1F
1ED8C2DF
8D45
B0
LEA
EAX
,DWORD
PTR
SS
:[
EBP
-
0x50
]
1ED8C2E2
68
5C42291F
PUSH
VA_X.1F29425C
-->
1ED8C2DF
33
C0
40
E9
39
06
00
00
1ED8C2DF
33C0
XOR
EAX
,
EAX
1ED8C2E1
40
INC
EAX
1ED8C2E2
E9
39060000
JMP
VA_X.1ED8C920
; skip initial Lic Check
Patch-2:
1EE06A30
7F
14
1EE06A30
/
7F
14
JG
SHORT
VA_X.1EE06A46
->
1EE06A30
7F
32
1EE06A30
/
7F
32
JG
SHORT
VA_X.1EE06A64
; Fuck "Trial Extension Mode"
About对话框显示信息分析:
在注册表中设置如下信息:
[HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X]
"UserKey"=" You will never defeat the riddle of the Black Riders... "
"UserName"="xxxx"
"UserKey"=" You will never defeat the riddle of the Black Riders... "
"UserName"="xxxx"
BRD补丁会设置上述两个键值,其中UserKey项为BRD的广告;UserName项为在Patch界面输入的内容,默认为主机名。
按照VAX的设计,如果检测显示已授权的话,则从注册表中读取信息并在About对话框中显示。将检测机制暴破掉以后,只需保证 UserKey和UserName的均为非空字符串即可。
BRD补丁Patch-2的作用就是干预下UserName的显示,抑制"Trial Extension Mode"信息的显示。