《Reverse Engineering for Beginners》讀書筆記(一):前言

研究逆向工程《RE for beginners》一定是本好書,我只能去找英文看,爲什麼不看中文的原因就不解釋了。這本書英文有1000多頁,工程量有點大!

看看這些目錄,真心佩服老外寫的書,生怕看書的人看不懂,點贊!

=================================================================================

前言

=================================================================================

有兩個頭銜是什麼?

這本書在2014  -  2018年被命名爲“初學者逆向工程”,但我一直懷疑這會使讀者羣過於狹窄。
Infosec人員知道“逆向工程”,但我很少聽到他們的“彙編”字。
同樣,“逆向工程”這個術語對程序員的一般觀衆來說有點神祕,但他們知道“彙編程序”。
在2018年7月,作爲一項實驗,我將標題更改爲“初學者彙編語言”,並將鏈接發佈到Hacker News網站,這本書得到了很好的接受。
所以,現在,這本書有兩個標題。
但是,我已經將第二個標題改爲“理解彙編語言”,因爲有人已經編寫了“初學者彙編語言”一書。此外,人們說“初學者”對於一本約1000頁的書來說聽起來有點諷刺。
這兩本書的不同之處僅在於標題,文件名(UAL-XX.pdf與RE4B-XX.pdf),URL和一些第一頁。

關於逆向工程

“逆向工程”一詞有幾種流行的含義:
1)軟件的逆向工程;研究編制的程序
2)掃描3D結構和隨後的數字操作以便複製
他們
3)重新創建DBMS(數據庫管理系統)結構
這本書講的是第一個含義。

先決條件

C 語言的基礎知識。推薦閱讀:第985頁的12.1.3。

練習和任務

可以在http://challenges.re找到。

關於作者

Dennis Yurichev是一位經驗豐富的逆向工程師和程序員。 可以通過電子郵件聯繫他:[email protected]

贊書之語

•“現在Dennis Yurichev已經將這本書免費(libre),它是對自由知識和免費教育世界的貢獻。”Richard M. Stallman,GNU創始人,軟件自由活動家。
•“它做得非常好......並且免費......太棒了。”Daniel Bilar,Siege Technologies,LLC。
•“......優秀而自由”,Oracle RDBMS安全大師Pete Finnigan。
•“......這本書很有意思,很棒!邁克爾西科爾斯基,實用惡意軟件分析的作者:解讀惡意軟件的動手指南。
•“......我對這個非常好的教程的稱讚!”Herbert Bos,阿姆斯特丹Vrije大學的全職教授,現代操作系統(第4版)的合着者。
•“......令人驚歎且令人難以置信。”Luis Rocha,VerSPon Business的網絡與信息安全技術經理CISSP / ISSAP。
•“感謝你的出色工作和你的書。”Joris van de Vis,SAP Netweaver&Security專家。
•“...... [a]合理介紹一些技巧。”Mike Stay,美國佐治亞州聯邦執法培訓中心的老師。
•“我喜歡這本書!我現在有幾個學生在閱讀它,[並且]計劃在研究生課程中使用它。“謝爾蓋布拉圖斯,計算機科學系研究助理教授 達特茅斯學院
•“Dennis @Yurichev出版了一本令人印象深刻的(並且免費!)關於逆向工程的書籍”Tanel Poder,Oracle RDBMS性能調優專家。
•“這本書對初學者來說是一種維基百科......”Archer,中文翻譯,IT安全研究員。
•“[A]想要學習逆向工程的人的一流參考。它對所有人都是免費的。“MikkoHyppönen,F-Secure

感謝

耐心地回答我的所有問題:Slava“Avid”Kazakov,SkullC0DEr。
向我發送有關錯誤和不準確的說明:Stanislav“Beaver”Bobrytskyy,Alexander Lysenko,Alexander“Solar Designer”Peslyak,Federico Ramondino,Mark Wilson,Xenia Galinskaya,Razikhova
Meiramgul Kayratovna,Anatoly Prokofiev,Kostya Begunets,Valentin“netch”Nechayev,Aleksandr Plakhov,
Artem Metla,Alexander Yastrebov,Vlad Golovkin,Evgeny Proshin,Alexander Myasnikov,朱瑞金,
Changmin Heo,Vitor Vidal,Stijn Crevits,Jean-Gregoire Foulon,Ben L.,Etienne Khan,Norbert Szetei

