软件逆向工程必读
學習逆向沒有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
總結
- 上一篇: 计算机逆向工程专业,计算机软件反向工程的
- 下一篇: 大规模天线阵列(massive-mimo