能力值:
( LV15,RANK:440 )
|
-
-
2 楼
这是个难以形容的话题
|
能力值:
( LV12,RANK:440 )
|
-
-
3 楼
记得论坛上有大牛们写过VMP的分析文档
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
哪位有空儿帮分析个东西啊?可以有偿。。这个VMP太让我蛋疼了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
VMP要回溯...貌似不可能,只能说,通过分析来找到开头处!然后分析
|
能力值:
( LV9,RANK:370 )
|
-
-
6 楼
VM处理过的代码通过堆栈回溯,不太可能了。
一般用VM的处理都是整个Call处理,或许Call中部分Code处理。比如下面:
004CE2B8 . 55 push ebp
004CE2B9 . 8BEC mov ebp, esp
004CE2BB . 50 push eax
004CE2BC . B8 08000000 mov eax, 8
004CE2C1 > 81C4 04F0FFFF add esp, -0FFC
004CE2C7 . 50 push eax
004CE2C8 . 48 dec eax
004CE2C9 .^ 75 F6 jnz short 004CE2C1
004CE2CB . 8B45 FC mov eax, dword ptr [ebp-4]
004CE2CE . 83C4 EC add esp, -14
004CE2D1 . 53 push ebx
004CE2D2 . 56 push esi
004CE2D3 . 57 push edi
004CE2D4 . 8995 F87FFFFF mov dword ptr [ebp+FFFF7FF8], edx
004CE2DA . 8985 EC7FFFFF mov dword ptr [ebp+FFFF7FEC], eax
004CE2E0 .- E9 A060DB21 jmp 22284385 ; 这里跳到了VM里面处理。在Runtrace的记录中,004CE2E0直接到了另外一个内存片地址。这里肯定是Call的入口或者附近了。
..............省略XXX行.............
22284385 68 38952722 push 22279538 ; ASCII "筑!広"
2228438A ^ E9 51F5FEFF jmp 222738E0
222738E0 60 pushad
222738E1 9C pushfd
222738E2 FC cld
222738E3 E8 00000000 call 222738E8
222738E8 5F pop edi
222738E9 81EF E8382722 sub edi, 222738E8
222738EF 8BC7 mov eax, edi
..............省略XXX行.............
我有个小技巧,用OD的Runtrace,在日志中,看ImageAddr,不在同一个内存片的连续2条指令。
那么很可能就是Call的入口地址。
方法很土,我很菜。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
可是VMP了之后都是循环,要怎么Runtrace?不是一直在循环。。
|
能力值:
( LV3,RANK:30 )
|
-
-
8 楼
VMP 是以 handler 模拟 x86,中间插入大量无效 handler 作为干扰 ,用 runtrace 跟踪要有技巧,
通用逆向模式(单指我等菜鸟,可用 脚本提取 或 写个插件记录提取关键数值,特定监控相关的 handler
那么基本简易被虚拟的算法,可完整逆向还原出来 。。。。。。 呵呵
(现行的所有关于 vmp 的插件没有做到(估计后台有,但没放出)
( 做的最出色的是该是 np 和 ximo ),至于老外的那个什么(名字忘了),我看就算了。。
把每个 handler 分析一次,这是最基本的入门
|
|
|