软件逆向分析基础(一)概述

      • 一、本课程涉及的工具
        • VC 6.0
        • OllyDug
        • IDA
        • PEID
      • 二、软件逆向工程的定义
      • 三、高级语言程序经过编译、链接到目标代码的工作过程
      • 四、软件逆向应用
      • 五、学习本课程的前置知识
      • 六、总结

一、本课程涉及的工具

VC 6.0

VC6.0是Windows环境下最主要的应用开发系统之一,是C++语言的集成开发环境,与Win32紧密相连。其强大的调试功能为大型复杂软件的开发提供了有效的排错手段。

Ollydbg基本功能快捷键:

  • F2:设置断点 说明:在一条指令上设置断点,再按一次就取消断点。
  • F4:执行到当前光标所在的指令 说明:在遇到循环时可以使用F4执行到循环结束后的指令。
  • F7:单步步入 说明:遇到函数调用就跟入。
  • F8:单步步过 说明:遇到函数调用不跟入。
  • F9:继续执行 说明:运行程序直到下一个断点处。

IDA

交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA,是总部位于比利时列日市(Liège)的Hex-Rayd公司的一款产品。

二、软件逆向工程的定义

软件逆向工程(Reverse Engineering)是指软件开发过程的逆向过程,即对目标文件进行反汇编,得到其汇编代码,然后对汇编代码进行理解和分析,从而得出对应的源程序系统结构以及相关设计原理算法思想等。

三、高级语言程序经过编译、链接到目标代码的工作过程

  • 词法分析:对源程序从前到后或者从左到右逐个字符扫描,从中识别出一个个单词符
  • 语法分析:语法分析器以单词符 作为输入,分析单词符 串是否符合语法规则,如表达式,赋值,循环……最后分析检查每条语句是否有正确的逻辑结构
  • 语义分析:检查原程序是否存在语义错误,并且收集类型信息供后面代码生成阶段使用
  • 中间代码生成:根据语义分析的输出,生成中间语言程序。
  • 代码优化:对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码
  • 目标代码生成:目标代码生成器把语法分析后或优化后的中间代码变换成目标代码包括exe、dll……等类型

四、软件逆向应用

  • 代码恢复理解
  • 算法的识别
  • 软件破解、恶意代码分析
  • 漏洞挖掘和利用
  • Rootkit深入

五、学习本课程的前置知识

  1. 数据结构基础知识
    栈的结构
    栈的工作原理
  2. 汇编基础知识
    源代码编译过程
    常见的汇编指令
  3. 高级语言基础知识
    语句的汇编格式
  4. 文件结构基础知识
    PE文件结构
  5. 系统编程基础知识
    Windows消息机制
    常见的系统函数

六、总结

总结:
软件逆向是一个熟能生巧的过程,除了学习别人的经验技巧之外,更多的是需要不断的练习。
软件逆向过程是比较枯燥的,必须要有足够的耐心和细心。
相对于软件破解,软件功能和算法逆向是更高级逆向技巧的,需要逆向人员有扎实的编程功底,如果希望在逆向领域有更大的进步,提升自己的编程水平是十分必要的。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月1日
下一篇 2021年2月1日

相关推荐