关于问题为了 CTF 比赛,如何学习逆向和反汇编?一共有 2 位热心网友为你解答:
【1】、来自网友【火锅玉米】的最佳回答:
CTF 中有多种平台的逆向,建议先从 PC 逆向开始,因为这方面的资料很多,常用书《加密与解密》、《8086 汇编》、《C++反汇编与逆向分析技术揭秘》等等…
以下是 PC 逆向学习路线:1、先学汇编!从 8086 汇编开始学,再到 32 位,有兴趣可以玩玩 64 位。2、调试技能(OD、Windbg 这些)3、编程技能(WinAPI 多多少少要知道一点,MSDN 文档一定要会看)4、脱壳 5、漏洞分析
但真正的逆向水平通过看书是无法提升的!还是需要多练习!可以去 B 站搜索相关视频,平时没事的时候多看一点其他大神发的分析文章。除了看雪这类的老论坛,各大安全公司也有自己公众号,里面文章都是经过精选的,可以去 i 春秋看看大家推荐的还不错!
【2】、来自网友【流连万芳】的最佳回答:
需要看的书籍:1.Intel 微处理器.2.Windows 环境下 32 位汇编语言程序设计 3.WindowsPE 权威指南 4.C++反汇编与逆向分析技术揭秘 5.加密与解密第三版 6.IDA Pro 权威指南需要掌握的工具:静态反汇编工具: IDA Pro 动态反汇编工具: ollydbgWindows 内核调试工具: windbg 看这些书的基础:熟悉 C++,熟悉编程.针对不同的语言,你也要知道一些.至此,软件逆向你就入门了.此时参加 CTF 我想是没有问题的.
我始终认为,要在逆向与反汇编上有大的成就,编程是必须会的.再接着就是必须熟悉密码学.熟悉软件工程.因为越往后走,你会越发现,软件逆向并不是简单的反汇编,而是需要很多的知识.其中编译器的知识是需要的.软件逆向是会走向工程化的.很多时候一个人是在短时间内无法完成的.这个时候借鉴软件工程的方法,会有好处.目前在国内外对于软件逆向的研究并不是很成熟,软件逆向工程性的方法理论目前也没有成熟.因此在软件逆向领域是非常有挑战性的.这是一门新兴的领域,需要广大爱好者的研究和投入.
其次软件逆向是针对不同的语言,难易程度不同.对于非编译型语言,逆向的难度要小很多.目前我认为编译型语言逆向最难的是 C++.对于 C++的逆向,我十分推荐上面提到的 4.C++反汇编与逆向分析技术揭秘这本书.国外也有两篇极佳的论文/文章:黑帽大会上的演讲:https://www.blackhat.com/presentations/bh-dc-07/Sabanal_Yason/Paper/bh-dc-07-Sabanal_Yason-WP.pdfReversing Microsoft Visual C++ Part II: Classes, Methods and RTTI. igorsk .http://www.openrce.org/articles/full_view/23 国内论坛上也有一些文章:
【原创】RTTI 结构详细分析(VC++)
【原创】易语言消息机制分析(消息拦截原理)【原创】MFC 消息拦截分析(+示例程序分析)【原创】逆向分析 C++继承内存分布(带虚函数) 及动态绑定实现
以上就是关于问题【为了 CTF 比赛,如何学习逆向和反汇编?】的全部回答,希望能对大家有所帮助,内容收集于网络仅供参考,如要实行请慎重,任何后果与本站无关!