- 虚拟机执行简介
- 使用虚拟机的目的:不外乎给代码逆向者带来更多障碍或者便于跨平台.
- 探究思路
- 技能拓展
- 从外部特征定位执行过程.
- 编写简易脚本,加快你的分析过程.
- 一些需要注意的点:
想到哪里说哪里.
虚拟机执行简介
通过抽象的方法将本地操作转换为特定的接口.而虚拟机内部所能解析的文件(简称:虚拟机文件)的编写过程中功能的实现只能通过调用这些虚拟机接口完成.
虚拟机本身使用本地代码编写,模拟CPU的执行流程.
使用虚拟机的目的
不外乎给不了解特定虚拟机机制的代码逆向者带来更多障碍或者便于跨平台.
探究思路
因为虚拟机模拟CPU的执行流程,故关键在于找到其虚拟机中虚拟机文件当前执行的位置,我们不妨称记为VMEip.
- 寻找其VMEip.
- 熟悉其内部虚拟栈帧结构.即POP,PUSH的位置和操作方式.
- 记录虚拟指令-本地代码表.建立它们的一一对应关系.
技能拓展
完整逆向一个虚拟机程序的工作通常是海量的.对于某些简单的问题并不需要将其完整逆向.
从外部特征定位执行过程
在代码的海洋中,更快的定位需要分析的代码部分是一项必备技能.通过你可以从日志打印顺序或者某些显示信息弹窗操作.需要分析的代码往往位于两个事件之间.
脚本祝君一臂之力
在大体了解特定虚拟机结构后可以尝试写一些简易高效的脚本辅助你的工作.
譬如:
- 打印所有已经执行过的位置及其在虚拟机文件中的偏移.
- 执行某些频繁易错的操作.
一些需要注意的点
暂无.晚安.
2015年12月6日 22:51:42