[翻译]在Windows平台下的使用radare2进行调试
首先,我想说我是一个Linux迷。 我一直在它上面进行开发。 它的命令行令人惊叹,并且非常精简计算机科学相关的任务。 虽然我有这种感觉,但有些人并不这样认为更喜欢使用Windows环境。 所以我想在本文中展示两件事,如何安装和使用radare2 for Windows,以及如何使用radare2调试应用程序。 在Windows上安装radare2,首先访问他们的网站(https://rada.re/r/),点击页面顶部的“下载2.3.0 for Windows”链接。 然后你只需运行安装程序,radare2就安装在你的系统上了! 问题是,所有安装程序都将radare2.exe以及其他工具放在C:/ users / username / AppData目录中。 我必须从命令行将目录切换到该文件夹才能使用可执行文件。 为了从命令行的任何位置访问该文件,必须将该目录添加到$ PATH环境变量中。 这计算机用来查找可以从系统的任何位置运行的命令和应用程序的变量。 要设置你的$ PATH变量,你可以通过以下两种方法之一来完成。 您可以通过转到系统属性 - >高级 - >环境变量来使用Windows GUI进行更改,单击路径变量并单击编辑。 然后你可以添加你的radare2文件的目录。
查看系统属性和编辑环境变量

你也可以变身超级1337,从命令行执行它。 方法是以管理员身份打开PowerShell并使用该命令
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Users\<username>\AppData\Local\Programs\radare2", [EnvironmentVariableTarget]::Machine)
这条命令可以让你每次重新启动计算机时都不必将文件夹添加到你的$ PATH变量中。 现在,如果您运行radare2.exe命令,您应该看到radare2的帮助信息。 这意味着您已经在系统上成功安装了radare2。

现在我们已经安装了Radare2,可以继续我们的调试教程。 如果你不知道调试是什么,它可以说是是运行一个程序并暂停每个汇编指令。 它可以让你动态地看到程序执行发生了什么,并且通常比静态分析更容易。 但在分析恶意软件时,静态分析比较安全,因为该文件实际上并未运行。 如果你想调试恶意软件,因为它是分析过程的重要组成部分,那么你应该在虚拟机中完成它。 我将演示如何解决Flare-On 4 CTF的挑战2。 Flare-On挑战是由FireEye主办的年度逆向工程竞赛。 我强烈建议任何对逆向工程感兴趣的人至少尝试一下,因为你可以从中学到很多东西。 您可以从他们的网站(https://www.fireeye.com/blog/threat-research/2017/10/2017-flare-on-challenge-solutions.html)上下载去年挑战中的二进制文件。 我们应该开始运行该程序,当启动程序时,我们看到它会提示我们输入密码。如果我们试图猜测密码,则会显示一条消息,告诉我们我们错了。不是太复杂,我们只需要找出密码是什么。

我将通过rabin2运行二进制文件来提取基本信息。 我在第一篇文章(https://medium.com/@jacob16682/reverse-engineering-using-radare2-588775ea38d5)中回顾了如何使用radare2。
arch x86 binsz 3072 bintype pe bits 32 canary false class PE32 cmp.csum 0x00000e67 compiled Fri Jul 31 17:44:07 2043 crypto false endian little havecode true hdr.csum 0x00000000 linenum false lsyms false machine i386 maxopsz 16 minopsz 1 nx false os windows overlay false pcalign 0 pic false relocs true signed false static false stripped true subsys Windows CUI va true
这里没有什么值得注意的地方,我们来查看一下字符串,看看我们得到了什么。
\r├?Γ?╝αá╝ GetStdHandle ReadFile WriteFile ExitProcess KERNEL32.dll \r&IE* xD+l]^E +DonV\t_EGs&\n\r G1v3 m3 t3h fl4g: G00d j0b! N0t t00 h0t R we? 7ry 4ga1nz plzzz!
这里也没什么太有趣的。 我们看到字符串“G00d j0b!”,这可能是我们输入正确密码时得到的结果。 其余的信息看起来像很多混乱的垃圾,看起来密码可能是被加密的。 我们将不得不调试应用程序,以了解我们如何将密码与加密密码进行比较。 使用-d标志打开radare2中的应用程序,该标志告诉radare2我们将要调试此应用程序。
radare2.exe -d IgniteMe.exe
[0x77200cc0]>
这里我们使用命令'aaaa'来分析可执行文件。 然后,我们使用命令'V!'跳转到radare2的特殊视觉模式进行调试。 该模式允许我们在一个窗口中查看堆栈,寄存器和其他信息。

然后,我们可以使用命令的entry0来转到二进制文件的主函数。 您可以通过以下两种方式之一来完 通过使用'qq'退出可视模式并在普通视图中运行该命令,或者使用':s entry0'以可视模式运行该命令。 你可以用可视模式运行任何radare2命令,方法是使用':'作为前缀。 在entry0中,我们可以看到程序提示我们输入密码。

在使用WriteFile输出字符串后,它会调用另一个函数。 Radare2在分析这个函数时有一个问题,因为它应该被命名为ReadFile,这就是程序如何抓住我们的输入。 然后它接受我们的输入并通过0x401050处的函数运行它。 我们可以通过返回到'V!'模式来设置断点,滚动到该行位于页面顶部并按F2。

然后我们可以使用F9键运行程序。 当白色命令提示符出现时,Radare2会自动停止程序,所以我们需要返回到radare2并再次点击F9。 然后我们需要输入我们的字符串并按下ENTER,我们将停在刚创建的断点处。

注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
复制成功
