4、shellcode提取与加载

2023年08月10日shellcode开发技术

摘要1、课程目标 1. 掌握从PE文件中提取ShellCode的方法 2. 理解ShellCode加载器的工作原理 3. 实现多种ShellCode执行方式 4. 掌握ShellCode调试技巧 2、名词解释 3、使用工具 4、技术原理 1. ShellCode提取流程 2. 内存分配与权限 3. 执行方式对比 4、代码实现 1. ShellCode提取工具 2. 多种ShellCode加载方式 3. Python提取脚本 4. ShellCode调试辅助 5、课后作业 5.1、作业1:实现自动提取 编写程序,自动从编译后的PE文件中提取.shell区段。 5.2、作业2:多格式导出 扩展提取工具,支持导出为C、Python、C#、PowerShell等格式。 5.3、作业3:加载器混淆…

3、x86shellcode框架

2023年08月02日shellcode开发技术

摘要1、课程目标 1. 掌握x86 ShellCode的标准框架结构 2. 实现动态获取API函数地址的功能 3. 理解导出表解析在ShellCode中的应用 4. 编写完整可用的x86 ShellCode模板 2、名词解释 3、使用工具 4、技术原理 1. x86 ShellCode标准结构 2. GetPC技术 3. API哈希算法(ROR13) 4、代码实现 1. 完整x86 ShellCode框架(C内联汇编) 2. 纯汇编版本(NASM格式) 3. Python哈希生成脚本 4、课后作业 4.1、作业1:添加更多API支持 扩展ShellCode框架,添加对以下API的支持: - CreateRemoteThread - VirtualAllocEx - WriteProcessMemory…

2、动态获取kernel32dll地址

2023年07月28日shellcode开发技术

摘要1、课程目标 1. 理解PEB(进程环境块)的结构 2. 掌握通过PEB遍历获取模块基址的方法 3. 实现x86和x64版本的Kernel32获取代码 4. 掌握无API依赖的模块枚举技术 2、名词解释 3、使用工具 4、技术原理 1. TEB和PEB的关系 2. PEB结构(关键字段) 3. PEBLDRDATA结构 4. LDRDATATABLE_ENTRY结构 5. 模块列表遍历流程 6、代码实现 1. x86版本 - C语言实现 2. x64版本 - 纯汇编ShellCode 3. ShellCode提取用版本 4. 完整的哈希匹配版本 5、课后作业 5.1、作业1:实现通用模块查找 扩展代码,实现通过模块名哈希查找任意DLL的功能。 5.2、作业2:实现x64内联汇编版本…

1、shellcode的概念

2023年06月30日shellcode开发技术

摘要1、课程目标 1. 理解ShellCode的定义、起源和用途 2. 掌握ShellCode的特点和限制 3. 了解ShellCode开发的基本流程 4. 掌握位置无关代码(PIC)的概念 2、名词解释 3、使用工具 4、技术原理 1. ShellCode的历史 ShellCode最早用于Unix系统溢出攻击,目的是获取一个shell(命令行),因此得名。现代ShellCode已经扩展到各种功能: - 反向连接(Reverse Shell) - 下载执行(Download & Execute) - 注入执行(Inject & Execute) - 权限提升(Privilege Escalation) 2. ShellCode的特点 3. 开发挑战 4. 开发流程 5、代码实现 1.…

7、添加区段完成加壳流程

2023年06月13日加密壳

摘要1、课程目标 1. 实现向PE添加新区段 2. 完成原始代码加密 3. 嵌入壳代码和配置 4. 生成完整的加壳PE 2、名词解释 3、使用工具 - Visual Studio 2022 - CFF Explorer - PE-bear - x64dbg 4、技术原理 4.1、加壳PE构建流程 5、代码实现 5.1、加密原始代码 5.2、添加新区段 5.3、完整加壳流程 5.4、加壳器主程序 6、课后作业 1. 实现完整的加壳工具 - 整合所有功能 - 添加命令行参数 - 支持多种加密选项 2. 测试加壳效果 - 测试各种PE文件 - 验证加壳后能正常运行 - 测试免杀效果 3. 优化加壳工具 - 压缩原始代码 - 添加更多混淆 - 减小增加的体积

6、获取壳代码段数据并修复重定位

2023年06月12日加密壳

