一、前言
1、 C,C++,VC之间的关系,VC环境的安装配置 ---第1课
A.C,C++,VC之间的关系,VC环境的安装配置
1.2、我们的第一个程序(Hello World)代码详解.----第2课
A.我们的第一个程序(Hello World)代码详解.
2.1、传统的C语言编译方式 ---第3课
A、用记事本手写代码
B、命令行编译生成EXE(Cl.EXE)
C、格式化输出函数printf
D、转义字符\n
E、main函数
2.2、VC集成环境编译方式 ---第4课
A、VC环境下创建项目工程
B、书写代码
C、Debug和Release
D、文件包含#include
二、C语言概论
1C/C++基本数据类型 ---第5课
1.1整型(int,short,long,unsigned)
A、整型常量(二进制,八进制十进制,十六进制)
B、整型变量(基本型,短整型,长整型,无符号型)
变量占用空间大小(字节)
变量所表示数的范围
C、sizeof操作符
D、整数四则运算(+,-,*,/)及赋值(=)
1.2浮点型(实型)float,double ---第6课
A、实型常量(十进制数形式,指数形式)
B、实型变量(单精度型和双精度型)
C、单精度与双精度区别
1.3、字符(char) ---第7课
A、字符常量及特点
B、转义字符(\n\t\v\b\r\f\\\'\ddd\xhh
C、字符变量
D、字符串常量
E、符号常量
F变量赋值和类型转换
G、变量赋初值
H、变量类型转换(自动转换,强制转换)
1.4、基本运算符 ---第8课
1、算术运算符(+,-,*,/,%,++,--)
2、关系运算符(>,<,==,>=,<=,!=)
3、逻辑运算符(&&,||,!)
4、位操作运算符(&,|,~,^,<<,>>)
5、赋值运算符(=,+=,-=,*=,/=,%=,&=,|=,^=,>>=,<<=)
1.5 基本运算符 ---第9课
6、条件运算符(三目运算?:)
7、逗号运算符(,)
8、指针运算符(*,&)
9、求字节数运算符(sizeof)
10、特殊运算符(括号,下标,成员)
1.6 基本运算符 ---第10课
11、运算符的优先级和结合性
12、自增1(++),自减1(--)运算符
13、算术表达式
14、赋值运算符和赋值表达式
15、复合赋值符及表达式(+=,-=,*=,%=,<<=,>>=,&=,^=,|=)
16、逗号运算符
2、C语言程序设计
2.1、程序代码结构 ---第11课
A、顺序结构
B、分支结构
C、循环结构
2.2、C程序的语句 ---第12课
A、表达式语句
B、函数调用句
C、控制语句(条件判断,循环执行,转向语句)
D、复合语句
E、语句
E、赋值语句
F.、数据输出语句(printf,putchar)
G、数据输入语句(scanf,getchar)
2.3分支结构程序 ---第13课
A.关系运算符和表达式
B.逻辑运算符和表达式(与(&&),或(||),非(!))
C.if语句的三种形式及注意事项
D.if语句嵌套及注意事项
E.条件运算符和表达式
F.switch语句(开关语句)
3、数组
3.1、 数组元素表示方法 ---第14课
A.元素的概念
B.下标的概念
3.2、二维数组 ---第15课
A、二维数组元素表示方法
B、二维数组的初始化
3.3、字符数组(字符串) ---第16课
A、字符数组的定义
B、字符数组的赋值
3.4、字符串常用函数 ---第17课
A、格式化字串sprintf
B、puts屏幕显示字符串
C、gets从键盘获取字串
D、strcat字串连接函数
E、strcmp字串比较函数
4、函数
4.1 函数分类(库函数,自定义函数) ---第18课
A.什么是库函数
4.2 函数的定义 ----第19课
A、自定义函数
4.2 函数的调用 ----第20课
A.函数的嵌套调用
B.函数的递归调用
4.4 变量在函数中的作用域 ----第21课
A、局部变量
B、全局变量
C、变量的静态存储与动态存储
D、外部变量说明extern
E. 静态变量 static
F. 寄存器变量 register
G 内部函数和外部函数
小结
5、指针
5.1指针概念 --- 第22课
A、指针变量的类型说明
B、指针变量的赋值
5.2、指针变量的运算 ---- 第23课
A、赋值运算
B、加减算术运算
C、数组与指针的关系
D、数组指针与指针数组
E、二维数组与指针的关系
5.3、函数与指针 ---- 第24课
A、函数指针变量
B、函数指针
C、指针函数
6、结构与联合与枚举
6.1、使用结构体 ---- 第25课
A、结构体的概念
B、结构体的定义
C、结构体的变量
D、使用结构体
6.3、结构数组 ---- 第26课
A、结构体数组的定义
B、结构体数组元素的引用
6.4、结构指针变量 ---- 第27课
A、指针对结构体变量的访问
B、指向运算符
C、指向结构体数组的指针的应用
6.5、结构体与函数 ----- 第28课
A、传递单个成员
B、传递整个结构
C、传递指向结构的指针
6.6、联合的定义 ----- 第29课
A、联合体又叫共用体
B、联合变量的说明
C、联合变量的赋值和使用
7、枚举,位运算
7.1 、枚举 ----- 第30课
A、类型定义和枚举变量的说明
B、枚举类型变量的赋值和使用
7.2 、位运算 ----- 第31课
A、&按位与
B、 |按位或
C、^按位异或
D、~取反
E、<<左移,>>左移
7.4 位域(位段) ------ 第32课
A.位域的概念
B.位域的使用
7.5 类型定义符typedef ------ 第33课
A.typedef的使用
8 预处理
8.0 文件包含与宏定义 ------ 第34课
A.#include ""
B.#include <>
C.#pragma
E.无参数宏
F.带参数宏
8.3、条件编译 --------- 第35课
A.#indef,#else,#endif
B.#ifndef,#else,#endif
C.#if #else,#endif
三、VC内联汇编和常用汇编指令
1、数据传送指令 ----- 第36课
MOV,MOVSX,MOVZX
PUSH,POP,PUSHA,POPA
PUSHAD,POPAD
XCHG,CMPXCHG
2、算术运算指令 ------第37课
ADD,ADC,INC,SUB,DEC,NEC,CMP,MUL,IMUL,DIV,IDIV
CBW,CWD,CWDE,CDQ
3、逻辑运算指令 ------第38课
AND,OR,XOR,NOT,TEST,
SHL,SAL,SHR,SAR,ROL,ROR,RCL,RCR
4、串指令 -----第39课
A、
MOVS,MOVSB,MOVSW,MOVSD
CMPS,MOVSB,MOVSW
SCAS,
LODS,LODSB,LODSW,LODSD
STOS,
REP,REPE/REPZ,REPNE/REPNZ,REPC,REPNC
B、纯ASM汇编演示以上指令
5、条件转移指令第一部分 ----第40课
1、无条件转移指令 (长转移)
JMP 无条件转移指令
CALL 过程调用
RET/RETF过程返回.
2、条件转移指令 (短转移)
标志位
3.条件转移指令第二部分 ----第41课
A、
JA/JNBE 不小于或不等于时转移.
JAE/JNB 大于或等于转移.
JB/JNAE 小于转移.
JBE/JNA 小于或等于转移.
B、
JG/JNLE 大于转移.
JGE/JNL 大于或等于转移.
JL/JNGE 小于转移.
JLE/JNG 小于或等于转移.
4.条件转移指令第三部分 ----第42课
A
JE/JZ 等于转移.
JNE/JNZ 不等于时转移.
JC 有进位时转移.
JNC 无进位时转移.
JNO 不溢出时转移.
B
JNP/JPO 奇偶性为奇数时转移.
JNS 符号位为 "0" 时转移.
JO 溢出转移.
JP/JPE 奇偶性为偶数时转移.
JS 符号位为 "1" 时转移.
5、循环控制指令(短转移) ---- 第43课
LOOP CX不为零时循环.
LOOPE/LOOPZ CX不为零且标志Z=1时循环.
LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.
JCXZ CX为零时转移.
JECXZ ECX为零时转移.
6、用__declspec(naked)写干净的函数 ---第44课
四、MFC编程
1、C++的类和对象 ----第45课
A.类的概念
B.对象的概念
C.封装的优势
2、常用控件(controlS) ---第46课
静态文本(static text)
文本框(text box)
按钮(Button)
组合框
列表框
选项卡(Tab Control)
图片(picture)
3.第一个API函数 ----第47课
A.擅长使用MSDN
B.参数的分析
C.哪些是系统API?
4.第一个HelloWorld(平台SDK) ----第48课
A.纯API打造第一个HelloWorld程序
B.分析每个参数的意义
5、一个简陋的打字程序----第49课
A、使用资源
B、菜单和图标
C、接收键盘输入
6、一个简陋的打字程序----第50课
D、接收鼠标输入
E、设置文本和背景
7、GDI基本绘图1-----第51课
A、设备环境
B、往标题上写文字
C、往别的窗体上写文字
8、与窗体像素绘图相关 ----第52课
A、Windows的颜色和像素点
B、获得某个像素颜色值(外挂取色功能用到)
C、绘制线条
D、绘制网格
9、绘制正弦曲线 ----第53课
A、循环找点
B、连接
10、绘制区域 ----第54课
A、绘制区域
B、坐标系统
11、实例小时钟1 ----第55课
A、小时钟外观
12、实例小时钟2 ----第56课
B、定时器
13、实例小时钟3 ----第57课
A、系统时间
B、小时钟程序例子
14、网络基础知识 ----第58课
A、网络基础知识
B、OSI网络七层参考模型
C、各层的意义
15、Winsock接口 ----第59课
A、套接字的概念
B、寻址方式
C、字节顺序
D、使用举例
16、Winsock编程流程(服务端) ----第60课
A、Winsock库的装入,初始化,释放
B、套接字的创建和关闭
C、绑定套接字到指定的IP地址和端口号
D、设置套接字进入监听状态
E、接受连接请求
F、收发数据
16、Winsock编程流程(客户端) ----第61课
A、Winsock库的装入,初始化,释放
B、套接字的创建和关闭
C、绑定套接字到指定的IP地址和端口号
D、设置套接字进入监听状态
E、接受连接请求
F、收发数据
18、手动打造后门客户端与服务端 ----第62课
A、学以致用
B、利用前两节课的知识,实现后门框架
19、动态数据链接库 ----第63课
A、动态数据链接库的概念
B、创建动态数据链接库
C、动态数据链接库的使用
20.修改注册表达到自启动 ----第64课
A、木马的启动方式
B、注册表的基础知识
C、如何利用注册表启动木马
21、编程实现进程管理 -----第65课
A、后门必备的特性
B、进程与线程的区别
C、编程实现遍历进程与结束进程
22、编程实现线程管理 -----第66课
A、并发线程的优势
B、编程实现并发线程
23、手动打造后门cmdshell ----第67课
A、正向连接与反弹连接
B、管道的概念
C、编程实现后门CMDSHELL功能
18、一个简单的内存修改器 ---第68课
A、编写测试程序
B、搜索内存
C、修改内存
五、算法实例
1.线性表顺序表 ---第69课
A、链表的概念
B、线性链表的定义
C、编程实现顺序链表
2.线性表单链表 ---第70课
A、单链表的概念
B、单链表结构定义
C、编程实现单链表
3.线性表双向链表 ----第71课
A、哨兵节点
B、双向链表的优势
C、编程实现双向链表
4、栈的实现 ----第72课
A、栈的概念
B、栈的结构
B、栈的编程实现
5.栈的应用实例(小人走迷宫) ----第73课
A、绘制迷宫
B、路线与栈的关系
C、小人走迷宫的实现
6、队列 -----第74课
A、队列的概念
B、队列的结构
C、队列的编程实现
7、循环队列 -----第75课
A、解决上节课遗留问题
B、使用循环队列
C、链表队列
8、双队列的实现 -----第76课
A、双队列的概念
B、双队列的结构
C、双队列的编程实现
9、串的实现 ----第77课
A、串的概念
B、串的结构
C、串的编程实现
10、树 ---第78课
A、树的概念
B、树的结构
C、树的编程实现
11、二叉树 ---第79课
A、二叉树的概念
B、二叉树的结构
C、二叉树的编程实现
12、树的使用 ---第80课
A、完善78课代码
B、实现创建与遍历
13、二叉树的使用 ---第81课
A、完全二叉树
B、满二叉树
C、二叉树的应用实例
14、图 ---第82课
A、什么是图
B、图的结构
C、图的编程实现
六、代码的升级与转换
1、vc代码升级 ---第83课
2、delphi与VC代码之间的转换 ---第84课
七、逆向技术
1.逆向热身 ---第85课
A、逆向工具
B、原理性工具
C、实战破解保护机制
2.IDA逆向 ---第86课
A、IDA逆向上节课代码
3、动态调试技术 ---第87课
A、OllyDbg(OD)调试器
B、界面介绍与配置
C、基本操作
D、实战破解TraceMe小程序
4、逆向程序,还原算法 ---第88课
A、翻译反汇编每条语句
B、分析程序流程
C、还原C语言代码
5、OD中的各种断点 ---第89课
A、INT 3断点
B、硬件断点
C、内存断点
D、内存访问一次性断点
E、消息断点
F、条件断点
G、条件记录断点
6、静态分析 ---第90课
A、静态调试之王--IDA
B、用IDA分析程序架构流程
C、分析程序算法
D、完成程序序列号验证
7、未公开的技术 ---第91课
A、用DUMPBIN转储文件
B、动态分析DLL文件
C、用OD翻译未公开的函数
D、将RtlInitializeGenericTable还原成C语言
8、注册机的制作 ---第92课
A、明码比较软件的攻击
B、对算法逆向并写注册机
C、不理解细节也能写注册机
9、去掉讨厌的NAG窗口 ---第93课
A、使用资源工具找到目标窗口
B、逆向程序绕过NAG窗口
10、去掉时间与菜单功能限制 ---第94课
11、拆解KeyFile文件保护 ---第95课
八、歪挂技术
1.歪挂介绍 ---第96课
A.外挂的种类
B.外挂的原理
2.寻找窗口 ---第97课
A.FindWindow找到窗体
B.编程实现
3.模拟鼠标 ---第98课
A.mouse_event
B.编程实现鼠标模拟
4.模拟键盘 ---第99课
A.k_event
B.SendMessage
C.编程实现键盘模拟
5.CALL的调用 ---第100课
A.反汇编程序
B.找到相关函数
C.实现远程调用
郁金香VC++基础教程
下载链接:
|