逆向工程这门手艺,最尴尬的地方在于:多数人是从"会用工具"开始的,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界面库等,适合有编程基础想深入逆向领域的学习者。

课程亮点

• 系统化学习逆向工程
• 涵盖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]

适合人群

  • 编程爱好者
  • 逆向工程从业者
  • 有志于深入逆向领域的学习者

学习收获

掌握逆向工程基本技能
熟悉MFC和Duilib界面库
提升C/C++编程能力

祝您学习愉快!

学有所成,前程似锦!