逆向分析基础知识详解(教你如何分析软件)
发布时间:2022-07-31 13:07:04

  简单来讲,对软件进行分析并搞清楚其行为的工作就叫做“逆向工程”。逆向是指对软件进行分析,其对象不仅限与恶意软件,因此也不一定和计算机安全相关,譬如:license的绕过、游戏金手指等。都属于通过逆向分析绕过或篡改内部数据达到所需目标。昨天我写了一篇文章软件破解基础知识详解(手把手教你如何破解软件),大概是利用逆向分析,通过逐步详解方式如何绕过程序的登录限制,实现登录破解。本篇是上一篇的延伸篇,通过本篇的基础知识,可以让大家对《软件破解基础知识详解(手把手教你如何破解软件)》文章更轻松阅读。

  逆向工程可分为静态分析与动态分析。静态分析是:在不允许目标程序的情况下进行分析。动态分析:在运行目标程序的情况下进行分析。静态分析可用于了解全局信息,动态分析可用于了解局部信息,动静结合效果倍增!

  静态分析常用工具包括:winhex(二进制编辑器)、IDA Freeware版(反汇编工具)等。 动态分析常用工具包括:Process Monitor(系统进程监视器)、OllyDbg(动态追踪工具)、Wireshark(数据包分析软件)等。 形形各种工具都有,再次不一一介绍。

  工欲善其事必先利其器,在具有“趁手武器”后,我们需要对汇编指令有所了解(了解常用关键指令即可),便于通过工具展示出的内容进行分析。没必要一行行仔细阅读,重要的部分花时间仔细理解,其余部分了解大概即可。

  了解汇编,就必须了解汇编中各个指令代表意思,只有对指令了然于胸后,才能相对轻松地阅读汇编代码,下图为整理的常用汇编指令,可以帮助大家在多数场景下使用。

  本文还是以简单示例切入,方便小伙伴了解逆向原理及工具使用,通过不断的分析,增加逆向分析经验,为下一步深入分析做准备。

  我们可通多cmd来运行指定示例程序,如输入“2018”时,程序提示 “Hello word”。(Win32Project1.exe为示例程序)

  以上就是程序的介绍,非常简单!下面我们就来通过动静态两种方式来分析该示例程序!

  首先可通过IDA进行全局查看,通过对源代码反汇编,可大概了解程序的逻辑代码。通过下图对示例分析,我们可发现关键方法,如:lstrcmp、GetActiveWindow、MessageBox。

  通过静态对代码有全局了解后,我们可通过动态分析对示例程序进行局部深入了解,首先1141749位置call调用了lstrcmp方法,1141758位置通过jnz指令进行判断,如果不包含指定匹配字符串将跳转至01141787位置,即hello word的代码段中。详情如下图:

  我们通过在1141749位置的lstrcmp设置断点,通过对程序的运行输入“2018”时,再执行至1141758位置的jnz时会跳转至01141787位置,继续执行至011417A5时(弹出框)栈的内容如上图右下角,即“Hello word”提示框。

  当我们输入“2019”时,流程如下图一致,唯一区别是,系统会提示“Hello 2019”。

  由此我们完成了对示例该程序的静态与动态分析。后期我们还可以结合Process Monitor、Wireshark等多种分析方法对软件进行逆向分析。

  通过简单示例的切入,让大家了解一般逆向分析的工作流程和原理,大多数情况下我们没必要一行行仔细阅读,重要的部分花时间仔细理解,其余部分了解大概即可。本文主要是介绍逆向分析思想,该思想核心在于知识储备+经验,知识的储备可从编程、汇编、操作系统原理等多个方面入手(这也是为什么逆向人员相对少,工资高的主要原因)。经验就来自大家分析过程中的不断尝试、归纳总结。