一种识别officessh白噪声的方法.docx
《一种识别officessh白噪声的方法.docx》由会员分享,可在线阅读,更多相关《一种识别officessh白噪声的方法.docx(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一种识别off icessh白噪声的方法1逆向工程中的应用随着网络普及,恶意软件的危害越来越大。防病毒者使用各种方法来分析和检测程序是否 恶意,逆向工程已成为一个重要的方面。当前逆向工程的研究已取得长足的进展,但在某 些方面还存在一些难题。静态反汇编是逆向工程中对恶意程序进行静态分析的第一步,而 病毒等恶意程序也往往使用各种方法来干扰、阻碍静态反汇编,比如使用各种代码混淆技 术。在代码混淆中call指令后插入数据便是一种常见的并且十分有效的迷惑反汇编器的 方法。目前流行的反汇编工具如Windbg, IDA pro都不能解决该问题。2基于指令的反汇编在保留源程序语义和功能的条件下,所使用的一些使
2、提取和理解逆向过程中得到的高级语 言结构表示的结果更为困难的方法称为混淆本文所提到的call指令后插入混淆数据的情况在利用上述2种技术的同时综合了其他方 法,主要采用如下2种形式:(1) call指令后跟有用数据典型的如call指令后插入一段字符串:由于call指令可以分解为压栈和无条件跳转2个 动作,因此它后面的字符串的起始地址被压入堆栈,该字符串可被用来作为函数调用的参 数,如图1的代码片断所示。图1展示了常见的字符串定义方式与call指令后定义字符串的情况。对于前者,一般的 静态反汇编器都能够得到准确无误的反汇编结果;而大部分的反汇编器在对后者进行反汇 编时,都将字符串错误地解码成指令,
3、典型的如采用线性扫描算法的Windbg和采用递归 分析算法的IDA,它们的反汇编结果见图2 (*表示反汇编出错)。此外,还可以对上述情况进行扩展,如可以使用几条连续这样的call指令来传递参数, 也可以在定义字符串后进行出栈动作从而把字符串的首地址传递给寄存器或变量,示例代 码片段见图3。(2) call指令后跟垃圾代码这种情况是在can指令后定义一些垃圾字节数据,见图4 (a) o在程序运行过程中, call指令所调用的子过程在返回时使用push等指令修改栈顶的值从而修改返回地址使过 程返回到了其他位置,而并不返回到call指令的下条指令执行(此时是数据),但是这 种方法却造成了反汇编的错误
4、,IDA的反汇编结果见图4 (b) o目前市场上的大部分反汇编器基本基于2种静态反汇编算法,即线性扫描算法和递归分析 算法3算法1:生成补全、优解码为解决call指令后插入混淆数据带来的反汇编出错的问题,本文设计了统一的识别算法 来解决该问题并识别出混淆数据。首先,针对现有反汇编算法的缺陷并为了缩小问题的规 模,本文采用了一种改进的递归分析算法,它与一般的递归分析算法的区别在于:当遇到 call指令时,对其进行分析,如需要则产生新的子过程,对子过程做标记,但并不立即对 子过程进行解码,随后从call指令的下一条指令的地址继续解码;对其他控制转移指令的 处理方法与一般的递归分析方法相同,这样直到
5、整个程序解码结束。最后对子过程依次再 进行解码,并在解码过程中逐步建立起控制流图(CFG)。该算法分为2个阶段,第1阶段是对call指令是否满足第1种形式的混淆做判断,第2 阶段是在整个程序初步解码完成后对call指令是否满足第2种形式的混淆做判断。具体 流程如下:第1阶段:(1)对call指令进行解码。(2)设call指令的目标地址为addr2, call指 令的下一条指令(数据)的地址为addrl。进行如下判断:若addr2-addrl的结果大于0且 小于当前代码的长度C,转(3),否则转(7)。 (3)取出addrl到addr2T范围内的每 一个字节判断其是否为ASCH字符,是则转(4)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一种 识别 officessh 噪声 方法
限制150内