這邊文章是根據自己的學習經驗來說的,如有雷同,純屬侃B話,請不要太當真!
逆的基礎是正
這是真理,它要表達的意識是,如果要學習逆向或者從事逆向方面的工作,你必須掌握正向開發技術。
開發即是正向工程,這是藝術,偉大的人創造了偉大的程序,向他們致敬!
逆向所做的事是將獲取到的程序進行逆向分析,獲取自己想要的。
在進行逆向的時候,如果對目標一無所知,那我們將處於被動,不知道自己該怎麼下手。
初學破解時,通過搜索字符串,找到關鍵地方,當時隱約知道 這大概就是一個函數,裏面有跳轉分支,跳轉是成功,不跳轉是失敗。。。後來搜索字符串沒搜索到,然後有知道API斷點,說是斷下API,然後再返回幾個CALL,就到了函數。再後面VB程序,JAVA程序,.NET程序,貌似套路都不一樣了。
如果我們正向足夠紮實,可以通過程序界面反饋的消息猜測作者是通過什麼實現的,如果我們對各種編譯器足夠了解,對文件格式足夠了解,對各種程序開發套路都比較瞭解,那麼我們做逆向的時候,應該難度不大了。
正向的重要性可想而知!
想做掛,請學遊戲編程
想過保護,請學內核編程
想脫殼,請學殼
想破解,請學開發
逆向與正向相輔相成,逆即是正,正即是逆!
如下圖所示: