mov eax,0x123456
进入VM前寄存器和堆栈的值
EAX AAAAAAAA
ECX CCCCCCCC
EDX DDDDDDDD
EBX BBBBBBBB
ESP 0018FEE8
EBP EEEEEEEE
ESI 99999999
EDI 88888888
EIP 00427079 TestVmp_.00427079
C 0 ES 002B 32位 0(FFFFFFFF)
P 1 CS 0023 32位 0(FFFFFFFF)
A 0 SS 002B 32位 0(FFFFFFFF)
Z 0 DS 002B 32位 0(FFFFFFFF)
S 0 FS 0053 32位 7EFDD000(FFF)
T 0 GS 002B 32位 0(FFFFFFFF)
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000206 (NO,NB,NE,A,NS,PE,GE,G)
ST0 empty 0.0
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 0.0
ST7 empty 0.0
3 2 1 0 E S P U O Z D I
FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)
FCW 027F Prec NEAR,53 掩码 1 1 1 1 1 1
0018FEE8 00000000
0018FEEC 00000000
0018FEF0 7EFDE000
0018FEF4 F3B5AB2F
0018FEF8 00000000
0018FEFC 00000000
0018FF00 7EFDE000
0018FF04 00425276 TestVmp_.00425276
0018FF08 9938AD55
0018FF0C 0018FF1C
0018FF10 0018FF70
0018FF14 0042546A TestVmp_.0042546A
0018FF18 F3EA9E37
0018FF1C FFFFFFFE
0018FF20 0018FF2C
------------------------------------------------------------------------------------------------------
Log data, 条目 10
地址=0048417C
消息=0x48417c-->func13_call_dw[ebp]
Log data, 条目 8
地址=004834EE
消息=0x4834ee-->func25_retn_dw[esp]
Log data, 条目 4
地址=004851DF
消息=0x4851df-->func24_ jmp_dw[ebp]
-----------------------------------------------------
dispatch地址
00484256 FF7424 38 push dword ptr ss:[esp+0x38] ; TestVmp_.00483535
0048425A C2 3C00 retn 0x3C
----------------------------------------------------------------------------------------------------
func3_mov_dw[edi]_dw[ebp] | reg=3c 0 ;VM入口的 push 0
func11_push_dw[ebp]_dw[esi] | reg=ff 7647153b
func40_add_dw[ebp]_[ebp+4] | reg=ff 7647153b 202
func3_mov_dw[edi]_dw[ebp] | reg=04 202
func3_mov_dw[edi]_dw[ebp] | reg=34 7647153b ;类似校验
func3_mov_dw[edi]_dw[ebp] | reg=30 99999999
func3_mov_dw[edi]_dw[ebp] | reg=18 dddddddd
func3_mov_dw[edi]_dw[ebp] | reg=14 bbbbbbbb
func3_mov_dw[edi]_dw[ebp] | reg=04 bbbbbbbb
func3_mov_dw[edi]_dw[ebp] | reg=24 eeeeeeee
func3_mov_dw[edi]_dw[ebp] | reg=08 206
func3_mov_dw[edi]_dw[ebp] | reg=0c 88888888
func3_mov_dw[edi]_dw[ebp] | reg=20 cccccccc
func3_mov_dw[edi]_dw[ebp] | reg=38 aaaaaaaa ;保存寄存器
func3_mov_dw[edi]_dw[ebp] | reg=1c 5ceb61a0
func3_mov_dw[edi]_dw[ebp] | reg=1c 5659631f ;保存两个常量
func6_push_dw[ebp]_dw[edi] | reg=08 206
func11_push_dw[ebp]_dw[esi] | reg=ff aac8e133
func11_push_dw[ebp]_dw[esi] | reg=ff aac8de94
func27_push_dw[ebp]_w[esi] | reg=ff fffffeff
func6_push_dw[ebp]_dw[edi] | reg=08 206
func6_push_dw[ebp]_dw[edi] | reg=08 206
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff fffffdf9 286 ; nand(206,206)
func3_mov_dw[edi]_dw[ebp] | reg=1c 286
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff 0 246 ; nand( nand(206,206) , nand(100,100) ) == and (206 , 100)
func3_mov_dw[edi]_dw[ebp] | reg=2c 246
func3_mov_dw[edi]_dw[ebp] | reg=00 0 ; 保存结果到VM寄存器
func12_push_dw[ebp]_ebp | reg=ff 18fed8
func29_push_w[ebp]_b[esi] | reg=ff 4
func6_push_dw[ebp]_dw[edi] | reg=2c 246 ; 取出 and (206 , 100) 的标志
func6_push_dw[ebp]_dw[edi] | reg=2c 246
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff fffffdb9 282 ;nand(246,246)
func3_mov_dw[edi]_dw[ebp] | reg=00 282
func31_ push_dw[ebp]_b[esi] | reg=ff ffffffbf
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff 40 202 ; nand( nand(246,246), nand(40,40) ) == and (246 , 40)
func3_mov_dw[edi]_dw[ebp] | reg=00 202
func5_shr_dw[ebp]_b[ebp+4] | reg=ff 4 202 ;将 and (246 , 40) 的结果右移动4位
func3_mov_dw[edi]_dw[ebp] | reg=00 202
func40_add_dw[ebp]_[ebp+4] | reg=ff 18fedc 202
func3_mov_dw[edi]_dw[ebp] | reg=00 202 ;右移的结果与 18fed8 相加得到 18fedc
func7_push_dw[ebp]_dw[ss:mm] | reg=ff aac8e133 ;取出 18fedc 中的值
func3_mov_dw[edi]_dw[ebp] | reg=28 aac8e133
func3_mov_dw[edi]_dw[ebp] | reg=1c aac8de94
func3_mov_dw[edi]_dw[ebp] | reg=10 aac8e133
func6_push_dw[ebp]_dw[edi] | reg=28 aac8e133
func12_push_dw[ebp]_ebp | reg=ff 18fedc
func7_push_dw[ebp]_dw[ss:mm] | reg=ff aac8e133
func3_mov_dw[edi]_dw[ebp] | reg=10 aac8e133
func12_push_dw[ebp]_ebp | reg=ff 18fedc
func7_push_dw[ebp]_dw[ss:mm] | reg=ff aac8e133
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff 55371ecc 206 ;nand(aac8e133,aac8e133)
func3_mov_dw[edi]_dw[ebp] | reg=1c 206
func11_push_dw[ebp]_dw[esi] | reg=ff 557f7e2b
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff aa808110 282
func3_mov_dw[edi]_dw[ebp] | reg=28 282
func11_push_dw[ebp]_dw[esi] | reg=ff aa8081d4
func6_push_dw[ebp]_dw[edi] | reg=10 aac8e133
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff 55371e08 202
func3_mov_dw[edi]_dw[ebp] | reg=28 202
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff 4860e7 206
func3_mov_dw[edi]_dw[ebp] | reg=28 206
func3_mov_dw[edi]_dw[ebp] | reg=00 4860e7 ;xor(557f7e2b,aac8e133) == 4860e7
func6_push_dw[ebp]_dw[edi] | reg=34 7647153b
func6_push_dw[ebp]_dw[edi] | reg=0c 88888888
func6_push_dw[ebp]_dw[edi] | reg=24 eeeeeeee
func6_push_dw[ebp]_dw[edi] | reg=20 cccccccc
func6_push_dw[ebp]_dw[edi] | reg=04 bbbbbbbb
func6_push_dw[ebp]_dw[edi] | reg=18 dddddddd
func6_push_dw[ebp]_dw[edi] | reg=30 99999999
func6_push_dw[ebp]_dw[edi] | reg=38 aaaaaaaa
func6_push_dw[ebp]_dw[edi] | reg=2c 246
func6_push_dw[ebp]_dw[edi] | reg=0c 88888888 ; 将寄存器压入栈
func6_push_dw[ebp]_dw[edi] | reg=1c 206
func6_push_dw[ebp]_dw[edi] | reg=34 7647153b ;校验值
func11_push_dw[ebp]_dw[esi] | reg=ff 89b8eac5
func40_add_dw[ebp]_[ebp+4] | reg=ff 0 257
func3_mov_dw[edi]_dw[ebp] | reg=08 257 ;值保存在堆栈中
func6_push_dw[ebp]_dw[edi] | reg=3c 0 ;VM入口的 push 0
func6_push_dw[ebp]_dw[edi] | reg=00 4860e7
func24_jmp_dw[ebp] | reg=ff ;跳转
----------------------------------------------------------------------------------------------------------------------------------------------
func3_mov_dw[edi]_dw[ebp] | reg=2c 0 ;push 0
func11_push_dw[ebp]_dw[esi] | reg=ff 7647153b
func40_add_dw[ebp]_[ebp+4] | reg=ff 7647153b 202
func3_mov_dw[edi]_dw[ebp] | reg=00 202
func3_mov_dw[edi]_dw[ebp] | reg=38 7647153b ;校验
func3_mov_dw[edi]_dw[ebp] | reg=3c 206 ; nand(aac8e133,aac8e133) 的 EFL存入
func6_push_dw[ebp]_dw[edi] | reg=3c 206
func12_push_dw[ebp]_ebp | reg=ff 18feb4
func7_push_dw[ebp]_dw[ss:mm] | reg=ff 206
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff fffffdf9 286 ;nand(206,206)
func3_mov_dw[edi]_dw[ebp] | reg=34 286
func11_push_dw[ebp]_dw[esi] | reg=ff 557f7e2b
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff 4 202
func3_mov_dw[edi]_dw[ebp] | reg=14 202
func11_push_dw[ebp]_dw[esi] | reg=ff aa8081d4
func6_push_dw[ebp]_dw[edi] | reg=3c 206
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff 557f7c29 202
func3_mov_dw[edi]_dw[ebp] | reg=24 202
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff aa8083d2 286
func3_mov_dw[edi]_dw[ebp] | reg=28 286
func3_mov_dw[edi]_dw[ebp] | reg=10 aa8083d2
func3_mov_dw[edi]_dw[ebp] | reg=1c 88888888
func3_mov_dw[edi]_dw[ebp] | reg=24 246
func3_mov_dw[edi]_dw[ebp] | reg=04 aaaaaaaa
func3_mov_dw[edi]_dw[ebp] | reg=0c 99999999
func3_mov_dw[edi]_dw[ebp] | reg=14 dddddddd
func3_mov_dw[edi]_dw[ebp] | reg=00 bbbbbbbb
func3_mov_dw[edi]_dw[ebp] | reg=34 cccccccc
func3_mov_dw[edi]_dw[ebp] | reg=28 eeeeeeee
func3_mov_dw[edi]_dw[ebp] | reg=08 88888888 ;保存寄存器
func3_mov_dw[edi]_dw[ebp] | reg=30 7647153b
func3_mov_dw[edi]_dw[ebp] | reg=08 206
func6_push_dw[ebp]_dw[edi] | reg=08 206
func12_push_dw[ebp]_ebp | reg=ff 18fee0
func7_push_dw[ebp]_dw[ss:mm] | reg=ff 206
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff fffffdf9 286
func3_mov_dw[edi]_dw[ebp] | reg=24 286
func27_push_dw[ebp]_w[esi] | reg=ff 8ff
func8_nor_dw[ebp]_dw[ebp+4] | reg=ff 200 206
func3_mov_dw[edi]_dw[ebp] | reg=24 206 ;and(206,286)
func15_pop_dw[eflag]_dw[ebp] | reg=ff ;类似反调试
func31_ push_dw[ebp]_b[esi] | reg=ff 4
func12_push_dw[ebp]_ebp | reg=ff 18fee0
func31_ push_dw[ebp]_b[esi] | reg=ff 4
func40_add_dw[ebp]_[ebp+4] | reg=ff 18fee4 206
func3_mov_dw[edi]_dw[ebp] | reg=30 206
func40_add_dw[ebp]_[ebp+4] | reg=ff 18fee8 206
func3_mov_dw[edi]_dw[ebp] | reg=18 206
func36_mov_dwEbp_dw[ebp] | reg=ff ;平衡堆栈
func11_push_dw[ebp]_dw[esi] | reg=ff 12345678
func3_mov_dw[edi]_dw[ebp] | reg=20 12345678 ;将一个常量压入堆
func11_push_dw[ebp]_dw[esi] | reg=ff 42708c ;出口跳转地址
func6_push_dw[ebp]_dw[edi] | reg=20 12345678 ;真实寄存器赋值
func6_push_dw[ebp]_dw[edi] | reg=34 cccccccc
func6_push_dw[ebp]_dw[edi] | reg=1c 88888888
func6_push_dw[ebp]_dw[edi] | reg=08 206
func6_push_dw[ebp]_dw[edi] | reg=28 eeeeeeee
func6_push_dw[ebp]_dw[edi] | reg=00 bbbbbbbb
func6_push_dw[ebp]_dw[edi] | reg=10 aa8083d2
func6_push_dw[ebp]_dw[edi] | reg=14 dddddddd
func6_push_dw[ebp]_dw[edi] | reg=0c 99999999
func6_push_dw[ebp]_dw[edi] | reg=10 aa8083d2
func6_push_dw[ebp]_dw[edi] | reg=38 7647153b
VM_RETN
----------------------------------------------------------------------------------------------------
VM后寄存器和堆栈值
EAX 12345678
ECX CCCCCCCC
EDX DDDDDDDD
EBX BBBBBBBB
ESP 0018FEE8
EBP EEEEEEEE
ESI 99999999
EDI 88888888
EIP 0042708C TestVmp_.0042708C
C 0 ES 002B 32位 0(FFFFFFFF)
P 1 CS 0023 32位 0(FFFFFFFF)
A 0 SS 002B 32位 0(FFFFFFFF)
Z 0 DS 002B 32位 0(FFFFFFFF)
S 0 FS 0053 32位 7EFDD000(FFF)
T 0 GS 002B 32位 0(FFFFFFFF)
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000206 (NO,NB,NE,A,NS,PE,GE,G)
ST0 empty 0.0
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 0.0
ST7 empty 0.0
3 2 1 0 E S P U O Z D I
FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)
FCW 027F Prec NEAR,53 掩码 1 1 1 1 1 1
0018FEE8 00000000
0018FEEC 00000000
0018FEF0 7EFDE000
0018FEF4 F3B5AB2F
0018FEF8 00000000
0018FEFC 00000000
0018FF00 7EFDE000
0018FF04 00425276 TestVmp_.00425276
0018FF08 9938AD55
0018FF0C 0018FF1C
0018FF10 0018FF70
0018FF14 0042546A TestVmp_.0042546A
0018FF18 F3EA9E37
0018FF1C FFFFFFFE
0018FF20 0018FF2C