Reverse | 逆向入门学习(一)

1、Reverse

   Reverse(逆向)是CTF竞赛中的一种常见题目类型,主要考察参赛选手逆向工程相关的知识,考查形式为通过对一个二进制程序(exe、dll或者是elf等)进行逆向分析,了解程序内部的实现机制,最终目的可能是得到一个密码,或者是编写一个注册机用于计算指定用户名对应的注册码等。

2、 PEiD

     PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档的加壳类型和签名。PEiD支持各种外部插件,同时支持用户自定义的加壳程序签名信息。

3、Ollydbg  

      Ollydbg简称OD,是一款具有图形用户界面的用户模式调试器,可以运行于各种主流Windows操作系统下。Ollydbg具有动态调试和静态分析功能,非常容易上手,对异常的跟踪处理相当灵活,并且许多爱好者为这款调试器编写了许多非常棒的插件,这些特性使得其成为Windows操作系统上用户模式下动态调试器的首选。

      Ollydbg的反汇编引擎十分强大,可以识别数千个被C和Windows频繁使用的函数,并可以自动对参数进行注释。  虽然OD的GUI界面上拥有丰富的操作按钮,但通常我们使用键盘快捷键来加快调试过程,常用的快捷键有:

  •  F2 设置一个断点(如果断点已经存在,那么断点将被删除)
  •  F4  运行到光标所在行(运行到光标所在行时自动断下)
  •  F7  单步跟踪(如果遇到一个call,则跟踪进入)
  •  F8  单步跟踪(如果遇到一个call,则执行完整个call)  
  • F9  继续执行(运行程序,直到进程退出或遇到下一个断点)

4、IDA

       IDA是一款交互式反汇编工具,其功能十分强大,支持多操作系统、多处理器下的二进制程序的反汇编分析,并且可以和使用者进行交互来提升处理效率。动态反汇编,IDA支持插件,支持IDC脚本,Hex-Rays Decompiler是IDA一个十分强大的插件,支持将反汇编代码直接转换为C语言伪代码,极大的提高了反汇编分析人员的工作效率。由于IDA拥有强大的功能以及繁多的特性,要完全掌握IDA的使用也是一件不容易的事情,但是这并不影响IDA的可用性。

       IDA常用快捷键(具体含义会在后面的操作中讲到):  

  • 空格  在图形模式和列表视图模式之间切换反汇编视图  
  • F5  将反汇编指令还原为伪代码  
  • x  查看交叉引用  
  • n  对变量名或者函数名进行重命名操作
  • d  将二进制数据解释为字节/双字/四字  
  • c  将二进制数据解释为代码  
  • a  将二进制数据解释为字符串

5、WinDbg

       Windbg是在windows平台下,强大的用户态和内核态调试工具。相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能,却比VS更为强大。

常用命令:

  • version、vertarget:查看版本信息
  • lm、!dlls、!lmvi:查看模块信息
  • 用k命令显示调用栈,用.frames命令切换栈帧
  • 内存操作:读内存用d命令,写内存用e命令
  • 自动分析:!analyze、!owner等
  • 符号命令:.reload加载符号, .sympath设置符号路径, !sym设置符号选项
  • !process:显示进程信息
  • process显示当前进程
  • .process /i 切换当前进程

6、PE文件

    PE(Portable Execute)文件被称为可移植的执行体(可执行文件),常见的可执行文件有EXE、DLL、OCX、SYS、COM格式文件,PE文件是微软Windows平台操作系统上的可执行程序文件。  PE文件能被Windows平台的操作系统解释并执行,因此有固定的文件格式。PE 文件格式被组织为一个线性的数据流,它由一个MS-DOS 头部开始,接着是一个实模式的程序残余以及一个PE 文件标志,这之后紧接着PE文件头和可选头部。这些之后是所有的段头部,段头部之后跟随着所有的段实体。文件的结束处是一些其它的区域,其中是一些混杂的信息,包括重分配信息、符号表信息、行号信息以及字串表数据。如下图所示:

7、反汇编

      在计算机语言的进化过程中,是由低级语言(机器语言)向高级语言(C、C++、C#、Java等)逐步发展的,但是在实际的运行过程中,计算机能识别的只有机器语言(01代码)。所有高级语言在编译、链接、执行过程中转化为机器语言,并由CPU解释并执行。

      机器语言不仅晦涩难懂,而且难以记忆,因此在计算机语言的进化过程中出现了汇编语言。汇编语言是一种与硬件紧密相关的程序设计低级语言,汇编语言使机器语言以便于记忆和理解的符号形式(又称为助记符)存在。

      汇编是将汇编代码编译、链接成可执行文件的过程。反汇编则是将可执行文件还原成汇编代码的过程。反汇编技术常常应用在逆向分析、软件破解、漏洞挖掘等场景中,主要目的是逆向分析程序中的逻辑,然后改变程序的运行逻辑,达到更改程序执行的目的。

  • 8
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值