为了避免有些枯燥,作者在教程中引入了一些练习。在本章中,作者编译了另外一个非常简单的程序叫做 TEST_REVERSER.exe。从这个练习中,读者可以学到静态逆向和调试的一些新知识。

首先直接运行程序。

image.png

软件需要输入一个用户名和密码,输入任意内容后,软件会嘲笑读者失败了。

在 IDA 中加载程序,开始静态分析。

Main函数定位

现在 IDA 已经非常牛逼了,可以自动定位到 main。下面介绍一种手动定位 main 的方式。

转到关键部位的一个方法就是搜索字符串。读者已经学会了这种方法。

下面介绍的是在 C++编写的程序中,有时候能够帮助定位 main 函数的方法。

众所周知 main 函数会接收 argc、argv 等参数,这些是命令行参数。

int main(int argc, char *argv[])

在之前的练习中,能够发现即使程序没有使用这些参数,这些 PUSH 指令依然会执行。这是默认行为。所以在 NAME 选项卡中搜索看看能否找到这些参数。

image.png

去打开菜单上的 VIEW-OPEN SUBVIEW-NAMES。按 CTRL + F 键打开过滤器,输入 arg。然后在结果__p___argc 上双击。

image.png

然后按 X 键搜索函数引用,就可以找到main函数。

image.png

即使 main 函数的名字不是 main,通过参数名也可以确定该函数是 main。

Main 函数栈分析

在任一函数参数或者局部变量上双击,转向静态栈视图。