pkZine 电子杂志反编译工具官方博客.

浅析乱序代码的分析方法 不指定

vincehsu , 2009/11/02 15:43 , 逆向破解 , 评论(0) , 阅读(1721) , Via 本站原创
浅析乱序代码的分析方法
关键字:乱序 分析 反汇编 InsideView

本文涉及的InsideView和相关文件下载:

代码乱序的实现方式:
    代码乱序是将一系列的代码序列分散打乱分布在PE映像中,中间穿插跳转指令以及不改变环境的垃圾代码,从而扰乱正常分析流程。一般的来讲,连接指令以无条件的跳转jmp、变形的短跳转call、对称的条件跳转指令([jz、jnz];[jc、jnc]…)等实现,前提是不改变其他环境以免破坏代码正常功能。当然,也可以先保存环境,再使用破坏环境的条件跳转或通过SEH跳转等方式,然后再恢复先前保存的环境,这种先保存再恢复的实现方式必然有成对的指令模版。归根结底,连接指令是不会改变其他环境的。

代码乱序的还原方法:

    我们知道连接指令是不改变其他环境的,因此我们可以逐行分析代码,记录不改变环境的跳转,将分散乱序代码合并实现乱序的还原。代码乱序的还原方法可分为动态和静态两种,动态还原以OllyDbg为例,可利用调试器自身的反汇编引擎和脚本来实现,由于脚本和跟踪执行的效率问题,这种方式存在一定的局限性,比如动态分析时不方便比对。而静态还原首先需要一个反汇编引擎来分析指令,然后根据设定的过滤条件,将不会改变其他环境的连接跳转过滤,根据指令执行顺序,线性重排,这种方式实际上是半自动的条件反汇编。

乱序分析实例:
    下面以本人测试某反汇编引擎的中间产物InsideView为例,实现代码乱序的分析还原。在InsideView中打开example.cv.exe,程序会从入口处显示默认反汇编结果,如图:
点击在新窗口中浏览此图片
Tags:
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]