《Reverse Engineering for Beginners》读书笔记(一):前言

(258) 2024-03-17 10:01:01

研究逆向工程《RE for beginners》一定是本好书,我只能去找英文看,为什么不看中文的原因就不解释了。这本书英文有1000多页,工程量有点大!

《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第1张

看看这些目录,真心佩服老外写的书,生怕看书的人看不懂,点赞!

《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第2张《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第3张《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第4张《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第5张

《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第6张《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第7张《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第8张《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第9张

《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第10张《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第11张

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

前言

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

有两个头衔是什么?

这本书在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找到。

关于作者

《Reverse Engineering for Beginners》读书笔记(一):前言 (https://mushiming.com/)  第12张

Dennis Yurichev是一位经验丰富的逆向工程师和程序员。 可以通过电子邮件联系他:dennis@yurichev.com。

赞书之语

•“现在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 Ramondino,Paolo Stivanin,twyK,Fabrizio Bertone,Matteo Sticco。
将书翻译成法语:Florent Besnard,Marc Remy,Baudouin Landais,TéoDacquet,BlueSkeye @ GitHub。
将这本书翻译成德语:Dennis Siekmeier,Julius Angres,Dirk 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​​。
问:我有一个问题......
答:通过电子邮件发送给我(dennis@yurichev.com)。

如何学习编程

很多人一直在询问它。
没有“皇家之路”,但有很有效的方法。
根据我自己的经验,这只是:从以下方面解决练习:
•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:我不是一个看事情非白即黑的人,但是我比较尊重别人劳动成果,我不是一个极客,但是比较支持技术本无罪。

THE END

发表回复