逆向工程学习教程Reverse Engineering
本帖最后由 playboy 于 2022-2-11 01:13 编辑逆向工程简介逆向工程(也称为反向工程)是一种过程或方法,通过该过程或方法,人们试图通过演绎推理来理解先前制造的设备、过程、系统或软件如何以较少的步骤(如果有的话)完成任务并深入了解它是如何做到的。
逆向工程是适用的领域计算机工程,机械工程,设计,电子工程,软件工程,化学工程,和系统生物学。逆向工程教程简介这套全面的逆向工程教程涵盖 x86、x64 以及 32 位 ARM 和 64 位架构。如果您是想要学习逆向的新手,或者只是想要修改某些概念的人,那么您来对地方了。作为初学者,这些教程将带您从零到逆向工程的中级基础,这是网络安全领域的每个人都应该具备的技能。如果您在这里只是为了刷新一些概念,您可以方便地使用侧栏查看到目前为止已涵盖的部分。教程目录列表中文:
[*]x86 课程
· 第 1 部分:目标· 第 2 部分:技术· 第 3 部分:恶意软件的类型· 第 4 部分:x86程序集介绍· 第 5 部分:二进制数系统· 第 6 部分:十六进制数系统· 第 7 部分:晶体管和存储器· 第 8 部分– 字节、字、双字等…· 第 9 部分:x86基本架构· 第 10 部分:通用寄存器· 第 11 部分:段寄存器· 第 12 部分:指令指针寄存器· 第 13 部分:控制寄存器· 第 14 部分:标志· 第 15 部分:堆栈· 第 16 部分:堆· 第 17 部分– 如何安装 Linux· 第 18 部分– vim 文本编辑器· 第 19 部分– 为什么要学习组装· 第 20 部分– 指令代码处理· 第 21 部分– 如何编译程序· 第 22 部分– ASM 程序 1 [移动即时数据]· 第 23 部分– ASM 调试 1 [移动即时数据]· 第 24 部分– ASM 黑客 1 [移动即时数据]· 第 25 部分– ASM 程序 2 [在寄存器之间移动数据]· 第 26 部分– ASM 调试 2 [在寄存器之间移动数据]· 第 27 部分– ASM 黑客攻击 2 [在寄存器之间移动数据]· 第 28 部分– ASM 程序 3 [在内存和寄存器之间移动数据]· 第 29 部分– ASM 调试 3 [在内存和寄存器之间移动数据]· 第 30 部分– ASM Hacking 3 [在内存和寄存器之间移动数据]· 第 31 部分– ASM 程序 4 [在寄存器和内存之间移动数据]· 第 32 部分– ASM 调试 4 [在寄存器和内存之间移动数据]· 第 33 部分– ASM Hacking 4 [在寄存器和内存之间移动数据]· 第 34 部分– ASM 程序 5 [使用寄存器间接寻址]· 第 35 部分– ASM 调试 5 [使用寄存器间接寻址]· 第 36 部分– ASM 黑客 5 [使用寄存器间接寻址]· 第 37 部分– ASM 程序 6 · 第 38 部分– ASM 调试 6 · 第 39 部分– ASM 黑客 6 · 第 40 部分– 结论
[*]ARM-32 课程 1
· 第 1 部分——生命的意义· 第 2 部分– 数字系统· 第 3 部分– 二进制加法· 第 4 部分– 二进制减法· 第 5 部分– 字长· 第 6 部分– 寄存器· 第 7 部分– 程序计数器· 第 8 部分– CPSR· 第 9 部分– 链接寄存器· 第 10 部分– 堆栈指针· 第 11 部分– ARM 固件引导过程· 第 12 部分– 冯诺依曼架构· 第 13 部分– 指令管道· 第 14 部分– 添加· 第 15 部分– 调试 ADD· 第 16 部分– 逆向 ADD· 第 17 部分– ADD· 第 18 部分– 调试 ADDS· 第 19 部分– 攻击 ADDS· 第 20 部分– ADC· 第 21 部分– 调试 ADC· 第 22 部分– 攻击 ADC· 第 23 部分– SUB· 第 24 部分– 调试 SUB· 第 25 部分– 逆向 SUB
[*]ARM-32 课程 2
· 第 1 部分– 生命的意义第 2 部分· 第 2 部分– 数字系统· 第 3 部分– 二进制加法· 第 4 部分– 二进制减法· 第 5 部分– 字长· 第 6 部分– 寄存器· 第 7 部分– 程序计数器· 第 8 部分– CPSR· 第 9 部分– 链接寄存器· 第 10 部分– 堆栈指针· 第 11 部分– 固件引导程序· 第 12 部分– 冯诺依曼架构· 第 13 部分– 指令管道· 第 14 部分– 你好世界· 第 15 部分– 调试 Hello World· 第 16 部分– 逆向 Hello World· 第 17 部分– 常量· 第 18 部分– 调试常量· 第 19 部分– 逆向常量· 第 20 部分– 字符变量· 第 21 部分– 调试字符变量· 第 22 部分– 逆向字符变量· 第 23 部分– 布尔变量· 第 24 部分– 调试布尔变量· 第 25 部分– 逆向布尔变量· 第 26 部分– 整数变量· 第 27 部分– 调试整型变量· 第 28 部分– 逆向整数变量· 第 29 部分– 浮点变量· 第 30 部分– 调试浮点变量· 第 31 部分– 逆向浮点变量· 第 32 部分– 双变量· 第 33 部分– 调试双重变量· 第 34 部分– 逆向双重变量· 第 35 部分– SizeOf 运算符· 第 36 部分– 调试 SizeOf 运算符· 第 37 部分– 逆向 SizeOf 运算符· 第 38 部分– 预增量运算符· 第 39 部分– 调试预增量运算符· 第 40 部分– 逆向预增量运算符· 第 41 部分– 后增量运算符· 第 42 部分– 调试后增量运算符· 第 43 部分– 逆向后增量运算符· 第 44 部分– 预减运算符· 第 45 部分– 调试预减运算符· 第 46 部分– 逆向预减运算符· 第 47 部分– 后递减运算符· 第 48 部分– 调试后减运算符· 第 49 部分– 逆向后递减运算符
[*]x64 课程
· 第 1 部分– 网络革命· 第 2 部分– 晶体管· 第 3 部分– 逻辑门· 第 4 部分– 数字系统· 第 5 部分– 二进制加法· 第 6 部分– 二进制减法· 第 7 部分– 字长· 第 8 部分– 通用架构· 第 9 部分– 调用约定· 第 10 部分– 布尔指令· 第 11 部分– 指针· 第 12 部分– 加载有效地址· 第 13 部分– 数据段· 第 14 部分– SHL 指令· 第 15 部分– SHR 说明· 第 16 部分– ROL 指令· 第 17 部分– ROR 说明· 第 18 部分– 引导扇区基础 [第 1 部分]· 第 19 部分– 引导扇区基础知识 [第 2 部分]· 第 20 部分– 引导扇区基础知识 [第 3 部分]· 第 21 部分– 引导扇区基础知识 [第 4 部分]· 第 22 部分– 引导扇区基础 [第 5 部分]· 第 23 部分– 引导扇区基础 [第 6 部分]· 第 24 部分– 引导扇区基础 [第 7 部分]· 第 25 部分– 引导扇区基础知识 [第 8 部分]· 第 26 部分– 引导扇区基础知识 [第 9 部分]· 第 27 部分– x64 组件 [第 1 部分]· 第 28 部分– x64 组件 [第 2 部分]· 第 29 部分– x64 组件 [第 3 部分]· 第 30 部分– x64 组件 [第 4 部分]· 第 31 部分– x64 组件 [第 5 部分]· 第 32 部分– x64 组件 [第 6 部分]· 第 33 部分– x64 组件 [第 7 部分]· 第 34 部分– x64 C++ 1 代码 [第 1 部分]· 第 35 部分– x64 C++ 2 调试 [第 2 部分]· 第 36 部分– x64 C++ 3 黑客攻击 [第 3 部分]· 第 37 部分– x64 C 和生命的起源· 第 38 部分– x64 网络基础知识· 第 39 部分– 为什么选择 C?· 第 40 部分– 逆向 Hello World!· 第 41 部分– 逆向变量!· 第 42 部分– 入侵分支!· 第 43 部分– 黑客指针!
[*]ARM-64 课程
· 第 1 部分– 生命的意义· 第 2 部分– 开发设置· 第 3 部分– “Hello World”· 第 4 部分– 调试“Hello World”· 第 5 部分– 逆向“Hello World”· 第 6 部分– 基本 I/O· 第 7 部分– 调试基本 I/O· 第 8 部分– 逆向基本 I/O· 第 9 部分– 字符原始数据类型· 第 10 部分– 调试字符原始数据类型· 第 11 部分– 逆向字符原始数据类型· 第 12 部分– 布尔原始数据类型· 第 13 部分– 调试布尔原始数据类型· 第 14 部分– 逆向布尔原始数据类型· 第 15 部分– 浮点基本数据类型· 第 16 部分– 调试浮点基本数据类型· 第 17 部分– 逆向浮点原始数据类型· 第 18 部分– 双原语数据类型· 第 19 部分– 调试双基本数据类型· 第 20 部分– 逆向双重原始数据类型
[*]Pico 黑客课程
· 第 1 部分– 为什么,如何…· 第 2 部分– 你好世界· 第 3 部分– 调试 Hello World· 第 4 部分– 逆向 Hello World· 第 5 部分– 字符· 第 6 部分– 调试字符· 第 7 部分– 逆向字符· 第 8 部分– 整数· 第 9 部分– 调试 int· 第 10 部分– 逆向 int· 第 11 部分– 浮动· 第 12 部分– 调试float· 第 13 部分– 黑客float· 第 14 部分– 双倍· 第 15 部分– 调试双重· 第 16 部分– 黑客双打· 第 17 部分– “绝对权力绝对腐败!”,输入的悲惨故事……· 第 18 部分– “我训练了 800 年的绝地武士!”,输入的力量……· 第 19 部分– 输入· 第 20 部分– 调试输入英文:
[*]x86 Course
· Part 1:Goals· Part2: Techniques· Part3: Types Of Malware· Part4: x86 Assembly Intro· Part5: Binary Number System· Part6: Hexadecimal Number System· Part7: Transistors And Memory· Part8 – Bytes, Words, Double Words, etc…· Part9: x86 Basic Architecture· Part10: General-purpose Registers· Part11: Segment Registers· Part12: Instruction Pointer Register· Part13: Control Registers· Part14: Flags· Part15: Stack· Part 16:Heap· Part17 – How To Install Linux· Part18 – vim Text Editor· Part19 – Why Learn Assembly· Part20 – Instruction Code Handling· Part21 – How To Compile A Program· Part22 – ASM Program 1 · Part23 – ASM Debugging 1 · Part24 – ASM Hacking 1 · Part25 – ASM Program 2 · Part26 – ASM Debugging 2 · Part27 – ASM Hacking 2 · Part28 – ASM Program 3 · Part29 – ASM Debugging 3 · Part30 – ASM Hacking 3 · Part31 – ASM Program 4 · Part32 – ASM Debugging 4 · Part33 – ASM Hacking 4 · Part34 – ASM Program 5 · Part35 – ASM Debugging 5 · Part36 – ASM Hacking 5 · Part37 – ASM Program 6 · Part38 – ASM Debugging 6 · Part39 – ASM Hacking 6 · Part40 – Conclusion
[*]ARM-32 Course 1
· Part1 – The Meaning Of Life· Part2 – Number Systems· Part3 – Binary Addition· Part4 – Binary Subtraction· Part5 – Word Lengths· Part6 – Registers· Part7 – Program Counter· Part 8 –CPSR· Part9 – Link Register· Part10 – Stack Pointer· Part11 – ARM Firmware Boot Procedures· Part12 – Von Neumann Architecture· Part13 – Instruction Pipeline· Part 14 –ADD· Part15 – Debugging ADD· Part16 – Hacking ADD· Part 17– ADDS· Part18 – Debugging ADDS· Part19 – Hacking ADDS· Part 20 –ADC· Part21 – Debugging ADC· Part22 – Hacking ADC· Part 23 –SUB· Part24 – Debugging SUB· Part25 – Hacking SUB
[*]ARM-32 Course 2
· Part1 – The Meaning Of Life Part 2· Part2 – Number Systems· Part3 – Binary Addition· Part4 – Binary Subtraction· Part5 – Word Lengths· Part6 – Registers· Part7 – Program Counter· Part 8 –CPSR· Part9 – Link Register· Part10 – Stack Pointer· Part11 – Firmware Boot Procedures· Part12 – Von Neumann Architecture· Part13 – Instruction Pipeline· Part14 – Hello World· Part15 – Debugging Hello World· Part16 – Hacking Hello World· Part17 – Constants· Part18 – Debugging Constants· Part19 – Hacking Constants· Part20 – Character Variables· Part21 – Debugging Character Variables· Part22 – Hacking Character Variables· Part23 – Boolean Variables· Part24 – Debugging Boolean Variables· Part25 – Hacking Boolean Variables· Part26 – Integer Variables· Part27 – Debugging Integer Variables· Part28 – Hacking Integer Variables· Part29 – Float Variables· Part30 – Debugging Float Variables· Part31 – Hacking Float Variables· Part32 – Double Variables· Part33 – Debugging Double Variables· Part34 – Hacking Double Variables· Part35 – SizeOf Operator· Part36 – Debugging SizeOf Operator· Part37 – Hacking SizeOf Operator· Part38 – Pre-Increment Operator· Part39 – Debugging Pre-Increment Operator· Part40 – Hacking Pre-Increment Operator· Part41 – Post-Increment Operator· Part42 – Debugging Post-Increment Operator· Part43 – Hacking Post-Increment Operator· Part44 – Pre-Decrement Operator· Part45 – Debugging Pre-Decrement Operator· Part46 – Hacking Pre-Decrement Operator· Part47 – Post-Decrement Operator· Part48 – Debugging Post-Decrement Operator· Part49 – Hacking Post-Decrement Operator
[*]x64 Course
· Part1 – The Cyber Revolution· Part2 – Transistors· Part3 – Logic Gates· Part4 – Number Systems· Part5 – Binary Addition· Part6 – Binary Subtraction· Part7 – Word Lengths· Part8 – General Architecture· Part9 – Calling Conventions· Part10 – Boolean Instructions· Part11 – Pointers· Part12 – Load Effective Address· Part13 – The Data Segment· Part14 – SHL Instruction· Part15 – SHR Instruction· Part16 – ROL Instruction· Part17 – ROR Instruction· Part18 – Boot Sector Basics · Part19 – Boot Sector Basics · Part20 – Boot Sector Basics · Part21 – Boot Sector Basics · Part22 – Boot Sector Basics · Part23 – Boot Sector Basics · Part24 – Boot Sector Basics · Part25 – Boot Sector Basics · Part26 – Boot Sector Basics · Part27 – x64 Assembly · Part28 – x64 Assembly · Part29 – x64 Assembly · Part30 – x64 Assembly · Part31 – x64 Assembly · Part32 – x64 Assembly · Part33 – x64 Assembly · Part34 – x64 C++ 1 Code · Part35 – x64 C++ 2 Debug · Part36 – x64 C++ 3 Hacking · Part37 – x64 C & Genesis Of Life· Part38 – x64 Networking Basics· Part 39– Why C?· Part40 – Hacking Hello World!· Part41 – Hacking Variables!· Part42 – Hacking Branches!· Part43 – Hacking Pointers!
[*]ARM-64 Course
· Part1 – The Meaning Of Life· Part2 – Development Setup· Part3 – “Hello World”· Part4 – Debugging “Hello World”· Part5 – Hacking “Hello World”· Part6 – Basic I/O· Part7 – Debugging Basic I/O· Part8 – Hacking Basic I/O· Part9 – Character Primitive Datatype· Part10 – Debugging Character Primitive Datatype· Part11 – Hacking Character Primitive Datatype· Part12 – Boolean Primitive Datatype· Part13 – Debugging Boolean Primitive Datatype· Part14 – Hacking Boolean Primitive Datatype· Part15 – Float Primitive Datatype· Part16 – Debugging Float Primitive Datatype· Part17 – Hacking Float Primitive Datatype· Part18 – Double Primitive Datatype· Part19 – Debugging Double Primitive Datatype· Part20 – Hacking Double Primitive Datatype
[*]Pico Hacking Course
· Part1 – The Why, The How…· Part2 – Hello World· Part3 – Debugging Hello World· Part4 – Hacking Hello World· Part 5 –char· Part6 – Debugging char· Part7 – Hacking char· Part 8 –int· Part9 – Debugging int· Part10 – Hacking int· Part 11– float· Part12 – Debugging float· Part13 – Hacking float· Part14 – double· Part15 – Debugging double· Part16 – Hacking double· Part17 – “ABSOLUTE POWER CORRUPTS ABSOLUTELY!”, The Tragic Tale Of Input…· Part18 – “FOR 800 YEARS HAVE I TRAINED JEDI!”, The FORCE That IS Input…· Part 19– Input· Part20 – Debugging Input逆向工程教程官网地址https://0xinfection.github.io/reversing/教程pdf下载[ PDF | MOBI ]
谢谢分享 感谢楼主 感谢楼主 感谢楼主 楼主分享不易,顶帖是必须的~ 我现在已经把楼主作为我的学习目标了! 感谢楼主 感谢楼主 甘拜下风,谢谢分享