首页
社区
课程
招聘
[原创]谈谈vmp的还原(2)
发表于: 2018-3-25 12:27 7390

[原创]谈谈vmp的还原(2)

2018-3-25 12:27
7390

写之前就在想该以一个怎样的方式阐述这些东西,最终还是决定以逆推的方式来描述

另外 先回答下问题 分析的是vmp的主程序,很早的版本


0x01 虚拟化后

测试的指令

先看看是cmp被vm之后的情况,因为既然大S提到了这个,看了他的帖子,所以叫他大S


0x10 原由

那么我们先来看看是如何得到这些hex


代码很简单

匹配就行了,那么我们来看看匹配表,注意到上一篇的handle_size == 1488 / 8


恩,vmp实现虚拟引擎的核心可以说就是这些虚拟规则。注意到我是用的这些,而不是186个,因为在写之前,我担心版本太老,所以又去逆了逆v2.12.3,发现框架太体差不多,不过代码量优化了很多。还有昨天看了看大Z哥的帖子,对里面有句话感触很深(它们的价值来自于本身的神秘面纱)。但毕竟吧,vmp也3.x,代码重构了,我想也可以谈一谈了。扯远了。

查看引用表的地方


在看看RandIndexArray的引用,来到这个地方

注意到这里可能是乱序之后的,那么如果说不乱序的话,这个表和vm_opcode的应该是一一对应的关系

举例:


定位到handler_table,

则有

Handle_471094:

LODS BYTE PTR DS:[ESI]

PUSH DWORD PTR DS:[EDI+EAX*4]

对应

01 02 02 00 00 00 00 00

如下:

Btw:不保证全对哈,最好看看,哈哈

接着我们看一看Vmp_GetVmHandleIndex的调用


ida的有点乱,把这个函数整理之后

1.       判断vm_mnemonic

2.       再判断寻址方式以及类型

继续,我们看看vm_mnemonic怎么得到的

可以发现由传参决定并对于某些方式递归调用

继续寻找怎么来的



定位到cmp。看看vmp是如何实现对cmp,jcc的膨胀的


首先可以很直观的看到,在早期版本中

把sub cmp sbb放在一起来处理

那么看看是如何usedisasmstruct的

结合刚开始给的,则有先读operand[1]

注意到:

然后其他的对应膨胀规则看看就明白了

分析sub_485884


分析sub_4857DC


可以看到这整套就是一个计算好初始eflags,然后压入_context的过程

分析sub_4858E0

这里就没注释了,可以对照规则

至此,早期版本中的cmp就这样vm了

一个细节的地方

注意到Vmp_SetEsiStruct函数

那么我们可以这样理解,在早期版本

vm的基本单位是指令,而指令通过反编译得到 ----> _struct_disasm

加上一个list,抽象出来

注意到esi是怎样生成的,通过那些规则,故


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-1-11 19:09 被kanxue编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢大神分享,看不懂呀,太难了。
2018-3-25 13:18
0
雪    币: 775
活跃值: (2292)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
mark  收藏学习 
Ps:除了膜拜还能有什么  !
2018-3-25 14:23
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2018-3-25 14:28
0
雪    币: 14717
活跃值: (3185)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享。
2018-3-25 17:54
0
雪    币: 3279
活跃值: (1997)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这是留给博士看的吗?我们小学生根本看不懂。
2018-3-25 18:42
0
雪    币: 58
活跃值: (1135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mark下
2018-3-25 22:26
0
雪    币: 59
活跃值: (1516)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不错,  支持下.  多年前就听过大牛们玩vmp/tmd主程序,还能加出不带垃圾代码的vmp试练品.
2018-3-26 10:18
0
雪    币: 11716
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
#寻宝大战#祝看雪19岁快乐!
2019-1-11 20:16
0
游客
登录 | 注册 方可回帖
返回
//