摘要1、课程目标 1. 掌握Linux下的汇编编程框架 2. 理解Linux系统调用机制 3. 学会使用GAS和NASM语法 4. 掌握位置无关代码编写 2、名词解释 3、使用工具 4、技术原理 4.1、Linux x86 系统调用 4.2、Linux x64 系统调用 5、代码实现 5.1、示例1:NASM Hello World (x86) 5.2、示例2:NASM Hello World (x64) 5.3、示例3:GAS AT&T语法 5.4、示例4:文件操作系统调用 5.5、示例5:与C程序链接 5.6、示例6:Shellcode基础 5.7、示例7:常用系统调用号 6、课后作业 1. 基础练习:用NASM编写一个读取用户输入并回显的程序 2. 文件操作:实现一个简单的文件复制程序 3.…
摘要1、课程目标 1. 掌握for/while/do-while的汇编特征 2. 学会识别循环的边界条件 3. 理解循环优化技术 4. 掌握嵌套循环的分析方法 2、名词解释 3、使用工具 4、技术原理 4.1、循环类型特征 4.2、汇编模式 5、代码实现 5.1、示例1:while循环 5.2、示例2:do-while循环 5.3、示例3:for循环 5.4、示例4:嵌套循环 5.5、示例5:循环展开优化 5.6、示例6:字符串处理循环 5.7、示例7:识别循环类型 6、课后作业 1. 基础练习:编写三种循环,观察编译结果差异 2. 嵌套循环:分析一个双层循环的反汇编 3. 优化对比:对比Debug和Release版本的循环 4. 实战还原:从反汇编还原一个复杂循环结构
摘要1、课程目标 1. 掌握switch语句的多种汇编实现方式 2. 理解跳转表的工作原理 3. 学会识别和还原switch结构 4. 理解编译器的优化策略 2、名词解释 3、使用工具 4、技术原理 4.1、switch实现方式 4.2、跳转表结构 5、代码实现 5.1、示例1:简单switch(if-else实现) 5.2、示例2:跳转表实现 5.3、示例3:有偏移的跳转表 5.4、示例4:稀疏case(二分查找) 5.5、示例5:fall-through识别 5.6、示例6:识别并还原switch 5.7、示例7:IDA中的switch识别 6、课后作业 1. 基础练习:编写不同case数量的switch,观察编译结果 2. 跳转表分析:在IDA中找到并分析一个跳转表 3.…
摘要1、课程目标 1. 掌握if-else语句的汇编实现特征 2. 学会识别并还原条件分支逻辑 3. 理解编译器优化对代码的影响 4. 掌握复杂条件表达式的分析 2、名词解释 3、使用工具 4、技术原理 4.1、基本if-else结构 4.2、常见比较模式 5、代码实现 5.1、示例1:简单if-else 5.2、示例2:if-else if-else链 5.3、示例3:复合条件(短路求值) 5.4、示例4:条件移动优化 5.5、示例5:指针空检查 5.6、示例6:识别并还原的实战 6、课后作业 1. 基础练习:编写包含多级if-else的函数,观察生成的汇编 2. 复合条件:分析包含&&和||的条件表达式 3. 优化对比:比较Debug和Release编译的if-else差异 4.…
摘要1、课程目标 1. 掌握常见调用约定的特点 2. 学会识别反汇编中的调用约定 3. 理解参数传递和栈清理机制 4. 掌握函数返回值的处理方式 2、名词解释 3、使用工具 4、技术原理 4.1、x86调用约定对比 4.2、x64调用约定 (Windows) 5、代码实现 5.1、示例1:不同调用约定对比 5.2、示例2:反汇编特征识别 5.3、示例3:thiscall C++成员函数 5.4、示例4:x64调用约定 5.5、示例5:识别调用约定的工具 5.6、示例6:还原函数原型 6、课后作业 1. 基础练习:编写不同调用约定的函数,观察生成的汇编 2. 反汇编分析:分析一个DLL导出函数,识别其调用约定 3. x64分析:对比同一函数在x86和x64下的不同 4. 原型还原:根据反汇编代码还原3个函数的完整原型
摘要1、课程目标 1. 掌握逆向分析的基本流程和方法 2. 学会使用调试器定位关键代码 3. 理解静态分析与动态调试的结合 4. 掌握常用的断点技术 2、名词解释 3、使用工具 4、技术原理 4.1、逆向分析流程 1. 信息收集 - 了解程序功能和行为 2. 入口点定位 - 找到程序入口 3. 功能定位 - 定位感兴趣的代码 4. 代码分析 - 理解实现逻辑 5. 验证结论 - 确认分析结果 4.2、定位方法 5、代码实现 5.1、示例1:目标程序(用于练习) 5.2、示例2:字符串搜索定位 5.3、示例3:API断点定位 5.4、示例4:用程序分析流程 5.5、示例5:x64dbg调试命令 6、课后作业 1. 基础练习:编译示例程序,用IDA找到密码存储位置 2.…
摘要1、课程目标 1. 回顾整个x86/x64汇编章节的核心知识 2. 通过综合项目巩固学习内容 3. 掌握汇编在安全研究中的应用 4. 为后续章节打下坚实基础 2、知识回顾 第一部分:x86基础 第二部分:进阶内容 3、综合实战项目 3.1、项目1:简单加密器 3.2、项目2:内存扫描器 3.3、项目3:API哈希计算 3.4、项目4:简单Hook实现 3.5、项目5:x64寄存器读取器 4、汇编指令速查表 4.1、数据移动 4.2、算术运算 4.3、位运算 4.4、控制流 5、课后作业 1. 综合项目:结合所学内容,实现一个完整的内存修改器 2. 深入研究:分析一个简单程序的汇编代码,理解编译器优化 3. 实战应用:尝试编写一段位置无关的shellcode 4. 跨平台:将Windows汇编程序移植到Linux
摘要1、课程目标 1. 掌握C/C++中内联汇编的使用方法 2. 理解内联汇编的限制和注意事项 3. 学会C与汇编的混合链接 4. 掌握跨语言调用技术 2、名词解释 3、使用工具 4、技术原理 4.1、内联汇编限制 4.2、混合编程方式 1. 内联汇编 - 仅x86 2. 单独.asm文件 - 所有平台 3. Intrinsic函数 - 所有平台 5、代码实现 5.1、示例1:基本内联汇编 5.2、示例2:寄存器操作 5.3、示例3:汇编模块与C链接 5.4、示例4:C++与汇编混合 5.5、示例5:x64混合编程方案 6、课后作业 1. 内联汇编练习:用内联汇编实现常用的位操作函数 2. 混合链接:创建一个C/汇编混合项目,实现字符串处理函数 3. x64适配:将x86内联汇编代码改写为x64单独模块 4.…
摘要1、课程目标 1. 掌握x64架构的寄存器体系 2. 理解x64调用约定 3. 学会编写x64汇编程序 4. 掌握x64与x86的关键差异 2、名词解释 3、使用工具 4、技术原理 4.1、x64寄存器体系 4.2、x64调用约定 (Windows) 5、代码实现 5.1、示例1:x64基本框架 5.2、示例2:x64函数定义 5.3、示例3:x64与x86对比 5.4、示例4:RIP相对寻址 5.5、示例5:x64系统调用 6、课后作业 1. 基础练习:编写一个x64汇编程序,实现基本的数学运算 2. 调用约定:编写一个多参数函数,演示参数传递机制 3. 平台对比:同一个程序用x86和x64分别实现,对比差异 4. 实战应用:用x64汇编实现一个简单的内存读写工具
摘要1、课程目标 1. 掌握MASM中结构体的定义和使用 2. 理解结构体的内存布局和对齐 3. 学会宏的定义和使用方法 4. 掌握条件汇编指令 2、名词解释 3、使用工具 4、技术原理 4.1、结构体内存布局 结构体成员按声明顺序存储,可能存在填充字节以满足对齐要求。 4.2、宏与函数的区别 5、代码实现 5.1、示例1:结构体定义与使用 5.2、示例2:基本宏定义 5.3、示例3:条件汇编 5.4、示例4:重复块与循环 5.5、示例5:Windows结构体实战 6、课后作业 1. 结构体练习:定义一个表示PE文件头的结构体 2. 宏实战:编写一个安全的内存操作宏库 3. 条件汇编:实现一个支持多平台的代码框架 4. 结构体数组:创建并遍历结构体数组