课程名称:《全能逆向工程师:从零开始的驱动过检、Lua与C++实战指南》
课程描述:
欢迎加入《全能逆向工程师》的精彩旅程!这是一门专为零基础学员设计的全方位逆向工程培训课程,旨在培养你成为掌握驱动过检技术、精通Lua脚本和C++编程的全能逆向工程师。
课程亮点:
- 零基础入门: 无论你的背景如何,我们的课程都将带你从基础知识开始,逐步深入,确保每位学员都能跟上节奏,掌握核心技能。
- 实战导向教学: 我们不仅讲解理论,更注重实践。通过真实世界中的驱动过检案例、Lua脚本编写及C++代码优化,让你在实践中快速提升。
- 专业导师团队: 由经验丰富的逆向工程专家亲自授课,他们将分享行业内的最佳实践和独到见解,帮助你建立扎实的专业知识体系。
- 全面覆盖内容: 课程涵盖了逆向工程的核心领域,包括但不限于驱动级安全检查绕过、Lua语言在逆向中的应用、C++高效编程技巧等。
- 互动式学习体验: 通过在线讨论、小组项目和定期评估,促进学员之间的交流与合作,共同解决问题,加深对概念的理解。
课程大纲:
- 逆向工程概览: 了解逆向工程的基本概念、历史和应用领域。
- 驱动过检技术详解: 学习如何分析和绕过驱动级的安全检查机制。
- Lua脚本入门: 掌握Lua的基础语法,了解其在逆向工程中的优势。
- C++编程实战: 从变量和数据类型到复杂的数据结构和算法,构建坚实的技术基础。
- 实战项目: 应用所学知识,参与真实的逆向工程项目,从分析到实施全程指导。
- 职业发展路径: 探讨逆向工程师的职业前景,提供行业动态和求职策略。
适合人群:
- 对逆向工程感兴趣但无相关背景的新手。
- 想要提升自己在软件安全领域竞争力的IT专业人士。
- 希望深入了解系统底层工作原理的程序员。
- 寻求转型或扩展技能树的IT行业从业者。
加入我们,开启你的逆向工程之旅,成为能够驾驭驱动过检、Lua脚本与C++编程的全能逆向工程师!
全能逆向工程师:从零开始的驱动过检、Lua与C++实战指南
预习课程(000系列)
- 利用驱动保护自己的进程(2021.06.05)
- 利用驱动突破游戏驱动保护(2021.06.06)
- vs2017环境配置(2021.06.16)
- C/C++代码练习(2021.06.17)
- CE搜内存练习step1(2021.06.18)
- CE练习第二关step2(2021.06.19)
- CE练习第三关step3(2021.06.20)
- CE练习第三关分析角色坐标基址偏移(2021.06.21)
- x86_x64_asm汇编(2021.06.23)
- 认识了解xdbg调试器(2021.06.28)
- 汇编指令异或xor与二进制(2021.06.29)
- 汇编指令与加密与解密(2021.06.30)
游戏辅助技术初级班(a001系列)
- C/C++程序入口点(001)
- C/C++函数、转义字符(002)
- C/C++调用Windows系统API接口(003)
- C/C++char、short、int、lpctstr与sizeof运算符(004)
- C/C++利用WindowsAPI操作游戏窗口(005)
- C/C++利用WindowsAPI获取进程PID(006)
- C/C++读取目标进程内存数据(007)
- C/C++读取目标内存数据读4字节(008)
- CE分析基址偏移-精确数值(009)
- CE分析基址偏移-未知初始值(010)
- C/C++32位和64位进程读写多级基址偏移示例(011)
- C/C++32位和64位进程内存数据读写函数接口(012)
- x86环境使用汇编mov、sub、add指令(013)
- x64环境masm汇编asm文件(014)
- push和pop指令与栈的关系(015)
- call指令与ret指令对栈的影响(016)
- x86环境常见的六种参数调用约定传递与平栈(017)
- x64环境常见的六种参数调用约定传递与平栈(018)
- C/C++条件表达式、逻辑运算符与判断语句(019)
- 汇编指令test、cmp、jmp、jz、jnz(020)
- C/C++循环语句与控制语句(021)
- 汇编条件转移指令与循环(022)
- C/C++用代码注入器调用call(023)
- C/C++用代码,跨进程调用call(024)
- 创建一个简单的MFC程序并为button关联单击事件(025)
- MFC动态链接库与注入dll(026)
- 在目标进程分配内存写入代码(027)
- 向目标进程注入代码加载dll(028)
- 分析角色对象的属性(029)
- C/C++编写代码读取对象属性值(030)
- C/C++输入输出重定向(031)
- C/C++定时器与主线程(032)
- 基址偏移分析复习(033)
- 分析角色信息复习(034)
- 周末复习答疑(035)
- C/C++简单认识MFC消息机制(036)
- C/C++MFC的编辑框控件和cedit类(037)
- C/C++在游戏空间加载dll模块(038)
- 用CE和x32dbg分析寻路call,认识float类型(039)
- C/C++浮点数、浮点数组与寻路call测试代码(040)
- C/C++创建多个线程(041)
- C/C++fs段与多线程TEB的关系(042)
- 用xdbg和CE分析寻路功能的ecx参数与角色对象(043)
- C/C++为寻路功能编写完整的代码(044)
- C/C++数组与循环,汇编中数组访问方式(045)
- 利用xdbg和CE分析力量敏捷耐力智力精神力(046)
- 用xdbg和CE分析角色名字基址偏移(047)
- 编写代码读取角色力量敏捷智力精神力和名字等(048)
- 初级班主要知识点总结整理(049 & 050)
b002-游戏辅助技术(中级班)
001 – C++的类和对象
- 介绍C++中类和对象的基本概念及使用。
002 – C++的基类和派生类
- 解释C++中继承的基本概念,包括基类和派生类的使用。
003 – 用代码读取UTF8名字
- 展示如何用C++代码读取UTF8编码的名字。
004 – 用CE和xDBG分析对象名字
- 演示如何使用CE和xDBG工具来分析游戏中的对象名字。
005 – 虚函数指针与虚函数表
- 讲解C++中虚函数指针和虚函数表的工作原理。
006 – 用CE和xDBG分析对象数组
- 使用CE和xDBG工具分析游戏中的对象数组。
007 – C,C++链表结构typedef struct关键字
- 介绍C/C++中链表的数据结构及如何使用
typedef struct
关键字。
008 – 用CE和xDBG分析对象数组链表部分
- 分析游戏中对象数组链表部分。
009 – C,C++遍历游戏怪物数组
- 展示如何用C/C++代码遍历游戏内的怪物数组。
010 – C,C++遍历游戏对象链表
- 演示如何使用C/C++代码遍历游戏对象链表。
011 – C,C++ xDBG条件断点,修改遍历代码
- 使用xDBG设置条件断点并修改遍历游戏对象的代码。
012 – 分析快捷栏数组与快捷栏使用call
- 分析游戏快捷栏数组及快捷栏功能的调用。
013 – C,C++写快捷栏使用call测试代码
- 编写并测试模拟使用快捷栏功能的C/C++代码。
014 – C,C++挂接游戏主线程运行函数
- 展示如何在游戏主线程中挂接并运行自定义函数。
015 – C,C++测试遍历怪物列表的代码
- 对遍历怪物列表的代码进行测试。
016 – C,C++主线程代码传递复杂参数的实现
- 演示在主线程代码中如何传递复杂的参数。
017 – C,C++ struct结构与主线返回多个数值
- 讲解C/C++中使用struct结构从主线程返回多个数值的方法。
018 – 用CE,xDBG分析对象坐标并写代码测试
- 分析游戏对象坐标并编写代码进行测试。
019 – 用CE,xDBG分析选中对象功能并写代码测试
- 分析游戏中选中对象的功能并编写测试代码。
020 – C,C++代码移植与写代码测试选中对象功能
- 演示如何将代码移植并测试选中对象的功能。
021 – C,C++遍历计算怪物距离
- 展示如何使用C/C++代码遍历并计算怪物之间的距离。
022 – C,C++遍历计算最近怪物并选中
- 演示如何遍历计算最近的怪物并选中它。
023 – 用CE,xDBG分析技能call
- 使用CE和xDBG工具分析游戏技能的调用。
024 – C,C++写代码调用测试技能call
- 编写并测试调用技能的C/C++代码。
025 – C,C++命名空间namespace
- 介绍C/C++中命名空间的概念和使用方法。
026 – C,C++类静态成员
- 讲解C/C++中类的静态成员变量和静态成员函数。
027 – CE,xDBG分析喊话call
- 使用CE和xDBG分析游戏内的喊话功能调用。
028 – 为喊话call写测试代码
- 编写并测试模拟喊话功能的代码。
029 – CE,xDBG分析明文封包,解密包,组包,发包
- 使用CE和xDBG工具分析游戏通信中的封包处理。
030 – C,C++物品使用组包写代码测试
- 展示如何用C/C++代码测试游戏中的物品使用功能。
031 – C,C++模板的简单使用示例
- 提供C/C++中模板使用的简单示例。
032 – C,C++编写主线调用函数模板,方便快捷的调用功能
- 演示如何编写模板以方便快速地在主线程中调用函数。
033 – CE,xDBG分析背包对象数组
- 使用CE和xDBG分析游戏背包对象数组。
034 – CE,xDBG分析背包对象,背包对象数量偏移
- 分析背包对象的数量及其在内存中的偏移。
035 – CE,xDBG分析背包名字偏移,对象分类编号
- 分析背包中物品名字的偏移和对象分类编号。
036 – C,C++写代码遍历背包显示名字
- 编写C/C++代码遍历背包并显示物品名字。
037 – CE,xDBG宏指令call
- 使用CE和xDBG分析游戏宏指令的调用。
038 – C,C++写代码测试宏指令功能
- 编写并测试宏指令功能的C/C++代码。
039 – CE,xDBG分析对象的大分类编号a
- 分析游戏中对象的大分类编号。
040 – CE,xDBG分析对象的大分类编号b
- 继续分析游戏中对象的大分类编号。
041 – C,C++遍历对象分类信息+优化遍历代码
- 展示如何遍历对象分类信息并优化相关代码。
042 – C,C++ MFC编辑框使用技巧示例
- 提供MFC编辑框使用的技巧和示例。
043 – C,C++ MFC多个窗口间的切换,控件tabcontrol的使用a
- 演示如何在MFC应用中管理多个窗口及使用tabcontrol控件。
044 – C,C++ MFC多个窗口间的切换,控件tabcontrol的使用b
- 继续讲解MFC多个窗口切换和tabcontrol控件的使用。
045 – C,C++项目改名与代码移植整理
- 讲解如何进行项目重命名和代码移植整理。
046 – C,C++优化宏指令调用
- 演示如何优化宏指令的调用方式。
047 – C,C++分析释放灵魂与天使复活
- 分析游戏中释放灵魂和天使复活的功能。
048 – C,C++写代码测试释放灵魂与复活代码
- 编写并测试释放灵魂和复活的C/C++代码。
049 – C,C++第二次修复完善遍历代码
- 进一步完善和修复遍历游戏对象的代码。
050 – CE,xDBG分析装备耐久度分析(当前值,上限值)
- 使用CE和xDBG分析装备的耐久度(当前值和上限值)。
051 – CE,xDBG调试分析修理单个装备功能和修理所有装备
- 使用CE和xDBG工具调试和分析修理单个装备和所有装备的功能。
052 – C,C++写代码遍历装备耐久度
- 编写C/C++代码以遍历检查装备的耐久度。
053 – CE,xDBG分析装备数组
- 使用CE和xDBG分析游戏内的装备数组。
054 – 写代码遍历装备数组
- 展示如何编写代码遍历游戏内的装备数组。
055 – CE,xDBG调试分析接任务交任务完成任务
- 使用CE和xDBG工具调试游戏中的接任务、交任务和完成任务流程。
056 – C,C++写代码测试接任务交任务完成任务
- 编写C/C++代码以测试游戏中的任务系统。
057 – C,C++写代码测试交任务完成任务
- 继续编写代码以测试游戏中交任务和完成任务的功能。
058 – C,C++写代码hook分析封包数据格式a
- 编写代码hook以分析游戏通信中封包的数据格式。
059 – C,C++写代码hook分析封包数据格式b-detours劫持
- 使用detours方法劫持封包以分析数据格式。
060 – C,C++写代码hook分析封包数据格式c-过滤和格式化
- 展示如何编写代码hook以过滤和格式化封包数据。
061 – C,C++写代码hook分析封包数据格式d-写入配置文件
- 编写代码将hook分析的结果写入配置文件。
062 – C,C++写代码hook分析封包数据格式d-读取配置文件
- 展示如何读取之前写入的配置文件数据。
063 – C,C++写代码hook分析封包数据格式e-配置信息容错处理
- 编写代码处理配置文件中的信息容错。
064 – C,C++写代码hook分析封包数据格式f-获取返回地址
- 展示如何在hook过程中获取返回地址。
065 – C,C++不使用汇编的情况下进行hook处理
- 演示如何在不使用汇编语言的情况下进行hook操作。
066 – C,C++利用自写代码分析转向组包
- 使用自己编写的代码来分析和修改游戏的组包过程。
067 – C,C++利用自写代码分析转向功能并测试
- 利用自写代码来分析并测试游戏的转向功能。
068 – C,C++利用自写代码分析进入副本的功能
- 展示如何利用自写代码来分析游戏进入副本的功能。
游戏外挂技术(中级班)lua脚本部分
以下是经过优化并以中文重新排版的内容:
Lua 脚本与整合教程系列
基础 Lua 脚本与环境搭建
- C001:使用 VS 环境编译 Lua 脚本 (mp4)
- C002:C++ 与 Lua 脚本系统的交互访问 (flv)
- C003:Lua 编译器与解释器 (flv)
- C004:Lua 常用数据类型与 print 函数 (flv)
- C005:Lua 判断语句、条件表达式与运算符 (flv)
- C006:Lua 数据类型 table (flv)
- C007:Lua 循环与迭代器 (flv)
高级 Lua 脚本与游戏集成
- C008:Lua 常用函数 (flv)
- C009:逆向分析游戏中的 Lua 脚本接口 dofile 和 dostring (flv)
- C010:C, C++ 调用游戏中的 Lua 脚本接口 (flv)
- C011:XDBG, CE 逆向分析定位游戏中的 dostring (flv)
- C012:XDBG, CE 逆向分析定位游戏中的 dostring (flv) [重复]
- C013:XDBG 分析游戏 Lua 解释器指针 l 指针 (flv)
- C014:C, C++ 调用游戏脚本接口,并增加 UTF-8 支持 (flv)
文件操作与脚本执行
- C015:XDBG, CE 分析游戏 luadofile 接口 (flv)
- C016:C, C++ 文件写操作 (flv)
- C017:C, C++ 文件读操作 (mp4)
- C018:C, C++ 增加执行脚本文件的功能 (flv)
Lua 脚本实战练习
- C019:Lua 脚本练习 – 遍历背包,使用背包物品 (flv)
- C020:Lua 脚本练习 – 遍历装备,修理装备 (flv)
游戏脚本接口逆向分析
- C021:XDBG, CE 逆向分析游戏脚本接口保护 (flv)
- C022:C, C++ 逆向分析 tonumber 并注册寻路接口到 Lua 环境 (flv)
- C023:C, C++ 逆向分析并编写代码测试获取游戏 Lua 脚本返回值 (flv)
输出重定向与错误处理
- C024:C, C++ 重定向 Lua 输出到文件 Windows API 写文件 (1) (flv)
- C025:C, C++ 重定向 Lua 输出到文件 Windows API 写文件 (2) (flv)
- C026:C, C++ 重定向 Lua 输出到文件 Windows API 写文件 (3) (flv)
- C027:C, C++ 遍历游戏中注册的顶层函数 (flv)
- C028:C, C++ 遍历游戏中的顶层 UI 对象 (flv)
- C029:C, C++ 遍历游戏中的顶层 UI – 获取指定控件对象 (flv)
- C030:Lua 脚本获取指定控件对象名字框架栈测试 (flv)
用户界面与窗口控制
- C031:Lua 脚本创建窗口 (flv)
- C032:Lua 脚本创建控件按钮 (flv)
- C033:直接调用游戏的编辑框 UI 接口 (flv)
- C034:直接调用游戏的编辑框 UI 接口传递寻路坐标 (flv)
错误处理与调试
- C035:修复脚本文件不存在时的容错处理,分析错误脚本异常原因 (flv)
- C036:为脚本接口添加错误处理及显示错误信息 (flv)
- C037:分析 Lua 脚本文件出错原因并修复 (flv)
怪物列表与游戏对象管理
- C038:Lua 遍历怪物列表初步设计 (flv)
- C039:Hook GUID 或者 Hook 对象的基本原理演示 (flv)
- C040:对象 Hook 或者 ID 劫持代码实现(解锁游戏高级 Lua 功能)(flv)
Lua 代码整合与测试
- C041:Lua 代码移植融合_h (flv)
- C042:编写 Lua 遍历怪物列表的测试 (flv)
接口保护与限制突破
- C043:XDBG, CE 逆向分析接口保护限制检测 (flv)
- C044:XDBG, CE 逆向分析接口保护限制检测(过检测)(flv)
- C045:分析突破保护接口只针对暴雪 UI 开放的限制 (flv)
- C046:分析突破保护接口只针对暴雪 UI 开放的限制(OK)(flv)
- C047:C, C++ 编写代码突破游戏接口保护限制 + 定点打怪脚本设计 (flv)
游戏功能与脚本接口开发
- C048:C, C++ 计算朝向弧度 (flv)
- C049:C, C++ 游戏转向功能测试 (flv)
- C050:C, C++ 朝向设置 Lua 接口 setfacingex (flv)
- C051:C, C++ 计算距离 getunitdistance(unit), getunitpos(unit) (flv)
- C052:C, C++ 遍历获取定点范围内的一个怪物对象 (flv)
- C053:C, C++ 完善定点打怪逻辑 (flv)
物品拾取与定时器功能
- C054:XDBG, CE 分析死亡的怪物对象身上是否有物品 (flv)
- C055:C, C++ 编写脚本接口 unitisloot 判断是否可以捡物 (flv)
- C056:C, C++ 编写脚本接口 settimer (flv)
- C057:C, C++ 编写脚本接口 killtimer (flv)
- C058:C, C++ 为定点打怪添加捡物功能 (flv)
- C059:C, C++ 为定点打怪添加定时器 (flv)
自动注册 Lua 接口与代码注入
- C060:XDBG 分析适合劫持 hook 自动注册 Lua 接口地址 (flv)
- C061:C, C++ 劫持 hook 自动注册 Lua 接口 (flv)
- C062:C, C++ 完善劫持注入 (mp4)
- C063:C, C++ 完善劫持注入 – this (mp4)
技能释放与寻路功能
- C064:C, C++ 解决移动中不能释放技能的问题 (flv)
- C065:C, C++ 分析解决转向与释放技能冲突 (1) (flv)
- C066:C, C++ 分析解决 id 为 0 的问题 (flv)
- C067:C, C++ 分析游戏寻路导航接口 A (flv)
- C068:C, C++ 分析游戏寻路导航接口 B (flv)
- C069:C, C++ 分析游戏寻路导航接口 C 移植到 DLL (flv)
- C070:C, C++ 编写寻路到目标坐标的功能接口 (flv)
- C071:C, C++ 优化寻路速度并修复寻路 bug (flv)
驱动保护
以下是经过优化和重新组织的视频教程列表,专注于驱动开发与保护机制:
驱动开发与环境搭建
- D001: 驱动开发环境介绍 (flv)
- D002: 第一个驱动 HelloWorld (flv)
- D003: 完善驱动框架 – 卸载例程 (flv)
- D004: 完善驱动框架 – IRP例程注册 (flv)
- D005: 虚拟机系统安装, 驱动签名与禁用签名测试模式 (flv)
- D006: 驱动设备与符号链接 (flv)
R3与R0通信
- D007: R3与R0通信交换数据A (flv)
- D008: R3与R0通信交换数据B (flv)
- D009: R3与R0通信交换数据C (flv)
- D010: IRP_MJ_WRITE, IRP_MJ_READ读写测试 (flv)
进程保护
- D011: C/C++编写加载驱动的代码 (flv)
- D012: C/C++编写卸载驱动的代码 (flv)
- D013: C/C++编写进程保护 (阻止结束进程) (flv)
- D014: C/C++编写进程保护 (拒绝读写访问) (flv)
- D015: C/C++分析处理蓝屏错误 (bad_pool_caller) (flv)
- D016: C/C++只保护特定的进程 (flv)
- D017: C/C++保护特定名字的进程 (flv)
- D018: C/C++保护指定PID的进程 (flv)
Windbg调试与分析
- D019: Windbg双机调试 (flv)
- D020: C/C++保护特定名字的进程 (修复) (flv)
栈溢出与优化
- D021: 栈溢出问题分析解决 (flv)
- D022: 虚拟机优化提速解决花屏等问题 (flv)
突破TP/NP保护
- D023: 突破TP/NP保护跨进程读写内存1 (flv)
- D024: 突破TP/NP保护跨进程读写内存1 (重复) (flv)
- D025-D026: 突破TP/NP等游戏保护跨进程读写内存方法2 (mp4)
- D027: 突破TP/NP等游戏保护跨进程读写内存方法3 (flv)
- D028: 突破TP/NP等游戏保护跨进程写只读内存方法OK (flv)
- D029: CR0方式写入只读内存A (flv)
- D029: CR0方式写入只读内存B (flv)
- D030: 绕过TP/NP等游戏保护直接物理地址读写内存方法4 (flv)
进程遍历与权限提升
- D031: 驱动遍历process, threadobject勾子 (flv)
- D032: 驱动对抗processobject保护勾子, 完美过掉 (flv)
- D033: 驱动对抗CE进程无图标 (网易腾讯等驱动保护研究) (flv)
- D034: 驱动给指定进程提升权限+降权原理及实现 (flv)
权限问题与句柄分析
- D035: 解决权限问题 – 遍历所有进程句柄 (flv)
- D036: 解决权限问题 – 遍历指定进程句柄 (flv)
- D037: 解决权限问题 – 遍历指定进程句柄并获取句柄对象 (flv)
- D038: 解决权限问题 – 遍历指定进程句柄并获取句柄权限 (flv)
- D039: Windbg分析ObReferenceObjectByHandle取回进程句柄的过程 (flv)
- D040: Windbg分析进程句柄表和句柄权限地址关系 (flv)
- D041: 通过逆向ObReferenceObjectByHandle了解进程句柄的3张表 (flv)
- D042: 通过逆向ObReferenceObjectByHandle了解进程句柄的3张表 (重复) (flv)
句柄对象获取与权限管理
- D043: C++获取进程句柄对象 (flv)
- D044: C++获取进程句柄对象 (重复) (flv)
- D045: C++获取进程句柄对象+遍历指进程句柄 (flv)
- D046: C++获取指定进程句柄对象地址和句柄权限 (flv)
- D047-D048: C++获取指定进程句柄类型 (flv)
进程权限提升与保护绕过
- D047: C++获取指定进程句柄类型 (补录) (flv)
- D048: C++获取指定进程句柄所属PID (补录) (flv)
- D049: 提升指定进程权限过TP/NP/XIGNCODE3/EAC/BE等保护 (flv)
- D050: 进程提权的缺陷+完美绕过TP/NP/XIGNCODE3/EAC/BE等保护的思路 (flv)
- D051: 完美绕过TP/NP/XIGNCODE3/EAC/BE等保护的框架设计 (flv)
Windbg与代码调试
- D052: Windbg配合XDBG分析代码中的错误 (flv)
驱动级隐藏与监控
- D053: 测试HOOK过保护读内存 (flv)
- D054: 过游戏保护内存读写兼容性的处理 (flv)
- D055: 修改CE绕过TP/NP/XCODE3等驱动保护原理分析 (参考WRK源代码分析) (flv)
- D056: 修改CE绕过TP/NP/XCODE3等驱动保护实战写代码 (flv)
- D057: 修改CE绕过TP/NP/XCODE3等驱动保护实战测试完善 (flv)
- D058: 修改CE绕过TP/NP/XCODE3等驱动保护完美实现 (优化修复) (flv)
驱动级隐藏注入
- D059: 驱动级隐藏注入A (flv)
- D060: 驱动级隐藏注入B (flv)
R0层监控
- D061: R0层监控进程创建情况 (flv)
- D062: R0层监控进程模块的加载 (flv)