内容简介:逆向工程乍看起来似乎很复杂,但是通过一个好的方法和工具包可以让你对其更加了解和使用时更得心应手。方法
逆向工程乍看起来似乎很复杂,但是通过一个好的方法和 工具 包可以让你对其更加了解和使用时更得心应手。
方法
假设你已经下载了一个二进制文件,接着RE需要两种类型的分析,静态和动态。静态分析将帮助你更好的了解二进制文件中的内容,而动态分析则可让你逐步跟踪每个注册表中发生的具体变化以及使用哪些系统调用等。
静态分析
我必须承认,我没有时间评估目前各种不同工具。因为我发现了一种我认为比较好用的工具——Binary Ninja,它只有1.7k大小,且成本较低,只有99美元。
Binary Ninja专门用于静态分析,且提供了一个非常专业的图形用户界面,当你必须处理的信息量巨大时,Binary Ninja会非常有用。
如上图所示,Binary Ninja显示出了可执行文件的整个调用图,简化了了解每个块如何交互在一起的方式。此外,你可以通过右下角的选择菜单轻松切换视图。最后,左侧列举每个调用的函数,只需点击鼠标即可直接访问。
其所配置的upstream模块,还允许Binary Ninja具有以下功能:
1.在代码中放置评论;
2.通过汇编或C代码修补二进制;
3.允许API访问自己的插件并加速分析过程;
4.访问来自GitHub202可用的一堆插件;
注意:演示的Binary Ninja412版本是免费的,应该足够初学者使用。
动态分析
动态分析可以通过gdb,radare2等各种工具完成。从我个人的经验来看,radare2的用户交互不是很好,比如,没有样式表,我无法记住操作捷径,这让我浪费了很多时间!但是,gdb在用户友好性上就做得很好,而且,gdb的用户体验可以通过使用peda447(GDB的Python Exploit Development Assistance for GDB)进行改进,通过colourising和显示反汇编代码,寄存器,内存信息来增强显示gdb调试。
以下是增强型命令行界面:
为了向你展示如何应用和使用这种方法,我选择告诉你如何成功地使用卡内基梅隆二进制炸弹实验室(cmu binary bomb)的 CTF平台 。
这是第3阶段的入口点:
假设该解决方案是由3部分组成,两个整数和一个字符。
让我们打开0x08048bbf地址看看寄存器的状态。
输入尝试:1 2 3
好的,好像注册表EAX表示传递给sscanf的参数的数量。这证实了我以前的假设,即至少需要三个值才能传递给下一个区块(block)。
以下是下一个区块(block):
1.检查第一个整数是否高于0x7。
2.跳到与我第一个参数对应的情况
3.将BL寄存器设置为0x6b,并将第三个参数比较为0x7b。如果值相等,我们就跳到下一个块。
4.检查第二个参数是否等于先前设置的BL。
因此,我们可以假设密码应该是:
3:代表第三种情况
k:对应于ascii值0x6b
251:对应于十进制值0x7b
让我们试试吧!经过试验,果然证明我的假设是对的!正如你所看到的,这个挑战并不需要太多的动态分析。不过,目前很少有人使用该方法,所以如果利用它进行静态分析,至少可以节省你70%的分析时间。所以,仔细分析每一个代码以达到你的目标!
总结
正如已经证明的那样,每个人都可以使用逆向工程。然而,前提是你要拥有组装,内存管理以及编程方面的基本知识。因为,这会帮助你快速确定你的分析目标。
本文所配置的upstream模块,就是为了帮助32位/ 64位架构的RE Linux二进制文件,为此,我创建了一个 git仓库 ,它包含一个 docker 映像以及分析时所需的工具。
以上所述就是小编给大家介绍的《逆向入门方法与工具(至少可以节省你70%的分析时间)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Java 代码热更新工具,节省宝贵时间
- 节省云服务器(VPS)的内存
- 运维帮手:FlashOps帮我节省时间
- 节省你生命的一个小技术No.193
- NFV助力DoCoMo成本支出节省高达10%
- Flink 流式计算在节省资源方面的简单分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms in C (Computer Science Series)
Robert Sedgewick / Addison-Wesley Professional / 1990-01-11 / USD 59.99
This new version of the best-selling book, Algorithms, SecondEdition, provides a comprehensive collection of algorithmsimplemented in C. A variety of algorithms are described in eachofthe following ar......一起来看看 《Algorithms in C (Computer Science Series)》 这本书的介绍吧!