Binary-Security-Assembly

在二进制研究中对优质的资源进行整合。老年人表示好记性的确不如烂笔头。方便自己lookup&review,也为后来人乘凉。本博文永久更新。

Binary-Security-Assembly

Books

一些基础的必修书籍以及品相平庸的我就不一一枚举了,以下提到的都是我已经读过或者正在阅读的优质书籍。我会简要的写一点评价,鉴于本人才疏学浅,难免有失偏颇,故仅供参考。

  • 《0day安全:软件漏洞分析技术》

    书评:

    ​ 可以说是Windows漏洞研究入门的圣经。也正是这本书带我入了漏洞分析的大门(keng)。由于本书纂写的时间较早,很多现代的流行保护技术并不能cover,对堆的理解也仅限于2k/xp sp1的时代。但其中对经典栈溢出的几种利用手法、ASLR/DEP/GS的绕过、SEH的机理再到safeSEH的保护,可以说是教科书般的诠释。书中亦曾提到fuzzing相关内容以及web安全的只言片语(彼时web安全尚不成体系),平添趣味。

    ​ 早年我曾有幸购入一本实体书,现已绝版。电子资源pdf比比皆是,不予枚举。

    推荐指数:10

  • 《加密与解密》

    书评:

    ​ 看雪掌门人的教科书,如果说0day安全带我入了漏洞分析的大门,那么这本书带给我的则是基础技能的学习(调试器、静态动态分析、PE结构、加密解密算法)以及软件保护方面知识的扩展。本书面面俱到却也往往点到为止,旨在做一个科普形式的入门级铺叙。看雪论坛此前发起过本书的升级出版事宜,却又无疾而终。

    ​ 时隔多年,依稀记着买到实体书的那个夜晚,通宵达旦,畅快淋漓。

    推荐指数:10

  • 《漏洞战争》

    书评:

    ​ 你可能不认识riusksk这个id,但一定听说过泉哥的传奇故事。这本书记录了泉哥3年来呕心沥血的优质CVE调试笔记,最终于2016年发布。由于时间线颇为靠后,所以涵盖了很多现代漏洞分析与利用的奇技淫巧,书中的CVE主要集中在Windows平台,也有几个Android相关的漏洞解读,横贯了栈溢出、堆溢出、UAF、内核漏洞等方方面面。

    ​ 这本书的阅读门槛较高,需要读者预先掌握漏洞分析各方面的理论基础并具有一定的动手能力。CVE的分析过程限于篇幅无法详尽到每个点(各种巧妙的exp,不是靶场那种一目了然可以比拟的),需要自行复盘以挖掘其中精妙。

    ​ 我是在这本书出版不久的时候,逛书店无意中看到,想来也是有缘,遂匆匆购入。

    推荐指数:10

  • 《C++反汇编与逆向分析技术揭秘》

    书评:

    ​ 手把手教你怎么反汇编C/C++。对C/C++常见的语法糖的反汇编表现形式进行了拆解。本书适合逆向分析初学者入门,想要完全掌握本书的内容,需要对Windows底层有一定了解。

    ​ 书的最后章节还对臭名昭著的蠕虫——熊猫烧香进行了分析,作者也是很有情怀。

    推荐指数:9

  • 《IDA Pro权威指南》

    书评:

    ​ 屠龙宝刀、点击就送!很自信的说,玩二进制的没有人离得开IDA。这本书就是IDA的说明书,全面、准确、不可多得。很惭愧的说,我没完整的读过这本书(枯燥啊),多数时候是作为reference,这可能就是我只会拙劣的使用IDA的原因吧。

    推荐指数:7

  • 《Windows PE权威指南》

    书评:

    ​ 专门讲Windows的PE格式,不仅充当了手册,还涉及了PE相关的编程技术。也是比较枯燥的一本书,但绝对好过官方手册。如果你想对PE有一个全盘的理解,进而研究Windows的可执行文件的保护与壳、PE病毒分析,那么本书是必读的捷径。

    推荐指数:7

  • 《程序员的自我修养——链接、装载与库》

    书评:

    ​ 很早以前就在书店看到过这本书,由于名字过于中二,直接就把武断的归类于什么21天精通XXX这类书籍。后来无意中在看雪论坛看到了该书的节选引用,一时震惊,果断入了实体书。

    ​ 这本书涉及了Windows和Linux两个平台,讲解了PE与ELF两种文件格式,也剖析了两个平台的应用程序在编译、链接、装载、运行四个时刻发生的事宜。美中不足的是每个阶段的阐述还是不够细腻,我在阅读的时候还参考了源码以及大量的其他资源。然在有限的篇幅中能做出如此准确全面的阐释,足以叹为观止。

    推荐指数:10

  • 《恶意代码分析实战》

    书评:

    ​ 诸葛领队译,质量绝对保证,内容比较杂,围绕着恶意代码的常见表征对调试手法进行了讲解。书篇幅较长,不乏干货,美中不足的是技术深度参差不齐,字里行间可以看出作者在攥写本著作时,定位难度系数时的摇摆犹豫。这也是国外很多技术作家的通病。

    ​ 总体来讲还是很适合新手来通读的,一些看不懂的地方就暂且放一放,时机未到不用硬磕。

    推荐指数:8

  • 《Reverse Engineering for Beginners》

    书评:

    ​ 简称RE4B,见名知意。与其说是书籍,不如说是一位逆向工程师精心编排的手稿汇编。本书在各流行编译器、CPU架构上对高级语言(主要是C/C++)的反汇编指令进行了阐释,内容颇丰,动手能力强,非基础章节的阅读还需要自行扩展阅读大量的资料。书是免费的但没有中文译本(其实有但尚未完善),读英文译本即可。

    推荐指数:9

  • 《软件保护与分析技术——原理与实践》

    书评:

    ​ 看雪大牛netsowell的密界心得。本书归纳了流行的软件保护技术以及软件破解手法,但对于VM技术则点到为止(实际上在另一本书中展开)。本书还手把手指导了一些调试软件时需要的小工具的制作,真正做到授人以渔。本书主要是归纳,所以内容不是很详细,适合有了一定的破解经验但不知所以然的安全研究者。

    推荐指数:7

  • 《代码虚拟与自动化分析》

    书评:

    ​ netsowell的进阶之作,专门讲解密界当下最为主流,难度也最高的VM技术。这本书我还没看完,个人对于VM技术的理解也止步于入门阶段,待我择日研习后,再做注解。

    推荐指数:null

  • 《软件调试》

    书评:

    ​ 微软工程师手把手教你Windows调试。本书讲调试相关的理论,从底层到上层,看罢会对整个调试机制有一个全盘的认识。这本书无疑是硬核的,由于书主要讲调试,所以在谈到Windows内核的中断、异常、陷阱以及ring0/3态时裁剪掉了很多内容。这就需要读者预先熟悉Windows内核。

    推荐指数:9

  • 《格蠹汇编 软件调试案例集锦》

    书评:

    ​ 《软件调试》的姊妹篇,这本书记载了使用Windbg调试解决问题的大量案例。一些理论讲解会充斥在调试过程中,阅读起来趣味横生,悬疑小说即视感。

    ​ 很早以前,我曾在书店看到过这两本,多年以后始觉其价值所在,但恨已无实体书可入,心下戚戚然。

    推荐指数:9

  • 《黑客攻防技术宝典——系统实战篇》

    书评:

    ​ 这本书相当老了,如果没有那本0day,或许这本书会成为入门的圣经。书名虽然中二,但内容确实扎实。书名可以看出这是一个系列,而这本专注二进制安全的则是最老的一本。

    ​ 我只读过前半本,后面的测试审计则没有研读过。这本书的立足点比较高,比起落实下去的奇技淫巧,更多讲授的是归纳出来的漏洞分析方法论。非常希望这本书能够升级换代。

    推荐指数:7

  • 《Rootkits——Windows内核的安全防护》

    书评:

    ​ Windows内核驱动编程中,恶意程序与防护软件常用的各类手法。倾向于实战性的铺叙,原理层面则谈得不多。时隔多年,不知道书中资源所在的website还健在否?

    推荐指数:7

  • 《黑客攻防技术宝典——反病毒篇》

    书评:

    ​ 比较新的书,不久前刚入了一本实体还没来得及阅读。走马观花了一番,虽涉猎甚广但不够深入。有时间要好好研读。

    推荐指数:null

  • 《Windows核心编程》

    书评:

    ​ 经久不衰的神作,站在内核的角度居高临下看用户态的那些事儿。阅读本书,不仅能够掌握Windows系统各个模块API的正确使用,也能够窥得Windows内核一二。

    ​ 我在阅读这本书的时候,尚还只是堪堪刷过《Windows程序设计》的毛头小子,彼时对于OS的理解也是停留在课本所讲的概念上。这本书启蒙了我对OS的认知,在后期阅读《Windows内核情景分析》、《Windows内核原理与实现》、《Windows Internals》等Windows内核相关书籍时,理解起来也更加平滑。

    推荐指数:10

  • 《Windows程序设计》

    书评:

    ​ 迫于形势,这本书的第六版已经转去讲C#了(确切的说,是.Net),而第五版虽然老旧,确是基于Windows SDK进行API的讲解,段落章节更是渗透了Windows系统繁杂的知识点。本书的第五版被业内人士奉为圣经,教科书般的展示了SDK方方面面正确的开发姿势。

    ​ 这本书非常之厚,对于入门者有着强大的劝退效果,但实际上却并不难啃。另一方面,研究Windows底层二进制是无论如何也绕不开原生API编程的。

    推荐指数:9

  • 《Windows内核安全与驱动开发》

    书评:

    ​ 在Windows驱动编程界内,楚狂人算得上赫赫有名,而本书也基本上出自楚狂人之手。实际上在本书问世前,有着Windows驱动编程的三剑客——《天书夜读》、《寒江独钓》、《竹林蹊径》。本书是前两本的重构(前两本也是楚狂人写的),修改了一些示例代码的bug,更新了一些Windows7以上平台的新知识点。

    ​ 对于二进制安全研究者来说,Windows内核驱动编程是颇为重要的基本功,尤其是从事安全防护、反病毒木马的工程师。

    ​ 我在这本书问世前,已经读过了它的两个蓝本,唯有一本竹林蹊径不曾看过。记得竹林蹊径主要是讲PCI、USB相关,而我一时竟无此意欲,毕竟不同组件的驱动程序在Windows平台上迥然有别。

    推荐指数:7

  • 《Windows内核原理与实现》

    书评:

    ​ 这本书很老了,老到甚至不是在wrk1.2版本上做的阐释。潘老师的这本书深入浅出,对Windows内核的各个层面、各个组件进行了较为完整的陈述。这本书没有通篇的代码引用,采用的是高度的语言概括,这对于一些阅读源码较为吃力或急于求成的人来说,无疑是了解Windows内核最为有效的捷径(当然潘老师也在书中的每个地方给出了源码所在位置,并期望读者去自行阅读)。

    ​ 对于不开源的Windows来说,wrk极具参考价值,不管新的机制如何更迭,最原始的设计思想不会变更。

    ​ Windows内核体积过巨,这本书也无出意外的无法涵盖内核的方方面面,另一方面,想要通过堪堪千页便通晓内核,也未免太奢侈了。

    推荐指数:10

  • 《Windows Internals》

    书评:

    ​ 微软工程师编纂的神作,所以说解铃还须系铃人,自家人写的剖析注解就是透彻。遗憾的是,这本书仅有第六版上册的译本(深入解析Windows操作系统),下册的译本据说是夭折了,原因未知。而本书的下册内容同样丰富(存储管理、内存管理、文件系统、I/O),所以需要读者有一定的英文功底。好在看雪论坛上曾有前辈翻译过下册的几个比较重要的篇章,难能可贵的是,还加入了自身的理解,不得不感概同是天涯沦落人。

    ​ 当然,本书的作者考虑到需要避嫌,所以并没有直接拉出源代码来层层解读,其所能做的只能是高度的抽象与概括,阐述实现的思想与设计方案。所以,在阅读本书时,多参考wrk,多使用windbg调试kernel,会有不小的收获。

    推荐指数:10

  • 《Windows内核情景分析》

    书评:

    ​ 我时常亲切的称这本书为“毛批”。毛德操老师另外一本姊妹篇是《Linux内核源代码情景分析》,两书的风格相近,这一本的布局表达更成熟老练一些。由于Windows不开源,所以本书是基于ReactOS内核分析的,至于ReactOS是一群逆向爱好者对Windows内核的翻写,可以说除了wrk,它的参考价值最大(尽管一些细节上的处理和wrk不同,但瑕不掩瑜)。

    ​ 我买的第一套(分上下册)通往Windows内核的书籍,尽管由于当初水平有限,尘封多年,却也拓展了视野。

    推荐指数:8

  • 《Linux内核源代码情景分析》

    书评:

    ​ 另一本“毛批”,年代久远,讲解的甚至是2.4的内核。这本书对于细节上的讲解非常细腻,对每个知识点都进行了深度递归。然而,由于篇幅有限,OS的各个模块都只是筛选出几个知识点进行了解读,很多重要的内容并未叙述,盖因毛老师考虑到既然无法深入讲解到每个知识点,那么只言片语也毫无意义,干脆绝口不提。

    推荐指数:7

  • 《深入理解Linux内核》

    书评:

    ​ 大名鼎鼎的ULK,我个人是建议读英文原版的。一方面有些相近的概念翻译过来有点冲突(比如各种组件中的缓存),另一方面一些术语转化成中文丢失了原本的韵味。原版亦是行云流水,而书的内容也类似于潘爱民的《Windows内核情景分析》的风格,摒弃了通篇的代码,从逻辑上概括了每个组件的设计与思想。

    ​ 这本书是基于2.6版本的内核,与当前4.x的内核结构还是有着不小的差别,尽管如此,在当下还没有任何一本讲4.x内核的书可以相形媲美(《奔跑吧Linux内核》还差点火候,内容不够详实且多处字眼不准确起误导作用)。如果想要了解Linux内核,那么ULK无疑是首选。

    推荐指数:10

  • 《linux内核设计与实现》

    书评:

    ​ 这本书只有堪堪300多页,却涵盖了Linux内核的诸多关键组件。这本书对进程调度、中断和内核同步有着非常详细的介绍,可以作为ULK的姊妹篇来通读。本书言简意赅,对内核进行了一番抽丝剥茧,非常适合新手入门Linux内核。

    推荐指数:8

  • 《Linux设备驱动程序》

    书评:

    ​ Linux驱动开发必备,就好比学Windows驱动要看楚狂人和张帆一样。这本书篇幅较短,且没有对示例程序进行逐一的阐释,所以如果脱离了示例程序,那么只能是看得云里雾里。诚然,对于驱动程序来说,动手实践才是王道!

    ​ 如果你对Linux内核有了较为深入的理解,那么阅读本作当是轻车熟路,也更容易理解什么样的驱动程序是正确的。

    推荐指数:9

  • 《Unix环境高级编程》

    书评:

    ​ POSIX标准的那些事儿,使用标准的API来进行用户层的C编程,可以说是POSIX编程的圣经。本书涵盖面非常之广,从文件、I/O到进程环境与控制再到进程间通信,教科书般展示了POSIX编程之道。

    ​ 这本书是我入门Linux编程的第一本书,如同《Windows程序设计》一般,博大精深,概念清晰,内容权威,理解起来很舒服。

    推荐指数:10

  • 《Unix网络编程 卷1:套接字联网API》

    书评:

    ​ Windows有winsock,Linux对应也有自己的socket库,在学习了计算机网络、TCP/IP协议后,就可以来尝试使用socket编程完成各种各样的网络应用。本书着重讲socket编程但绝不仅限制于socket编程。

    ​ 由于工作性质,每每和TCP/IP打交道,所以这本《Unix环境高级编程》的姊妹篇也就一并读了。这本书的卷二是讲进程间通信的,我没有读过(由于此前已读过《Unix环境高级编程》),所以就不提出来了。

    推荐指数:7

  • 《琢石成器 windows环境下32位汇编语言程序设计》

    书评:

    ​ 年代久远的Win32汇编。本书不是讲汇编语言,而是讲如何用masm32来编写Windows程序(调用Windows原生API)。老罗的惊艳之作,算是一本比较另类的Windows程序设计书籍。

    ​ 我早年的时候非常喜欢这本书,一直苦于售罄而未能购入一本实体书。后来在一位毕业学长的书摊前淘得此书,九成新(学长说没有翻过),以高价购入(记得学长很忐忑的要价40,我直接给了50,在学长学姐一片关爱智障的眼神中心满意足的离开),慰矣。

    推荐指数:6

Course

##Papers

ROP

栈相关

堆相关

格式化字符串

Misc

内核

虚拟机逃逸

漏洞挖掘

CTF

Practice

Reverse

文章目录
  1. 1. Binary-Security-Assembly
    1. 1.1. Books
    2. 1.2. Course
      1. 1.2.1. ROP
      2. 1.2.2. 栈相关
      3. 1.2.3. 堆相关
      4. 1.2.4. 格式化字符串
      5. 1.2.5. Misc
      6. 1.2.6. 内核
      7. 1.2.7. 虚拟机逃逸
      8. 1.2.8. 漏洞挖掘
      9. 1.2.9. CTF
    3. 1.3. Practice
      1. 1.3.1. Reverse
,