逆向工程这门手艺,最尴尬的地方在于:多数人是从"会用工具"开始的,OD、x64dbg、IDA 摆弄得很熟,但一遇到没有符号、被混淆、或者界面用 MFC、Duilib 写出来的目标,就卡在原地。卡住的原因往往不在逆向技巧本身,而在被逆向的那一端的语言和框架不熟——看不懂编译器生成的代码结构,认不出 MFC 的消息映射表,自然也就找不到该下断点的位置。
这套课程要补的正是这个缺口。它没有一上来就讲壳和反调试,而是先把 C/C++ 语言层面和 Win32 界面框架这两块地基铺开,再往上走逆向的部分。下面按"你缺什么、练什么、学完能答什么"三个角度说清楚。
先确认自己缺的是哪一块
如果你已经能独立完成一个 C++ 小项目,但看反汇编时对函数调用约定、栈帧布局、虚函数表这些东西只能靠猜,那问题出在语言与编译产物之间的映射关系上。课程里 C/C++ 部分不是重新教你写代码,而是把指针、结构体对齐、类对象内存布局这些在逆向里天天要用的点单独拎出来讲——这些恰好是普通编程课一笔带过、逆向时却必须精确掌握的内容。
如果你面对的目标程序带图形界面,情况会更明显。MFC 的消息映射是一张宏展开后的静态表,Duilib 则把控件和 XML 描述绑定在一起,两者的窗口过程和控件查找方式完全不同。不熟悉这两套框架,你就只能靠字符串搜索碰运气,而不是顺着消息流找到处理函数。这门课把 MFC 和 Duilib 单独作为模块,目的就在这里。
配套练习该怎么用
- 语言模块:不要只看讲解,自己写一段带继承和多态的小程序,编译后用调试器对照源码和反汇编逐行看,直到能凭汇编反推出原始类结构。
- 框架模块:用 MFC 和 Duilib 各写一个最简单的窗口程序,先自己找按钮点击的响应函数在哪,再对照课程验证思路,比直接听课效果好得多。
- 逆向模块:优先挑自己写过的程序做目标,因为你清楚原始逻辑,验证分析结果对错时不会含糊。
需要提醒的是,练手目标尽量选自己编译的、或者明确允许分析的程序,别一上来就对着商业软件硬啃,容易被壳和反调试拖住,反而打击信心。
看完应该能回答的问题
用这几个问题自查,答不上来就说明对应模块还没吃透:
- 一个带虚函数的类,它的对象在内存里长什么样?虚表指针存在哪个偏移?
- MFC 程序里,点击一个菜单项之后,控制流是怎么一步步走到你的处理函数的?
- Duilib 的窗口消息和控件事件,在逆向视角下分别对应哪些可下断点的位置?
- 面对一段没有符号的 C++ 反汇编,你靠什么信息还原出函数签名和参数个数?
- 同一个功能,用 C 写和用 C++ 类封装后,编译出来的代码差异体现在哪?
适合谁,不适合谁
这门课适合已经能写代码、但逆向时总觉得"隔一层"的人,也适合做安全分析、外挂对抗、软件兼容性排查这类工作需要读懂二进制的人。如果你连基本的循环、函数、指针都没写过,建议先补一段编程基础再来,否则语言模块会变成硬背。
另外,这门课不承诺让你学完就能脱壳或者破解任何软件。它解决的是"看得懂"的问题:看得懂编译器产出、看得懂框架结构、看得懂别人的代码组织方式。把这三件事做扎实,后面再学具体的对抗手段,才有地方落脚。
迪大学院逆向课程 :从零掌握核心技能
逆向工程核心技能全面掌握
编辑点评
系统化学习逆向工程,涵盖C/C++基础、MFC、Duilib界面库等,适合有编程基础想深入逆向领域的学习者。
⭐ 编辑推荐
迪大学院逆向课程,从零开始,系统学习逆向工程核心技能。
涵盖C/C++基础、MFC、Duilib界面库等,适合有编程基础想深入逆向领域的学习者。
课程亮点
课程目录
067.静态成员变量和静态成员函数-1.mp4 [138.6 MB] 025.typedef和内存对齐原则.mp4 [175.4 MB] 192.DuiLib界面库的介绍和环境搭建.mp4 [153.6 MB] 007.if判断语句.mp4 [88.9 MB] 051.冒泡排序算法的概念和代码实现.mp4 [147.4 MB] 112.单独显示非模态对话框.mp4 [185.2 MB] 038.结构体数组在内存中的排列方式.mp4 [113.7 MB] 194.DuiLib界面库之按钮的消息响应.mp4 [116.2 MB] 115.父窗口中创建模态对话框.mp4 [219.0 MB] 168.静态链接库的编译和使用.mp4 [56.8 MB] 137.MFC应用程序类的配置文件.mp4 [189.9 MB] 198.Duilib界面库之自绘标题栏的实现.mp4 [203.7 MB] 195.Duilib界面库之屏蔽标题栏和XML配置.mp4 [441.4 MB] 028.打开文件关闭文件.mp4 [155.1 MB] 132.MFC菜单的添加和使用.mp4 [171.1 MB] 091.C++异常.mp4 [120.9 MB] 069.继承的概念和使用.mp4 [156.5 MB] 114.单独创建模态对话框.mp4 [92.7 MB] 003.C语言基本数据类型.mp4 [236.9 MB] 203.DuiLib界面库之静态文本和标签的使用.mp4 [219.1 MB] 072.private限制符对继承的影响.mp4 [70.8 MB] 082.C++命名空间及其标准库介绍.mp4 [68.5 MB] 092.C++文件流操作打开和关闭文件.mp4 [119.0 MB] 175.配置文件ini的读写操作.mp4 [119.2 MB] 036.C项目文件保存和总结.mp4 [119.0 MB] 211.Duilib界面库之自定义默认样式和字体库.mp4 [110.7 MB] 176.获取配置文件中所有的Section.mp4 [129.4 MB] 163.利用事件实现多进程的控制.mp4 [74.4 MB] 022.结构体得概念和使用.mp4 [214.2 MB] 179.简易CS架构流程图的介绍.mp4 [77.6 MB] 191.进程通讯之共享内存.mp4 [263.8 MB] 190.聊天软件之客户端的编写.mp4 [139.3 MB] 147.如何以管理员的方式创建进程.mp4 [210.9 MB] 183.HP网络库的介绍和环境配置.mp4 [246.0 MB] 135.MFC文件对话框CFileDialog的使用.mp4 [133.6 MB] 221.D3D9流水线之裁剪 正交投影和透视投影.mp4 [103.6 MB] 121.MFC添加消息映射函数.mp4 [134.0 MB] 117.窗口坐标.mp4 [203.6 MB] 101.C++状态机模式.mp4 [101.0 MB] 039.汇编下数组和步长的本质关系.mp4 [163.5 MB] 064.浅拷贝和深拷贝的区别mp4.mp4 [131.5 MB] 099.C++11下的单例模式.mp4 [59.9 MB] 145.如何遍历当前进程的所有线程.mp4 [163.6 MB] 174.递归删除文件.mp4 [75.2 MB] 050.选择排序算法的概念和代码实现.mp4 [197.7 MB] 171.添加本地资源和释放资源到本地.mp4 [341.8 MB] 222.D3D9流水线之视口变换和光栅化.mp4 [71.3 MB] 090.容器之map.mp4 [184.5 MB] 043.链表的初始化和添加.mp4 [236.2 MB] 186.HP网络库之客户端类的编写.mp4 [208.6 MB] 076.多态的概念以及静态多态的使用.mp4 [74.4 MB] 125.MFC非模态窗口和结束流程-2.mp4 [149.7 MB] 214.D3D9之D3D9设备的初始化.mp4 [263.9 MB] 160.灵活运用C++互斥量.mp4 [89.4 MB] 042.链表的概念和需求.mp4 [90.7 MB] 202.DuiLib界面库之按钮的使用.mp4 [379.9 MB] 075.多继承下的构造析构函数的调用顺序.mp4 [71.3 MB] 159.巧妙运用类封装临界区2种方法.mp4 [168.1 MB] 106.常见的windows消息.mp4 [231.9 MB] 057.如何通过指针去遍历游戏二叉树.mp4 [253.6 MB] 083.字符串类的常见用法.mp4 [177.7 MB] 077.虚函数的概念和使用.mp4 [113.3 MB] 054.二叉查找树的创建和遍历.mp4 [468.6 MB] 180.TCP服务器的代码实现.mp4 [428.3 MB] 070.public限制符对继承的影响.mp4 [59.9 MB] 001.第一个C项目解析.mp4 [388.2 MB] 130.MFC列表框List Control的添加和使用.mp4 [257.7 MB] 196.Duilib界面库之基础类的使用.mp4 [123.2 MB] 035.C项目数据和逻辑处理.mp4 [196.6 MB] 032.C项目需求分析和架构设计.mp4 [19.2 MB] 119.MFC项目的创建和架构介绍.mp4 [217.5 MB] 131.MFC标签Tab Control的添加和使用.mp4 [292.4 MB] 152.如何遍历所有进程.mp4 [198.6 MB] 193.DuiLib界面库之一个简单的窗口.mp4 [286.8 MB] 169.动态链接库的编译和使用.mp4 [349.0 MB] 018.二维数组和数组指针 行指针 的关系.mp4 [64.0 MB] 187.HP网络库之服务器类的使用.mp4 [111.9 MB] 016.二维数组多维数组.mp4 [164.5 MB] 166.利用互斥体实现进程同步和单开.mp4 [90.4 MB] 107.按钮的创建和消息响应.mp4 [284.6 MB] 062.析构函数.mp4 [126.6 MB] 144.安全的暂停和恢复线程.mp4 [141.1 MB] 219.D3D9流水线之观察坐标系取景矩阵.mp4 [77.0 MB] 004.有无符号和变量常量.mp4 [220.1 MB] 059.this指针和构造函数及其初始化列表.mp4 [229.3 MB] 210.DuiLib界面库之消息框类的使用.mp4 [148.5 MB] 134.MFC文件类CStdioFile的使用.mp4 [101.5 MB] 105.消息循环和窗口过程.mp4 [337.6 MB] 118.Win32定时器.mp4 [225.8 MB] 155.窗口的基本操作和实战小工具.mp4 [290.0 MB] 005.存储类型和类型转换.mp4 [165.6 MB] 173.递归拷贝和覆盖文件.mp4 [280.4 MB] 110.控件的可见和启用.mp4 [77.0 MB] 149.设置和获取进程的命令行参数.mp4 [83.5 MB] 136.MFC文件查找类CFileFind的使用.mp4 [99.9 MB] 143.调试模式下的暂停和恢复线程.mp4 [158.9 MB] 113.父窗口中创建非模态对话框.mp4 [71.4 MB] 167.静态链接库和动态链接库的概念和区别.mp4 [58.6 MB] 040.结构体数组的好处和实现.mp4 [144.3 MB] 067.对象的内存和汇编下的this传递.mp4 [132.8 MB]
适合人群
- 编程爱好者
- 逆向工程从业者
- 有志于深入逆向领域的学习者
学习收获
祝您学习愉快!
学有所成,前程似锦!





