24小时接单的黑客QQ黑客接单企鹅若干

好久没写过文档了,今天把之前的关于逆向剖析的一些心得总结一下,横竖闲着也是闲着(本文不包罗什么新的手艺,只是未来源于各方的知识加上自己的心得举行总结而已,妙手就不用看了)。  我以为软件平安攻防其本质是剖析与抗剖析之间的斗争。由于无论平安手艺做的何等先进,一旦其代码意图被剖析者掌握,就不在有平安性可言。想要更快速的剖析程序不只要领会林林总总的软件保护措施,还

好久没写过文档了,今天把之前的关于逆向剖析的一些心得总结一下,横竖闲着也是闲着(本文不包罗什么新的手艺,只是未来源于各方的知识加上自己的心得举行总结而已,妙手就不用看了)。  我以为软件平安攻防其本质是剖析与抗剖析之间的斗争。由于无论平安手艺做的何等先进,一旦其代码意图被剖析者掌握,就不在有平安性可言。想要更快速的剖析程序不只要领会林林总总的软件保护措施,还需要加倍清晰的熟悉逆向剖析手艺。下面简朴的谈谈我对逆向工程的一些心得。  我以为逆向剖析从总体上主要可以分为代码结构、数据结构、运算三点,以下举行详细说明(限于篇幅,下面只是纲领模式,详细内容信赖网上都可以查到)。  注:对于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. 通过组织函数识别类与类的关系。 

  • 发表于 2020-12-14 18:43
  • 阅读 ( 229 )
  • 分类:互联网

0 条评论

请先 登录 后评论
锄禾魏宏
锄禾魏宏

726 篇文章

你可能感兴趣的文章

相关问题