逆向工程還有一種叫法就是抄數(shù),通過三維掃描儀快速獲取實物的數(shù)據(jù),此技術(shù)已經(jīng)被廣泛應(yīng)用了,下面至誠工業(yè)咨詢的工程師分享一下逆向工程的學(xué)習(xí)方法。
1、具備基本的編程能力,如c、c++,c、c++作為很基礎(chǔ)的語言,不要求精通,但是必須會寫,寫個小工具完全沒有問題,同時要對c++的類、繼承、虛表虛函數(shù)等很熟悉,很多游戲都用c++開發(fā),而且比較龐大,只有基礎(chǔ)掌握好,才能更好的從匯編層來讀懂代碼,很多時候我們看單條匯編指令時完全沒有問題的,但是一旦組合起來就會完全不知所云了,通過必須對高級語言對應(yīng)的匯編語言實現(xiàn)要掌握,比如函數(shù)工作的原理,幾種調(diào)用約定、參數(shù)傳遞方式以及返回值等都必須掌握,這方面網(wǎng)上很多資料。最好能懂python,python作為一種腳本語言,可以用來開發(fā)許多逆向調(diào)試工具的插件,可以幫我們節(jié)省很多的體力活。
2、對windows系統(tǒng)知識比較了解,因為外掛會設(shè)計比較多的windows系統(tǒng)知識,因此要對windows底層要一定的掌握,比如windows api,以及外觀常用的注入、鉤子技術(shù)還有windows系統(tǒng)的異常處理機制等,可以到廣海論壇學(xué)習(xí)外掛常用的較按鍵精靈、加速齒輪以及注入等同用知識,書籍可以可以參見《windows核心編程》,對底層知識了解越多,分析外掛技術(shù)也越容易。
3、對逆向分析工具的熟練使用,我們平時工作中面對的是二進制可執(zhí)行程序,要做外掛我們首先的分析目標程序,因此對常用的調(diào)試工具windbg、ollydbg、靜態(tài)分析工具ida一定要熟練使用。網(wǎng)上教程也比較多,可以到看雪論壇上利用相關(guān)的crackme練手學(xué)習(xí)。
4、掌握外殼原理和技巧,熟悉常見的加解密算法、反調(diào)試技巧,我們分析程序時經(jīng)常會遇到很多加殼程序,因此我們必須對外殼的原理和基本知識比較熟悉,熟練掌握同用的脫殼技巧,同時對各種反調(diào)試技巧也必須要很熟悉,在分析程序時,一般會遇到很多加解密算法,因此必須要對各種加解密算法的特征有一定的快速識別能力,這樣能更快得幫助我們分析目標程序的核心功能。這方面可以參看《加密與解密》這本書,講的非常好與詳細。
以上學(xué)習(xí)思路匯總希望對大家有用,總體來說逆向和外掛都涉及比較多的知識,學(xué)習(xí)周期也比較長,但相信,事在人為。