亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
1224
2025-04-01
文章目錄
一.如何學好軟件逆向技能
1.軟件逆向前沿
2.逆向技能學習路線
二.安全系列書籍及工具推薦
三.呂布傳游戲逆向分析
四.總結
系統安全:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
網絡安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study
聲明:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護,更推薦大家了解它們背后的原理,更好地進行防護。(參考文獻見后)
一.如何學好軟件逆向技能
1.軟件逆向前沿
怎么學好軟件逆向技能呢?
錢老師說“軟件逆向屬于搬磚活”。哈哈!的確,任何技術、任何學科方向,都是在你剛開始參與實際工作時,會覺得很好玩,當你做多了之后,就會覺得它是搬磚活。你剛開始接觸它,會覺得是技巧,如果你每天都靠這個吃飯,就不再是技巧了。
在逆向分析中,很多人都會去網上學習脫殼之類的教程,會教你在哪個地方下斷點,按幾下F7、F8、F9后,就到了指定位置然后右鍵脫殼,這一系列操作是大師多年的經驗積累。你可能學會了這個最簡答的方案,卻不理解具體的原理。第一個提出方案的人他需要走過這個殼各種各樣的坑,才會形成這個所謂的技巧,它就是為了節約時間和人力成本,無數次重復工作且不影響質量的解決方案。
這種最優解決方案提供給新人看的時候,他會覺得充滿了技巧性或不理解,但大家在學習逆向分析的時候,還是少琢磨技巧,干就對了。市面上會有各種各樣的工具,比如脫殼,你需要先去學會寫殼,寫好殼,才會覺得殼有多么的脆弱,我的程序里到處都有BUG,如果別人觸發了程序的某個點,我的殼可能就會被摧毀。同時,還有人會研究反調試,甚至匯編出反調試技巧十幾則,你為什么發現不了呢?為什么不能自己總結一個呢?只要你自己寫一個調試器,就會出現很多方案。當你寫完一個調試器之后,你會發現調試器也很脆弱,一不小心某個樣本就會把你的調試器給弄奔潰,那么一旦你找到樣本規律,對于你的調試器而言就是一種反調試。所以,如果你只是學習網上別人的脫殼、反調試技巧,這是沒用的,你需要去深入實踐和理解,然后總結屬于自己的技巧。
對于對抗行業而言,它是沒有一點僥幸而言,你能把對手按在地上摩擦,你就算贏了。同樣,很多時候我們只看到安全分析人員光鮮的一面,只看到最后幾秒鐘那個補丁、攻擊的厲害,卻不知道分析人員已經被這個殼、調試折磨得不行,反復躺坑最終才能解決。所以,對抗考驗的是人的任性和基本功。
任性:信念支撐
基本功:寫代碼、讀代碼
基本功很重要,網上現在三天學會脫殼、兩天學會反調試之類的教程很多,我們需要卻是基本功。比如,我們在掃雷逆向分析時,關于OllyDbg的教程也非常多,它們詳細講解每個功能干什么,這些功能其實都可以簡略學習,我們需要做的是把下圖所示的反匯編窗口的代碼搞明白就OK了。?這些自動化工具可能不是很熟悉,只是工作效率慢點;但換個角度,如果OD工具中的每個功能及快捷鍵你都會用,但是反匯編窗口的代碼看不懂,那你不就廢了嗎?所以,大家的注意力應該放到反匯編窗口。
同樣,對于IDA靜態分析也是一個道理,它也有很多的功能,但我們的重點其實還是代碼窗口。因為搞安全的人會遇到很多資料,歸納學習總結是必備的技能(通過訓練是可以培養出來的),它能幫助你快速的找到重點。所以,技巧不是決定性因素,逆向分析人員真正拼的是基本功。
那么,如何學好編程語言或逆向分析呢?
不要這樣學習:
只看書,不上機
只運行,不調試
只做課后練習,不做工程項目
應該這樣學習:
多敲代碼,重要實戰
程序不是寫出來的,是調出來的
根據自己的興趣或者市場的需要多做一些有一定規模的項目
逆向分析底層推薦的三門課程:
數據結構
操作系統
編譯原理:逆向的理論知識課程,想要逆向反匯編,還原成高級代碼,就需要對編譯器有一定了解,否則只能去看別人公布的技巧。
比如《操作系統》課程,你能不能做一個小型的操作系統出來呢?《編譯原理》你能不能找到開源的編譯器看看詞法分析、語法分析的源代碼,寫點注釋呢?2000年之前錢老師是玩黑客工具的,但后來發現學不到本質,學的都是技巧,而技巧是有時效性的,所以想學好還得研究其本質,并且逆向分析底層的知識很少更新,而上層技術更新較快。
2.逆向技能學習路線
在??梢宰瞿男╉椖繙蕚淠??
關注網絡社區,參與技術討論,推薦看雪論壇
搜索安全公司招聘信息,了解技能要求(逆向技能表)
針對性開發實際項目
科銳逆向公司在看雪分享的逆向資料推薦大家去學習下。
逆向并公開Ollydbg的原理
逆向并公開xp版CreateProcess的原理及流程分析
逆向并公開Win7 x64版CreateProcess的原理及流程分析
逆向并公開xp版ReadProcessMemory原理及流程分析
逆向工程技能樹
下面給出軟件逆向工程的技能表,包括提前知識、基礎技能、開發技能、逆向技能、學習書單和實踐項目。
(1) 基礎技能
包括匯編語言、C語言、C++語言、數據結構,至少得學一個低級語言和高級語言,然后會一個面向對象語言,重點是數據結構。
(2) 開發技能
逆向分析需要懂開發,開發至少需要了解一個操作系統平臺的編程,可以選擇Windows或Linux,如Windows SDK編程;然后至少了解一種框架(Java框架、微軟MFC等)。同時,需要懂網絡編程(Socket、TCP、HTTP等),有空可以了解下設計模式,學習設計模式前需要有項目經驗,因為閱讀大型項目代碼時會遇到。然后,數據庫是必須要學習的技能,非常重要。
在數據庫學習中,大家應該好好學習下數據關系理論(范式、集合等),而大家可能更關注后面的SQL語句。為什么呢?因為語句是可能變化的(如Neo4j和MySQL不同),而關系理論一直在那里。同時,我們的操作系統也可以理解為一個專用型數據庫,它的職責是管理和分配硬件資源的。比如,我們的系統有50個以上進程在跑,一個32位進程的理論地址空間假設是2G,這就需要100G的內存,那怎么解決這個問題呢?通過數據關系可以解決。微軟的操作系統都用到了數據關系,都會建表和主外鍵,從而避免空間的無故或重復占用。
(3) 逆向技能
逆向技能比較偏實戰,Windows逆向包括OllyDbg、PE文件格式、IDA使用、Windows內核驅動開發(核心操作系統),Android逆向包括BakSmail、DEX文件格式、Linux內核、NIX操作等。
(4) 學習書單
主要推薦編程語言開發、數學基礎、數學結構與算法、操作系統、編譯原理、軟件分析、、工具及參考手冊等書籍。數學基礎也非常重要,但我們逆向以應用為主,數學簡單了解就好。
編寫一個小游戲,如俄羅斯方塊、五子棋、貪吃蛇、坦克
(2012年大二完成《墜夢》等多款游戲)
編寫一個遠控軟件,支持PC、Android
(2014年大四畢設已完成)
編寫一個CAD,支持圖形編輯、圖像變換、存儲
(2013年大三圖形學課完成、2015年完成Android端)
編寫一個調試器
編寫一個小型操作系統
(2013年大三小學期C++實現U盤操作系統)
編寫一個任務管理器,可以對進程、線程等程序活動進行監控
(2014年大四畢設已完成)
編寫一個網絡聊天室,支持多人聊天
(2015年研一Python實現)
編寫一個PE分析工具
做一個針對Windows掃雷的作弊程序
(2020年博一完成)
分析一個RPG游戲存檔并寫程序修改存檔
(2013年大三完成《仙劍1》存檔器)
通過注入方法,為Windows計算機添加一個菜單程序選項
通過注入內聯鉤子,實現對指定程序API監控
詳細逆向分析一個典型的病毒和機理
(2020完成年WannaCry蠕蟲分析)
不用編譯器,只借助十六進制編譯器,可以手寫一個編譯器
從內存中durmp出某應用程序并修復導入表等消息
嘗試PJ看雪論壇Crakeme模塊的各Crakeme習題
(2019年正在進行中)
結合安全機理找到安全漏洞并提交CVE漏洞報告
二.安全系列書籍及工具推薦
作為安全初學者,我結合自己和小伙伴們的經驗,簡單給大家推薦下網絡安全、系統安全和人工智能三個方向的書籍,以及相關技術工具,希望大家喜歡!
首先推薦如下書籍,這些都是我讀過或正在學習的,都還不錯。
網絡安全
《白帽子講web安全》《Web前端黑客技術揭秘》《XSS跨站腳本攻擊剖析與防御》
《Web攻防業務安全實戰指南》《內網安全攻防滲透測試實戰指南》《安全之路Web滲透技術及實戰案例解析》《黑客攻防技術寶典瀏覽器實戰篇》《網絡攻防實戰研究漏洞利用與提權》《CTF訓練營》等。
系統安全
《加密與解密》《惡意代碼分析實戰》《Windows黑客編程技術詳解》
《逆向工程權威指南》《軟件安全》《windows高級編程》《Windows PE 權威指南》《IDA pro 權威指南》《Android軟件安全與逆向分析》《C++反匯編與逆向分析技術揭秘》《0day安全:軟件漏洞分析技術》等。
人工智能
推薦
《機器學習》《深度學習》《統計學習方法》《Malware Data Science》
等。
常見安全網站及論壇:
看雪
(https://bbs.pediy.com/)
看雪論壇是個軟件安全技術交流場所,為安全技術愛好者提供一個技術交流平臺和資源。
freebuf
(https://www.freebuf.com/)
國內關注度最高的全球互聯網安全媒體平臺,愛好者們交流與分享安全技術的社區。
吾愛PJ
(https://www.52pojie.cn/)
吾愛PJ論壇是致力于軟件安全與病毒分析的非營利性技術論壇。
i春秋
(https://www.ichunqiu.com/)
由國內網絡安全機構永信至誠打造的信息安全在線教育平臺,非常多的在線網絡安全資源。
安全客
(https://www.anquanke.com)
提供權威信息發布的漏洞信息,發布安全資訊,分享安全知識和精彩的安全活動直播。
先知社區
(https://xz.aliyun.com/)
一個開放型技術平臺,包括非常優秀的安全技術文章。
Bilibili網站
(https://www.bilibili.com/)
B站真的提供了非常多的各類學習資源,去B站學習安全課程真是不錯的選擇。
微信公眾號
微信公眾號也提供了非常便捷的安全學習環境,包括很多安全資源,推薦安全+、Gcow、謝公子、看雪、滲透云等公眾號。
安全牛
(https://www.aqniu.com/)
安全內參
(https://www.secrss.com/)
綠盟
(http://www.nsfocus.com.cn/)
阿里聚安全
(https://xlab.tencent.com/cn/)
Fiddler(網絡漏洞掃描器)
Burpsuite(網絡漏洞掃描器)
NMap(端口掃描器)
Nessus(漏洞掃描程序)
Wireshark(手動分析包工具)
SQLMAP(滲透測試工具)
Metasploit(漏洞監測工具)
Cobalt Strike(滲透測試框架)
Hydra(密碼破J工具)
Acunetix(網絡漏洞掃描軟件)
pangolin(SQL注入測試工具)
Ettercap(中間人攻擊工具)
Maltego(取證工具)
OWASP Zed(攻擊代理工具)
Caidao(網站滲透工具)
中國蟻劍(網站滲透工具)
冰蝎Behinder(網站滲透工具)
系統安全分析常用工具推薦如下:
OllyDbg(動態分析工具 倚天劍)
IDA Pro(靜態分析工具 屠龍刀)
Windbg(微軟內核級調試工具)
PEiD(查殼工具)
Cuckoo sandbox(開源沙箱系統)
PEView(PE文件查看工具)
010Editor(二進制分析)
Process Monitor(Windows監視工具)
Process Explorer(文件進程查看器)
Cheat Engine(內存修改編輯工具)
Outpost Firewall(共享軟件)
hex editor(十六進制編輯工具)
Ubertooth(藍牙嗅探工具)
匯編語言編譯器
下面分享2019年看雪安全峰會關于攻擊檢測和對抗的常見技術。
三.呂布傳游戲逆向分析
下面以老游戲《新呂布傳》為例,這是非常老的一款游戲。
我們在玩這個游戲的時候會遇到一個問題,就是NPC說話太慢,在不斷地過劇情,我們想逆向分析讓它迅速完成對話,加快我們游戲的進程。
第一步,通過OllyDbg軟件打開呂布傳游戲“Ekd5.exe”。
第二,右鍵點擊“查找”,選擇“當前模塊中的名稱”查看該游戲打開了哪些函數。
返回界面如下圖所示,包括該游戲需要調用的各種函數,并且猜測各種函數的應用場合。
UnhookWindowsHookEx:卸載鉤子消息函數
SetWindowsHookExA:安裝鉤子消息函數
第四步,選中該函數右鍵點擊“在每個參考上設置斷點”。
可以看到已經設置了兩個斷點。
第五步,運行程序或雙擊斷點可以進入反匯編窗口具體位置,可以看到它是一個鍵盤鉤子,并且回調函數為0x0040D307。
Hookproc Ekd5.0040D307
HookType WH_KEYBOARD
CALL SetWindowsHookExA
第六步,雙擊回調函數那行,復制地址40D307,輸入Ctrl+G跟隨到指定位置。
第七步,再跳轉的地址0x0040D307位置按下F2,增加新的斷點。
第八步,按下F9運行程序,并進入對話界面。
第九步,按下某個按鍵,我們來詳細分析這段匯編代碼。
CMP EAX, 20
第十步,給該位置0x0040D32A下個斷點,繼續運行和分析代碼。
當輸入空格相等后,它會比較一個全局變量的值是否為0,然后進入新的CALL。
CMP ptr [500E0C], 0
CALL Ekd5.00406A33
運行代碼進入CALL函數,然后去到0x00406A33位置,如下圖所示,發現它開啟了一個線程。我們接著需要定位到線程的處理函數。
CreateThread
PUSH Ekd4.00406A7F
第十一步,按下Ctrl+G跟隨到0x00406A7F位置,接著分析匯編代碼。
給該位置下個斷點,然后分析該函數內容。發現它首先比較狀態,如果狀態為0就設置個WM_LBUTTONDOWN消息,即點擊鼠標。
Message = WM_LBUTTONDOWN
Message = WM_LBUTTONUP
然后間隔一個Sleep函數,時間為100毫秒,接著又設置一個UP消息,相當于左鍵按下后又彈起來了。
寫到這里,我們發現空格的效果就是反復按下鼠標左鍵又彈起右鍵,原來該游戲已經自帶了過場景的功能,就是按下“空格”,哈哈!但是該游戲的說明書并沒有講述這個按鍵的情況,相當于一個隱藏功能,這里大家也可以進一步修改制作游戲輔助器。這里主要是帶領大家來學習下游戲逆向的過程,尤其是OD工具的基礎用法。
總之,如果你喜歡逆向分析,會非常有意思,包括玩游戲也會從另一個角度思考;但如果你不喜歡逆向,千萬別進這個行業,每天逆向代碼看到想吐,可以換個喜歡的行業,因為逆向分析工作就是每天泡在代碼堆里。
四.總結
寫到這里,這篇文章就介紹完畢,希望對您有所幫助,最后進行簡單的總結下。
一.如何學好軟件逆向技能
1.軟件逆向前沿
2.逆向技能學習路線
二.安全系列書籍及攻擊推薦
三.呂布傳游戲逆向分析
《珈國情》
明月千里兩相思,
清風縷縷寄離愁。
燕歸珞珈花已謝,
情滿景逸映深秋。
(By:娜璋AI之家 Eastmount 2021-06-21 星期天 寫于高鐵)
參考文獻:
真心推薦大家好好看看這些視頻和文章,感恩這些大佬!
科銳逆向的錢林松老師受華中科技大學邀請- “逆向分析計算引導”
c++學習筆記——VS2015中添加graphics.h頭文件 - 行歌er
https://www.bilibili.com/video/BV1J5411x7qz
[網絡安全自學篇] 五.IDA Pro反匯編工具初識及逆向工程解密實戰
[網絡安全自學篇] 六.OllyDbg動態分析工具基礎用法及Crakeme逆向
5G游戲 通用安全
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。