能力值:
( LV9,RANK:1210 )
|
-
-
2 楼
这个问题太大了。如果你有足够的时间精力,可以看看这本书
虚拟机--系统与进程的通用平台(英文影印版)
http://www.dearbook.com.cn/book/viewbook.aspx?pno=TS00110549
|
能力值:
( LV8,RANK:130 )
|
-
-
3 楼
我只想了解一下壳里面的虚拟机技术到底指什么呢?可不可以详细解释一下啊?最好打个具体的比方!谢谢!
|
能力值:
( LV8,RANK:130 )
|
-
-
4 楼
打个比方,虚拟机把MOV EAX,0都翻译成10行代码(复杂化),但效果一样,以后每次遇到MOV EAX,0这个指令都翻译成那10行,虚拟机技术是这个意思吗?
|
能力值:
( LV9,RANK:1210 )
|
-
-
5 楼
最初由 iamcrackin 发布 打个比方,虚拟机把MOV EAX,0都翻译成10行代码(复杂化),但效果一样,以后每次遇到MOV EAX,0这个指令都翻译成那10行,虚拟机技术是这个意思吗?
不是,你所说的复杂化大概是指代码变形或混淆。VM有自己的指令集,你可以假设那是个执行不同指令集的CPU。我也不大懂,最好看看专门的介绍文章。就壳而言可以看看VMProtect或Themida,Execryptor
|
能力值:
( LV8,RANK:130 )
|
-
-
6 楼
你也不太懂?不会吧!据说Themida的VM已经被你完全搞定了!
|
能力值:
( LV9,RANK:410 )
|
-
-
7 楼
虚拟机就是虚拟出一个CPU,它有它自己的REG,有它自己的指令集。
而大家迷惑的是它自己的指令集和我们常用的8X86指令不同。但又运行在8x86上。
比如:
mov eax,1 是8x86指令
在虚拟机上
vom xae,1 是虚拟机的指令 (胡诌的vom和寄存器xae)
编译后,vom xae,1是完全不同于8x86的指令了,可能变成了8x86上一系列的寄存器操等等。
对于壳来说,虚拟机不会太复杂,重要的是要把它的指令集和寄存器
给弄逆向出来,这样就明白了虚拟机它在干什么,后面的用8x86仿真还原它的指令就完了。
呵呵,玩单片机的年代,好想有个虚拟机,哎,现在虚拟机漫天飞。
|
能力值:
( LV8,RANK:130 )
|
-
-
8 楼
你看看我的理解对不对:比如他想表示这个指令mov eax,0(假如其2进制代码是101010)但他有自己的指令集,用他的指令集表示就是这样,www xxx,1,于是编译后的2进制就可能是111111,这样我们的OD反汇编就成了另一条指令了,比如反汇编成了push ecx.这样我们就不好分析了!对吗?
|
能力值:
( LV8,RANK:130 )
|
-
-
9 楼
那是在哪里编译的呢?它内含了自己的编译器,是吗?
|
能力值:
( LV9,RANK:410 )
|
-
-
10 楼
差不多把,但对于虚拟机来说,可能它的一条指令,到了8x86中可能是一系列的指令才能完成它。
你玩themida会发现,它在生成虚拟机的时候,就是它在编译虚拟机的代码。
这个要真把虚拟机说明白了真不容易,还好,luocong大侠有一个OM开源的脚本执行器,你看源码就能够对虚拟机有了初步的了解。
|
能力值:
( LV8,RANK:130 )
|
-
-
11 楼
谢了,我再慢慢消化一下!
|
能力值:
( LV9,RANK:410 )
|
-
-
12 楼
虚拟机是一个很大的课题,世界上最著名的软件公司都在致力于它的开发和完善。但对于壳来说,就不同了。
给你一个思路。
壳一般是把原来的指令偷掉,然后将这个指令翻译成它自己的指令,偷偷的放到它指令集中去运行,这样,我们OD看来,就变成了乱七八糟的指令,不明白它在干什么了。
出来混总是要还的,它运行完了,结果还是原来指令的结果。
脱壳中,虚拟机把原来的指令消灭了,变成了它在包办婚姻。
花指令是在原来的指令前后附近玩李鬼,原来的东西还在。
只能这样说了,不然论坛成QQ了。
|
能力值:
( LV8,RANK:130 )
|
-
-
13 楼
我完全明白了!谢谢大虾!
|
能力值:
( LV9,RANK:210 )
|
-
-
14 楼
借这个贴问个问题,所些所谓的虚拟指令在哪里看到的?
反汇编窗口吗?
|
|
|