软件逆向工程必读

2019-10-17  本文已影响0人  Androidgiao

学习逆向没有Silver bullet,技术在更新,你也需要不断的学习,但是大致上有些基础的东西是需要学习的.

需要看的书籍:

1.Intel 微处理器.

2.Windows环境下32位汇编语言程序设计

3.WindowsPE权威指南

4.C++反汇编与逆向分析技术揭秘

5.加密与解密第三版

6.IDA Pro权威指南

需要掌握的工具:

静态反汇编工具: IDA Pro/hooper(一般)

动态反汇编工具: ollydbg/x64dbg

Windows内核调试工具: windbg

看这些书的基础:熟悉C++,熟悉编程.针对不同的语言,你也要知道一些.至此,软件逆向你就入门了.

我始终认为,要在逆向与反汇编上有大的成就,编程是必须会的.再接着就是必须熟悉密码学.熟悉软件工程.因为越往后走,你会越发现,软件逆向并不是简单的反汇编,而是需要很多的知识.其中编译器的知识是需要的.软件逆向是会走向工程化的.很多时候一个人是在短时间内无法完成的.这个时候借鉴软件工程的方法,会有好处.目前在国内外对于软件逆向的研究并不是很成熟,软件逆向工程性的方法理论目前也没有成熟.因此在软件逆向领域是非常有挑战性的.这是一门新兴的领域,需要广大爱好者的研究和投入.

其次软件逆向是针对不同的语言,难易程度不同.对于非编译型语言,逆向的难度要小很多.目前我认为编译型语言逆向最难的是C++.对于C++的逆向,我十分推荐上面提到的4.C++反汇编与逆向分析技术揭秘这本书.

国外也有两篇极佳的论文/文章:

黑帽大会上的演讲:https://www.blackhat.com/presentations/bh-dc-07/Sabanal_Yason/Paper/bh-dc-07-Sabanal_Yason-WP.pdf

Reversing Microsoft Visual C++ Part II: Classes, Methods and RTTI. igorsk .http://www.openrce.org/articles/full_view/23

国内论坛上也有一些文章(大致看看就行了):

【原创】RTTI结构详细分析(VC++)

【原创】易语言消息机制分析(消息拦截原理)

【原创】MFC消息拦截分析(+示例程序分析)

【原创】逆向分析 C++继承内存分布(带虚函数) 及动态绑定实现

密码学在逆向中的应用:

【原创】UltraISO注册算法&keygen分析(已算出一组注册码)

所以最终的重点是啥?如果你只想了解一下逆向,看看前面两本书就OK了;如果你想逆向软件系统,达到我推荐的层次也就OK了;如果你想写反编译引擎,那就深入了解编译原理以及现有的反编译理论(看论文啊大佬);如果你想解放全世界,请先精通哲学:)

链接:https://www.zhihu.com/question/276677186/answer/388980350

上一篇下一篇

猜你喜欢

热点阅读