好久没写过文档了,今天把之前的关于逆向分析的一些心得总结一下,反正闲着也是闲着(本文不包含什么新的技术,只是将来源于各方的知识加上自己的心得进行总结而已,高手就不用看了)。 我认为软件安全攻防其本质是分析与抗分析之间的斗争。因为无论安全技术做的多么先进,一旦其代码意图被分析者掌握,就不在有安全性可言。想要更快速的分析程序不但要了解各种各样的软件保护措施,还需要更加清晰的认识逆向分析技术。下面简单的谈谈我对逆向工程的一些心得。 我认为逆向分析从总体上主要可以分为代码结构、数据结构、运算三点,以下进行详细说明(限于篇幅,下面只是大纲模式,具体内容相信网上都可以查到)。 注:对于Debug版本和Release版本程序的处理思路上是一致的,因此下面没有特别区分。但实现方式却有很大区别,很多Release版本代码处理方式我还在摸索中,因此就不写了。 一. 代码结构。 代码结构决定了程序的执行过程以及数据走向。首先理解程序的代码结构,可以把整个程序的框架给勾勒出来。接下来进行各个部分的点缀。可以有效提高逆向速度。代码结构分析总的分为以下几点: 1. 比较操作。 A. 有符号数比较。 B. 无符号数比较。 C. 条件码(各种条件码的组合判断我记不住,可以列成表格以便查询。平时用上的不多,除非要精确还原代码)。 2. 条件分支。 A. 单分支条件(if)。 B. 双分支条件(if-else)。 C. Switch条件。 D. 组合条件。 E. 纯算术实现逻辑分支(运算后条件码的判断,具体可参看加密解密第三版)。 F. 条件设置指令(SETcc)。 G. 条件传输指令(CMOVcc)。 3. 循环。 A. 先执行循环(do-while)。 B. 后执行循环(for/while)。 C. 循环控制及break/continue。 4. 函数。 A. 函数调用及功能的快速识别。 B. 调用约定。 C. 参数传递方式。 D. 堆栈平衡。 E. 函数导出及导入。 5. 代码优化。 A. 代码速度优化。 B. 代码大小优化。 二. 数据结构。 当识别了代码结构并勾勒出整个代码框架之后,接着要做的就是识别程序中的各种数据结构。比如程序是一棵大树,现在已经有了枝干,我们要做的就是添加树叶。数据结构的分析我主要分为以下几点。 1. 堆栈(Debug版与Release版的堆栈使用有很大区别)。 2. 全局变量。 3. 局部变量。 A. 堆栈中的局部变量识别。 B. 寄存器变量。 4. 变量的导入导出。 5. 常量。 6. 数组。 A. 简单数组。 B. 多维数组。 7. 结构体与联合体。 8. 链表。 A. 单向链表。 B. 双向链表。 C. 循环链表。 D. 二叉树。 E. 图等高级链表我没逆向过。写在这里只是说明一下思路。 9. 类。 Release版程序的类的还原我目前还不是很熟悉。对于Release版没被使用过的类成员的分析还在摸索中。 A. 成员变量。 B. 普通成员函数(容易与编译器默认的构造函数混淆)。 C. 虚函数表及继承派生。 D. 通过构造函数识别类与类的关系。
剑与远征黑鞘森林怎么过,相信很多玩家都不是很清楚,那么具体的通关方法是什么呢,同时我们需要注意哪些技巧和细节呢,现在一起来看看详细的攻略内容。 剑与远征黑鞘森林攻略 进入黑鞘森林关卡后,顺着左...
微信还能加密聊天!再不怕聊天记录被偷看了!朋友问我怎么设置! -图文教程- hello,大家好。我是手机技巧(*╹▽╹*) 之前给小伙伴分享过一些微信加密的技巧,今天再分享一个好玩的,将聊天内容...
婚后出轨就是指夫妇一方或彼此,在夫妻关系续存期内,与别的第三人发生关系的一种个人行为,那样的个人行为是对自身婚姻生活的不承担,也是对直系亲属的不忠诚。那结合实际如果女性婚后出轨该怎么办呢?而这时资产又...
本文目录一览: 1、黑客可以随意窃取微博ip吗 2、新浪微博长久不登录后名字资料都被改了是怎么回事? 3、黑客如果想黑掉新浪微博是不是很容易? 4、在微博上发微博设置了仅自己可见,那别人还...
我小时候看世界第一黑客的事迹,说他独自攻克了北美空军基地,还把核弹头的数量数了个遍,当时我想不就是入侵嘛,也没啥。 首先没有动机。其次为什么要自找麻烦。 不是不敢攻击,而是淘宝的安全性也是比较高的...
桃树病虫害图片(桃树9种重点虫害高清图谱及防治方案介绍) 01蚜虫 蚜虫是桃树上最常见的害虫之一,多群集新梢嫩叶背面危害,被害叶向背面卷缩并排泄黏液,污染枝梢,严重时叶面发生煤烟病,并抑制...