考虑进入逆向工程/反汇编

Zom*_*ies 18 reverse-engineering

假设对通用CPU架构(例如:x86)上的汇编有一个很好的理解,那么如何才能探索逆向工程领域的潜在路径(职业,乐趣和利润等)?那里的教育指南很少,所以很难理解今天它有什么潜在的用途(例如:正在寻找仍然常见的缓冲区溢出漏洞,或者堆栈监控程序是否使这一点成为现实?).我不是在寻找任何一步一步的程序,只是一些相关的信息,如有关如何有效地找到程序的特定区域的提示.交易中的基本内容.以及它目前用于今天的东西.

那么回顾一下,目前逆向工程产量目前的用途是什么?如何才能找到一些关于如何学习交易的基本信息(同样,它不必一步一步,只需通过线索就可以提供任何帮助).

kth*_*sis 14

如前所述,我所知道的主要问题是与恶意软件有关.为扫描仪公司工作的研究人员的主要任务之一是在实验室或虚拟环境中采集样本并对其进行调试.

同样,有许多安全相关领域使用逆向工程/反汇编.计算机取证是您可能想要研究的领域.被没收的计算机可能包含各种活动(命令和控制僵尸网络,DoS攻击程序等)的命令和控制程序(但没有源代码).通过对保护而不是计算密码或密钥的程序进行反向工程来规避受保护的数据方案通常要容易得多.

硬件和软件中的DRM /安全保护是一个很大的逆向工程领域.请注意,这可能是问题的"侧面"(和法律).考虑DVD复制程序,保护删除,在其他设备上播放iTunes音乐的能力,在Wii上运行自制程序的能力,并行化PS3网格,解锁iPhone等等.显然,还有许多非法律选项(反向)设计老虎机计时器,ATM机认证等).

传统的程序转换在许多领域都是一个巨大的机会,特别是政府,金融,制造等.在一个古老的大型机或迷你上运行了30年的关键任务程序,没有人拥有源代码.团队必须对程序进行逆向工程,以将其转换为更新的程序.

关于学习Win32教程的其他建议很棒.另外,遗憾的是,一些最好的出版作品将是破解(游戏).搜索并在那里有一些教程,显示基础知识.我上过的课程使用了Peter Szor撰写的"计算机病毒研究和防御的艺术"一书,但它对恶意软件的想法更加沉重,而不是精确的反汇编部分.

根据您选择的路线,您将需要其他方面的背景知识,但了解装配将是您最关键的技能.不仅仅是从"我理解代码主要做什么"的立场 - 您应该能够从头开始编写内容并准确理解代码的代码所做的事情,并了解编写相同代码的其他方法.汇编(编码)涉及找出问题的一个解决方案并对其进行编码.拆卸涉及找出最初使用的许多不同解决方案中的哪一个来解决问题 - 更难了;)


ano*_*ous 5

我已经读过在安全领域使用逆向工程来理解恶意软件和木马的内部工作(对病毒不太确定).有关安全领域中使用的逆向工程的文章,请访问www.openrce.org.

逆向工程也不总是涉及拆卸.对于使用Java或C#等语言编写的应用程序,反编译器通常会产生有关代码的更多信息,而不是反汇编程序.

由于我个人对Win32逆向工程的兴趣,我只能解释我对这个特定操作系统的看法.在Linux逆向工程中无法帮助你:(

我发现IDA Pro 4.9的免费版本是一个出色的反汇编程序.它检测系统库,这样你就不会花时间在错误的地方捣乱:)加上像OllyDbg这样的调试器,你已经准备好解决Win32的大多数逆转项目了.

如果你沿着Win32路线走下去,你最终需要了解PE结构,可能是解包和东西,但现在关键是了解x86汇编.如果您使用C语言完成Win32 API编码,则Win32应用程序的反汇编代码相对容易理解.

为了更好地理解32位汇编,请反汇编您自己的应用程序并查看源代码如何与反汇编输出相对应,或者了解如何通过Iczelion的Win32汇编教程使用汇编语言对Win32 API应用程序进行编码.