Marc Remy,Michael Hansen,Derk Ba​​rten,The Renaissance,Hugo Chan,Emil Mursalimov,Tanner Hoke,
Tan90909090 @ GitHub,Ole Petter Orhagen,Sourav Punoriyar,Vitor Oliveira。
以其他方式幫助我:Andrew Zubinski,Arnaud Patard(rtp on#debian-arm IRC),noshadow on
#gcc IRC,Aliaksandr Autayeu,Mohsen Mostafa Jokar,Peter Sovietov,Misha“tiphareth”Verbitsky。
將本書翻譯成簡體中文:Antiy Labs(antiy.cn),Archer。
將這本書翻譯成韓文:Byungho Min。
將這本書翻譯成荷蘭語:Cedric Sambre(AKA Midas)。
將這本書翻譯成西班牙語:Diego Boy,Luis Alberto Espinosa Calvo,Fernando Guida,Diogo
Mussi,Patricio Galdames。
將這本書翻譯成葡萄牙語:Thales Stevan de A. Gois,Diogo Mussi,Luiz Filipe。
將書翻譯成意大利語:Federico RamondinoPaolo Stivanin,twyK,Fabrizio Bertone,Matteo Sticco。
將書翻譯成法語:Florent BesnardMarc Remy,Baudouin Landais,TéoDacquetBlueSkeye @ GitHub
將這本書翻譯成德語:Dennis SiekmeierJulius AngresDirk Loser,Clemens Tamme。
將這本書翻譯成波蘭語:Kateryna Rozanova,Aleksander Mistewicz,Wiktoria Lewicka。
將這本書翻譯成日文:shmz @ github

校對:Alexander“Lstar”Chernenkiy,Vladimir Botov,Andrei Brazhuk,Mark“Logxen”Cooper,
Yuan Jochen Kang,Mal Malakov,Lewis Porter,Jarle Thorsen,Hong Xie。
Vasil Kolev在校對和糾正許多錯誤方面做了大量工作。
插圖和封面藝術:Andy Nechaevsky。
還要感謝github.com上所有提供筆記和更正的人
使用了許多LATEX軟件包:我還要感謝作者。

捐助者

那些在我撰寫本書重要部分時支持我的人:
2 * Oleg Vygovsky(50 + 100 UAH),Daniel Bilar(50美元),James Truscott(4.5美元),Luis Rocha(63美元),Joris vande Vis(127美元),Richard S Shultz(20美元),Jang Minchang(20美元),Shade Atlas(5澳元),Yao Xiao(10美元),Pawel Szczur(40瑞士法郎),Justin Simms(20美元),Shawn R0ck(27美元),Ki Chan Ahn(50美元),Triop AB(100 SEK),Ange Albertini(e10 + 50),Sergey Lukianov(300 RUR),Ludvig Gislason(200 SEK),GérardLabadie(e40),Sergey Volchkov(10澳元),Vankayala Vigneswararao(50美元),Philippe Teuwen(4美元),Martin Haeberli(10美元) ),維克托Cazacov(e5),Tobias Sturzenegger(10瑞士法郎),Sonny Thai(15美元),Bayna AlZaabi(75美元),Redfive B.V.(e25),JoonaOskariHeikkilä(e5),Marshall Bishop(50美元),Nicolas Werner(e12),Jeremy Brown(100美元),Alexandre Borges(25美元),Vladimir Dikovski(e50),Jiarui Hong(100.00 SEK),Jim Di(500 RUR),Tan Vincent(30美元),Sri Harsha Kandrakota(10澳元),Pillay Harish(10新元),Timur Valiev(230 RUR),Carlos Garcia Prado(e10),Salikov Alexander(500 RUR),Oliver Whitehouse(30英鎊),Katy Moe(14美元),Maxim Dyakonov(3美元),Sebastian Aguilera(e20),Hans-MartinMünch(e15),Jarle Thorsen(100 NOK),Vitaly Osipov( $ 100),尤里羅曼諾夫(1000 RUR),Aliaksandr Autayeu(e10),Tudor Azoitei(40美元),Z0vsky(e10),Yu Dai(10美元),Anonymous(15美元),Vladislav Chelnokov(25美元),Nenad Noveljic(50美元),Ryan Smith(25美元),Andreas Schommer(e5)。
非常感謝每位捐贈者!