摘要1、课程目标 1. 从壳PE中提取代码段 2. 理解壳代码的重定位需求 3. 实现壳代码的重定位修复 4. 准备壳代码嵌入目标PE 2、名词解释 3、使用工具 - Visual Studio 2022 - x64dbg - PE-bear 4、技术原理 4.1、壳代码提取流程 5、代码实现 5.1、提取壳代码 5.2、收集重定位信息 5.3、应用重定位修复 5.4、完整的壳准备流程 6、课后作业 1. 实现完整的壳提取 - 支持提取多个区段 - 处理特殊区段名 - 验证提取的代码 2. 测试重定位修复 - 使用不同的目标地址测试 - 验证修复后代码的正确性 - 处理边界情况 3. 优化壳代码 - 尽量使用PIC编写壳 - 减少重定位项 - 减小壳代码体积

5、加壳工具初始化PE文件信息

2023年06月10日加密壳

摘要1、课程目标 1. 设计加壳工具的架构 2. 实现PE文件的读取和解析 3. 收集加壳所需的信息 4. 验证目标PE文件的有效性 2、名词解释 3、使用工具 - Visual Studio 2022 - CFF Explorer - PE-bear 4、技术原理 4.1、加壳工具架构 5、代码实现 5.1、PE信息结构 5.2、加载和解析PE文件 5.3、验证PE文件 5.4、加壳器初始化 6、课后作业 1. 完善PE解析功能 - 添加更多验证检查 - 处理各种异常PE - 支持64位PE 2. 实现命令行接口 - 解析命令行参数 - 支持多种选项配置 - 添加帮助信息 3. 测试不同PE文件 - 测试各种EXE和DLL - 测试已加壳文件的检测 - 验证信息提取的准确性

4、封装简易验证与解密流程

2023年06月06日加密壳

摘要1、课程目标 1. 设计壳的验证机制 2. 实现多种加密算法 3. 完成壳的解密流程 4. 添加反调试检测 2、名词解释 3、使用工具 - Visual Studio 2022 - x64dbg - CryptoAPI - 自定义加密库 4、技术原理 4.1、壳验证流程 5、代码实现 5.1、反调试检测 5.2、完整性验证 5.3、加密算法实现 5.4、完整的壳解密流程 6、课后作业 1. 实现多种加密算法 - 实现XOR加密 - 实现RC4加密 - 实现自定义变形算法 2. 添加反调试措施 - 实现多种检测方法 - 添加反分析技术 - 测试绕过能力 3. 实现完整性验证 - 对壳代码进行CRC校验 - 对解密数据进行校验 - 处理校验失败情况

2、PE文件头解析

2023年05月30日Windows PE结构

摘要1、课程目标 1. 深入理解DOS头结构 2. 掌握PE文件头(File Header)的各个字段 3. 掌握可选头(Optional Header)的各个字段 4. 理解不同字段对程序执行的影响 2、名词解释 3、使用工具 - CFF Explorer - PE-bear - 010 Editor - x64dbg 4、技术原理 4.1、DOS头结构 4.2、文件头结构 4.3、可选头结构(PE32) 5、代码实现 5.1、解析DOS头 5.2、解析文件头 5.3、解析可选头 5.4、修改PE头信息 6、课后作业 1. 编写完整的PE头解析器 - 解析所有DOS头字段 - 解析所有文件头字段 - 解析所有可选头字段 - 支持PE32和PE32+ 2. 实现PE头修改工具 - 修改入口点 - 修改时间戳 -…

3、分析导出表获取GetProcAddress的地址

2023年05月16日加密壳

摘要1、课程目标 1. 掌握通过导出表查找函数的方法 2. 实现自定义GetProcAddress 3. 使用哈希代替字符串查找 4. 在壳代码中获取必要的API 2、名词解释 3、使用工具 - Visual Studio 2022 - x64dbg - PE-bear - dumpbin 4、技术原理 4.1、导出表查找流程 5、代码实现 5.1、解析导出表获取函数地址 5.2、使用哈希查找函数 5.3、位置无关的汇编实现 5.4、完整的API获取器 6、课后作业 1. 实现完整的函数查找器 - 支持按名称查找 - 支持按序号查找 - 支持按哈希查找 2. 编写哈希生成工具 - 读取DLL导出表 - 为所有导出函数生成哈希 - 输出为头文件格式 3. 测试不同哈希算法 - 实现CRC32哈希 -…