我遇到了很多关于逆向工程的指南和博客,他们使用实验室来教授各种技术和方法来打破二进制文件。我的问题是逆向工程在现实世界中有什么实际的用例,因为我不认为您了解的实验室实际上是在模拟现实世界的攻击?
发布于 2022-02-16 22:58:33
基于你问题的措辞,我怀疑你可能把逆向工程和利用开发混为一谈。
逆向工程,在软件的背景下,是对一个程序的一些实现,并弄清楚它实际上做了什么,以及它是如何实现的。这与理解它的意图是不同的,这通常是您在手册和文档中找到的。这通常涉及到分解程序,识别哪些代码部分负责程序的高级功能,并以足够清晰的方式确定实现的细节,无论您的目标是什么。
利用程序开发是将程序的某些行为,并以一种导致程序产生意外副作用的方式进行操作的实践,例如执行任意代码。开发开发与逆向工程不同,但您几乎总是必须执行反向工程,以便充分详细地了解程序的行为以利用它。
典型的开发实验室练习,例如简单的堆栈缓冲区溢出,倾向于关注一类通常称为二进制开发的开发。这些问题,比如堆栈溢出、堆损坏等等,都集中在内存安全漏洞上。虽然二进制开发仍然非常相关,但简单的例子(例如堆栈缓冲区溢出)往往不能代表开发开发所涉及的实际工作,而二进制开发只是景观的一小部分。
绝大多数漏洞来自应用程序更高级别的行为,例如,文件上传功能无法检查文件名中可能导致路径遍历的字符。发现和利用这些漏洞需要反向工程。
https://security.stackexchange.com/questions/259614
复制相似问题