本书下载地址:
a10K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3I4A6j5W2)9J5k6i4k6W2M7Y4W2U0k6q4)9J5k6h3y4G2L8g2)9J5c8U0t1H3x3o6g2Q4x3V1j5I4x3g2)9J5c8U0l9I4i4K6u0r3x3o6l9H3x3o6l9%4x3U0f1H3y4g2)9J5k6h3S2@1L8h3H3`.
大家先看看对自己是否有帮助,然后再选择是否去下载,这样比较节约时间
以下是我对第一章做的笔记,希望对大家有帮助
Reversing: Secrets of Reverse Engineering
Part I Reversing 101 1
Chapter 1 Foundations 3
第一章:基础
What Is Reverse Engineering? 3
逆向就是探索被人特意隐藏了的未知的知识,思想,设计理念等。
Software Reverse Engineering: Reversing 4
逆向需要对电脑以及其软件开发的知识。
逆向包括代码破解,解迷,编程和逻辑分析。
Reversing Applications 4
逆向应用:安全相关和软件开发相关
Security-Related Reversing 5
安全相关的逆向
Malicious Software 5
恶意软件
逆向被恶意程序开发者用于发现系统或其它软件的漏洞或者弱点。(具体见第七章)
逆向又被防毒软件开发者用于跟踪分析病毒,如何杀毒等。(具体见第八章)
Reversing Cryptographic Algorithms 6
密码学算法的逆向
密码学算法可以分为:简单算法和基于钥的算法。
对于简单算法,逆向可以用来跟踪找出算法,对于基于钥的算法,逆向可以用来找出它的安全性漏洞。加密算法有时很脆弱,细小的错误可以导致它失去安全性。
Digital Rights Management 7
数字化版权管理,防拷贝等。(具体见第三部分)
Auditing Program Binaries 7
分析程序代码
开放的代码可以使软件很早发现漏洞并弥补,但是代码不公开的软件就需要逆向来对其进行分析,发现它潜在的漏洞等。(具体见第七章)
Reversing in Software Development 8
软件开发过程中的逆向
Achieving Interoperability with Proprietary Software 8
用于开发和其他相关软件(或操作系统)的兼容的软件。比如探索未知的库代码和未知的API函数,以及和其他公用一些文件。(具体见第五第六章)
Developing Competing Software 8
开发竞争性软件,不是去逆向整个软件,那样很费时间和金钱。
一些需要花费很大精力去开发的复杂算法和特殊组件,可以通过逆向从别人的软件中取出来。
(涉及法律问题)
Evaluating Software Quality and Robustness 9
等到可以熟练得察看2进制代码的时候,就可以通过逆向程序来检测一个软件的质量和效率了。
Low-Level Software 9
低级语言开发的软件(系统软件),一个逆向人员只能看到一个程序低级的一面,而看不到他面向开发者的一面。低级语言是系统最低层次的东西。是程序与CPU沟通的中间层。
Assembly Language 10
汇编语言是用于逆向的语言:
1. 汇编语言就是机器码
2. 每条汇编指令被称作操作代码,它和一些数字组成的序列就是程序的2进制代码。
3. 汇编程序可以用汇编编译程序编译,程序也可以被反汇编程序反汇编成汇编语言的形式。
4. 汇编语言对于不同的硬件是不一样的,我们通常选择Intel 32位 CPU作为我们逆向的平台。
Compilers 11
编译器:一个可以将不同语言转化为机器可识别代码(机器码或字节码)的程序
传统的像C和C++这样的程序编译后就是直接生成机器代码的。对于阅读反编译程序最具有挑战的是编译器的优化功能,它会使得代码很难理解。
Virtual Machines and Bytecodes 12
虚拟机,和字节码
像JAVA和.NET这样的编译器可以将代码转换为字节码而非机器码,将字节码变成机器码执行的程序被称为虚拟机,它是位于字节码程序和CPU之间的平台。这样做的好处就是代码的可移植性。
对于基于字节码的程序的反编译相对于基于机器码的程序来说要简单。十二章将讲述.NET程序的逆向,它生成的是字节码。
Operating Systems 13
操作系统:
作为一个逆向人员,对于系统的理解(做什么的和如何工作的)很重要,因为它操控了整个电脑的硬件与软件。
第三章具体介绍了操作系统。
The Reversing Process 13
逆向的过程
System-Level Reversing 14
系统级(宏观)逆向:使用相关工具对软件进行了解,资料收集。找到感兴趣的部分。
Code-Level Reversing 14
代码级(微观)逆向:通过代码从软件中找出设计思路和算法需要具备操作系统,CPU和软件开发的综合知识。深刻了解高级语言与低级语言的联系,编译器的工作细节,以及高级语言与目标代码的联系。
The Tools 14
工具(具体见第四章)
System-Monitoring Tools 15
程序与外部的联系是通过操作系统完成的,所以我们可以用这些工具来大致了解程序的一些过程。
系统监视工具:网络操作,文件操作,注册表操作等
Disassemblers 15
反汇编程序
现在人们习惯使用调试器内置的反汇编程序。
Debuggers 15
调试器
Decompilers 16
反编译器:它比反汇编高级,可以生成原代码(一般都是相似于原代码)。(具体见第十三章)
Is Reversing Legal? 17
略
Interoperability 17
Competition 18
Copyright Law 19
Trade Secrets and Patents 20
The Digital Millenium Copyright Act 20
DMCACases 22
License Agreement Considerations 23
Code Samples & Tools 23
Conclusion 23
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课