難者不會、會者不難,淺述軟件編程和逆向分析的區別

編寫程序,簡稱編程,是程序員、軟件工程師的基本功,通俗地說就是敲代碼。與編程相對立的詞叫做"

逆向",或許有很多人不清楚開發和逆向的相關概念,本文對此做些簡單闡述。

難者不會、會者不難,淺述軟件編程和逆向分析的區別

程序員

打一個最形象的比喻,如果把軟件開發的過程比作蓋一棟大樓,那麼逆向就可以比喻成"拆樓"。從字面意思理解,逆向這個詞多少帶有灰色的意思。是的沒錯!軟件逆向分析技術是系統與網絡安全(黑客技術)的一個重要分支。精通逆向分析技術的人,好則可以分析惡意代碼找出應對之策或者漏洞修補。壞,則會損害付費共享軟件的發展(軟件破解)、編寫病毒木馬、流氓軟件傳播等,這類人被稱作cracker,與擅長網絡入侵的hacker不同的是,cracker專注於系統底層軟件加密和破解。

難者不會、會者不難,淺述軟件編程和逆向分析的區別

技術是雙刃劍

從技術角度分析,軟件編程開發和逆向工程是兩個不同的維度,編程需要掌握程序設計語言和算法結構,注重功能上的實現,由程序到軟件就涉及Windows API的封裝調用了,因為面向對象編程的發展趨於成熟,有大量成熟的類庫可以使用,使得開發效率和學習入門花費成本很低。有基礎的人,尤其是在互聯網盛行的今天,各種源代碼和IDE唾手可得的情況下,在半年到一年時間之內,基本可以完成中小規模的軟件項目。

難者不會、會者不難,淺述軟件編程和逆向分析的區別

主流計算機編程語言

逆向的原則就是破壞黑盒子的封裝性,如果目標對象是一款開源軟件,那麼逆向它是沒有意義的,因為直接看源代碼比分析反彙編指令要容易的多,畢竟高級語言的可讀性擺在那裡。所以逆向分析針對的是赤裸裸的exe、dll、sys等,沒有源代碼,通過各種動態調試(如Ollydbg)、靜態分析(如IDA pro)的手段,觀察反彙編代碼、內存地址、寄存器來分析指令背後的功能操作,依據此"倒推"源代碼,這就是軟件逆向工程的基本任務。

難者不會、會者不難,淺述軟件編程和逆向分析的區別

IDApro能夠分析程序指令執行流程,尤其是著名的F5大法! 逆向工程師必備!

難者不會、會者不難,淺述軟件編程和逆向分析的區別

家喻戶曉的Ollydbg

世界上的程序員多如牛毛,但是真正的具有軟件逆向分析水平的工程師是萬里挑一。

對計算機軟件安全有興趣朋友的歡迎給我私信,評論。看完不要忘記點一下關注哦!更多幹貨等著你!


分享到:


相關文章: