“逆向工程”一词用在软件工程领域的具体含义历来模糊不清。逆向工程是一种分析目标系统的过程,旨在识别系统的各组件以及组件之间的关系,以便通过其他形式或在较高的抽象层次上,重建系统的表征。按照目标系统的分类划分,人们常说的“逆向工程”大体可分为:
(1)软件逆向工程。研究编译后的可执行程序。
(2)建模逆向工程。扫描3D结构并进行后续数据处理,以便重现原物。
(3)重建DBMS结构。
本书仅涉及上述第一项,即软件逆向工程的知识范畴。
x86/x64、ARM/ARM64、MIPS、Java/JVM。
本书中涉及如下一些话题:
Oracle RDBMS(第81章)、Itanium(IA64,第93章)、加密狗(第78章)、LD_PRELOAD(67.2节)、栈溢出、ELF、Win32 PE文件格式(68.2节)、x86-64(26.1节)、critical sections(68.4节)、syscalls(第66章),线程本地存储TLS,地址无关代码PIC(67.1节)、以配置文件为导向的优化(95.1节)、C++ STL(51.4节)、OpenMP(第92章),SEH(68.3节)。
姓名:Dennis Yurichev
特长:逆向工程及计算机编程
联系方式:E-mail dennis(a)yurichev.com
Skype dennis.yurichev
安天安全研究与应急处理中心(安天CERT),是承担安天安全威胁应急处理、恶意代码分析、APT攻击分析取证等方面工作的综合研究和服务的部门,由资深安全工程师团队组成。安天CERT以“第一时间启动,同时应对两线严重威胁”为自身能力建设目标,在红色代码Ⅱ、口令蠕虫、震荡波、冲击波等重大安全疫情的响应中,提供了先发预警、深度分析和解决方案;并在2010年后针对震网、毒曲、白象、方程式等APT攻击组织和行动,进行了深入的跟踪分析。分析成果有效推动了安天核心引擎和产品能力的成长,获得了主管部门和用户的好评。
感谢耐心回答我提问的Andrey “herm1t” Baranovich和Slava “Avid” Kazakov。
感谢帮助我勘误的Stanislav “Beaver” Bobrytskyy、Alexander Lysenko、Shell Rocket、Zhu Ruijin和Changmin Heo。
感谢Andrew Zubinski、Arnaud Patard (rtp on #debian-arm IRC)和Aliaksandr Autayeu的鼎力支持。
感谢本书的中文版翻译Archer和安天安全研究与应急处理中心。
感谢本书的韩语版翻译Byungho Min。
感谢校对人员Alexander “Lstar” Chernenkiy、Vladimir Botov、Andrei Brazhuk、Mark “Logxen” Cooper、 Yuan Jochen Kang、Mal Malakov、Lewis Porter和Jarle Thorsen。
特别感谢承担最多校对工作的,同时也是补救最多纰漏的朋友Vasil Kolev。
感谢封面设计Andy Nechaevsky。
感谢github.com的朋友,谢谢他们所发的各种资料以及勘误。
本书使用了LaTeX的多种工具。在此,我向它们的作者表示敬意。
希望鼓励作者继续创作的读者,通过下述网站进行捐赠:
Dennis Yurichevdonate.html
为了表示感谢,每位捐赠者都会获得题名。此外,捐赠者感兴趣的内容将会被优先更新或补充。
25 * anonymous, 2 * Oleg Vygovsky (50+100 UAH), Daniel Bilar ($50), James Truscott ($4.5), Luis Rocha ($63), Joris van de Vis ($127), Richard S Shultz ($20), Jang Minchang ($20), Shade Atlas (5 AUD), Yao Xiao ($10), PawelSzczur (40 CHF), Justin Simms ($20), Shawn the R0ck ($27), Ki Chan Ahn ($50), Triop AB (100 SEK), AngeAlbertini (10+50 EUR), Sergey Lukianov (300 RUR), LudvigGislason (200 SEK), Gérard Labadie (40 EUR), Sergey Volchkov (10 AUD), VankayalaVigneswararao ($50), Philippe Teuwen ($4), Martin Haeberli ($10), Victor Cazacov (5 EUR), Tobias Sturzenegger (10 CHF), Sonny Thai ($15), BaynaAlZaabi ($75), Redfive B.V. (25 EUR), JoonaOskariHeikkilä (5 EUR), Marshall Bishop ($50), Nicolas Werner (12 EUR), Jeremy Brown ($100), Alexandre Borges ($25), Vladimir Dikovski (50 EUR), Jiarui Hong (100.00 SEK), Jim_Di (500 RUR), Tan Vincent ($30), Sri HarshaKandrakota (10 AUD), Pillay Harish (10 SGD), TimurValiev (230 RUR), Carlos Garcia Prado (10 EUR), Salikov Alexander (500 RUR), Oliver Whitehouse (30 GBP), Katy Moe ($14), Maxim Dyakonov ($3), Sebastian Aguilera (20 EUR), Hans-Martin Münch (15 EUR), JarleThorsen (100 NOK), VitalyOsipov ($100)。
Q:学习汇编语言有何用武之地?
A:除去开发操作系统的研发人员之外,现在几乎没有什么人还要用汇编语言编写程序了。目前,编译程序优化汇编指令的水平已经超越编程人员的脑算水平[1],而且CPU越来越复杂——即使一个人具备丰富的汇编语言的知识,也不代表他有多么了解计算机硬件。但是不可否认的是,汇编语言的知识至少有两大用处:首先,它有助于安全人员进行安全研究、分析恶意软件;其次,它还有助于帮助编程人员调试程序。本书旨在帮助人们理解汇编语言,而不是要指导读者用汇编语言进行编程。所以,作者组织了大量的源代码和对应的汇编指令,供读者研究。
Q:这本书太厚了,有没有精简版?
A:精简版可从网上下载:http://beginners.re/#lite
。
Q:逆向工程方面的就业情况如何?
A:在reddit等著名网站里,很多著名公司一直在招聘熟悉汇编语言和逆向工程的IT专家,甚至专门招聘逆向工程领域的安全专家。有兴趣的读者可以访问以下网址:
http://www.reddit.com/r/ReverseEngineering/
http://www.reddit.com/r/netsec/comments/221xxu/rnetsecs_q2_2014_information_security_hiring
Q:我想要提些问题……
A:作者的邮件地址是:dennis(a)yurichev.com。
读者还可以在我们的网站forum.yurichev.com参与互动。
“构思精巧……而且免费……确实不错”——Daniel Bilar, Siege Technologies, LLC。
“……了不起的免费读物!”——Pete Finnigan, Oracle RDBMS security guru。
“……引人入胜,值得一读!”——Michael Sikorski,《Practical Malware Analysis: The Hands-On Guide to DissectingMalicious Software》的作者。
“……谨向这本出色的教材致以个人的敬意!”——Herbert Bos,阿姆斯特丹自由大学教授,《Modern Operating Systems(4th Edition)》作者之一。
“……令人惊讶、难以置信”。——Luis Rocha, CISSP / ISSAP,技术经理,Verizon业务部网络及信息安全中心。
“感谢如此辛劳的作者、感谢如此精彩的书。”——Joris van de Vis, SAP 集成平台及安全专员。
“……部分内容可圈可点。”——Mike Stay,教员,联邦执法训练中心,Georgia, US。
“这本书超赞!我的数名学生都在学习这本书,我计划把它当作研究生教材。”——Sergey Bratus,计算机科学系研究助理教授,(美)达特茅斯学院。
“Dennis Yurichev发表了一本逆向工程方面的宝典(还免费)!”TanelPoder, Oracle RDBMS性能调控专家。
“这本书可谓初学者的百科全书……”——Archer,中文译者,IT安全研究员。
[1] 可查阅参考文献[Fog13b]。