迷你常見問題解答

問:閱讀本書的先決條件是什麼?
答:對C / C ++的基本理解是可取的。
問:我應該一次真正學習x86 / x64 / ARM和MIPS嗎?不是太多了嗎?
答:初學者可以閱讀x86 / x64,同時跳過或略讀ARM和MIPS部分。
問:我可以購買俄文或英文硬拷貝/紙質書嗎?
答:不幸的是,沒有。到目前爲止,沒有出版商對發佈俄語或英語版本感興趣。同時,你可以要求你喜歡的複印店打印並綁定它。
問:是否有epub或mobi版本?
答:不會。這本書高度依賴於特定於TeX / LaTeX的黑客,因此轉換爲HTML(epub / mobi是一組HTML)並不容易。
問:爲什麼這些天應該學習彙編語言?
答:除非你是OS開發人員,否則你可能不需要在彙編代碼中編寫代碼 - 最新的編譯器(2010s)在執行優化方面比人類更好。
此外,最新的CPUs是非常複雜的設備,彙編知識並不能真正幫助理解他們的內部。
話雖如此,至少有兩個方面可以很好地理解裝配:
首先,對於安全/惡意軟件研究。這也是在調試時更好地理解編譯代碼的好方法。因此,本書適用於那些想要理解彙編語言而不是編寫彙編語言的人,這就是爲什麼包含很多編譯器輸出的例子。
問:我點擊了PDF文檔中的超鏈接,我該如何返回?
答:在Adobe Acrobat Reader中,單擊Alt + LeftArrow。在Evince中單擊“<”按鈕。
問:我可以打印這本書/用它來教學嗎?
A:當然!這就是本書根據知​​識共享許可(CC BY-SA 4.0)獲得許可的原因。
問:爲什麼這本書是免費的?你做得很好。與許多其他免費事物一樣,這是可疑的。
答:根據我自己的經驗,技術文獻的作者主要是爲了自我宣傳的目的。它的
不可能從這樣的工作賺到任何體面的錢。
問:如何在逆向工程中找到工作?
答:在reddit上不時出現招聘線程,致力於RE(2016)。試試看那裏。
一個有點相關的招聘線程可以在“netsec”subreddit:2016中找到。
問:我如何學習一般的編程?

答:掌握C語言和LISP語言使程序員的生活變得更加容易。我會推薦
解決練習[Brian W. Kernighan,Dennis M. Ritchie,C編程語言,2ed,(1988)]
和SICP​​。
問:我有一個問題......
答:通過電子郵件發送給我([email protected])。

如何學習編程

很多人一直在詢問它。
沒有“皇家之路”,但有很有效的方法。
根據我自己的經驗,這只是:從以下方面解決練習:
•Brian W. Kernighan,Dennis M. Ritchie,C編程語言,2ed,(1988)
•Harold Abelson,Gerald Jay Sussman,Julie Sussman  - 計算機程序的結構和解釋
•Donald E. Knuth,計算機程序設計的藝術
•Niklaus Wirth的書
•Brian W. Kernighan,Rob Pike,編程實踐,(1999)
......在純C和LISP中。你將來可能永遠不會使用這些編程語言。幾乎所有的商業程序員都沒有。但從長遠來看,C和LISP編碼經驗將有很大幫助。
此外,你可以自己跳過閱讀書籍,只要你覺得需要了解你目前正在解決的練習中缺少的內容,就可以瀏覽它們。
這可能需要數年或最終,但這仍然比在時尚之間匆匆忙忙。
這些書的成功可能與他們的作者是老師的事實有關,所有這些材料都是先在學生身上磨練的。
從LISP開始,我個人會推薦Racket(Scheme方言)。但無論如何,這都是品味問題。
有些人說彙編語言理解也很有幫助,即使你永遠不會使用它。這是真的。但對於最專注的極客來說,這是一種方式,它可以在開始時推遲。
此外,自學成才的人(包括這些系列的作者)經常會遇到在努力解決問題時過於努力的問題。這是一個很大的錯誤。與運動或音樂相比 - 沒有人以100公斤重量或Paganini的隨想曲開始。我會說 - 如果你可以概述它的解決方案,你可以嘗試解決問題
在你的腦海。

我認爲做研究的藝術很大程度上包括提問,有時候回答問題。瞭解如何重複提出代表你希望解決的重大問題的特殊情況的小型項目。
當你開始探索一些區域時,你首先採取嬰兒步驟,建立關於該領域的直覺。玩許多小例子,試圖全面瞭解一般情況的特定部分。
通過這種方式,你將學習許多屬性爲true,許多屬性爲false。
這爲有效方向和避免方向提供了指導。
最終你的大腦將學會如何採取越來越大的步驟。漸漸,你將準備採取一些巨大的步驟,解決大問題。
但不要止步不前!在這一點上,你將成爲世界上爲數不多的人之一,他們對你的問題領域瞭如指掌。因此,你有責任在這個問題的附近發現其他真實情況,使用相同或類似的方法來解決你的大腦現在可以設想的問題。將你的結果帶到它們的“自然邊界”(在某種意義上類似於複雜變量的函數不再被分析的自然邊界)。
我的小書“超現實數字”提供了正在發生的研究的真實例子。當我第一次研究John Conway關於數字系統的迷人公理時,那個故事中的人物會以與我自己創造的錯誤開始和有用的發現完全相同的順序做出錯誤的開始和有用的發現 - 他的驚人簡單的公理遠遠超出真實價值數字。
(那本書中的一個人物傾向於通過蠻力和耐心獲得成功或失敗;另一個人更內省,能夠看到更大的畫面。他們都在研究時代表了我自己的活動方面。有了這本書我希望通過滲透來教授研究技能,因爲讀者會觀察詳細的案例研究。)
超現實數字涉及純粹的數學主題,並不特別接近計算機科學;它具有代數和邏輯,而不是算法。當算法成爲研究的一部分時,一個美麗的新維度也會發揮作用:算法可以在計算機上實現!
我強烈建議你尋找每個機會編寫程序,以執行與你的研究相關的全部或部分算法。根據我的經驗,編寫這樣一個程序的行爲永遠不會加深我對問題領域的理解。

(Donald E. Knuth  -  https://theorydish.blog/2018/02/01/donald-knuth-on-doing-research/
祝你好運!

關於韓語翻譯

2015年1月,韓國的Acorn出版公司(www.acornpub.co.kr)在翻譯和出版這本書(2014年8月)時做了大量的工作。
它現在可以在他們的網站上找到。翻譯是Byungho Min(twitter / tais9)。封面藝術由作者朋友Andy Nechaevsky完成:facebook / andydinka。 Acorn還擁有韓語翻譯的版權。
因此,如果您想在韓國書架上放一本真正的書籍並希望支持這項工作,現在可以購買。

關於波斯語/波斯語翻譯

2016年,該書由Mohsen Mostafa Jokar翻譯(伊朗社區也稱他爲Radare手冊的翻譯)。它可以在出版商的網站(Pendare Pars)上找到。
以下是40頁摘錄的鏈接:https://beginners.re/farsi.pdf
伊朗國家圖書館註冊信息:http://opac.nlai.ir/opac-prod/bibliographic/4473995

關於中文翻譯

2017年4月,中文翻譯完成了中文翻譯。他們也是中文翻譯版權所有者。
中文版可在此訂購:http://www.epubit.com.cn/book/details/4174。翻譯的部分審查和歷史可以在這裏找到:http://www.cptoday.cn/news/detail/3155
主要翻譯是阿切爾,作者非常感謝。他非常細緻(在很好的意義上)並報告了大多數已知的錯誤和錯誤,這在本書等文獻​​中非常重要。作者會向任何其他作者推薦他的服務!
來自安天實驗室的人也幫助翻譯。這是他們寫的序言

 

PS:我不是一個看事情非白即黑的人,但是我比較尊重別人勞動成果,我不是一個極客,但是比較支持技術本無罪。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章