一、C/C++语言特性介绍 1、C/C++语法特性介绍 了解C/C++语言及语法特性,语言特性对程序安全有很大影响。 了解代码内存分布及编译器等开发工具的基本知识为后续安全编程打下基础。 2、进程内存组织及编译器、链接器、预处理器介绍 二、C/C++编程习惯 1、代码源文件的组织结构 培养良好的编程习惯,良好的编程习惯会提高代码的质量。 2、源代码的板式 3、命名规则 三、C/C++高质量编程 1、常量、声明、表达式的使用: 表达式编写规则; 程序控制语句编写规则; 常量定义规则、类中的常量使用; 深入介绍如何进行高质量程序设计及如何提高程序效率,掌握高质量程序设计的规则,代码质量的提高不但会提升程序执行效率,也会提高程序安全性。 掌握常量及表达式的编写规则; 掌握指针的使用规则; 掌握函数设计规则; 掌握类设计规则; 掌握基本的内存管理规则。 2、指针的使用: 指针与数组; 指针与引用; 指针参数的传递; 3、函数设计: 函数的参数与返回值; 函数内部实现; C++函数的高级特性; 4、类设计: 类的构造函数、析构函数与赋值函数; 类的继承与组合; 5、内存管理: 内存泄露与野指针问题; malloc/free与new/delete; malloc/free 的使用要点; new/delete 的使用要点; 四、C/C++编程漏洞及解决方案 1、字符串安全编程: 字符串特征及常见操作错误; 字符串漏洞: 字符串漏洞介绍; 代码注入和弧注入; 字符串漏洞解决方案。 掌握常见的C/C++编程漏洞及相应的解决方法。 掌握字符串漏洞原理、利用方法及解决方案; 掌握指针使用问题及漏洞利用; 掌握常见动态内存管理错误、Linux和Windows内存管理机制及动态内存管理安全解决方案; 掌握整数漏洞原理、利用方法及解决方案; 掌握格式化输出的漏洞、利用原理及解决方案; 掌握文件I/O常见漏洞、利用方法及解决方案。 第二天上午 2、指针问题: 对指针的修改; 全局偏移表; 针对gcc .dtors区得覆盖; 虚指针; C99工具函数漏洞利用; 异常处理。 3、动态内存管理: 动态内存管理常见错误; Linux Doug Lea内存分配器; Windows RtlHeap内存管理器; 动态内存管理安全解决方案。
第二天下午 4、整数安全: 整数的表示、转换与常见错误; 整数的操作; 整数漏洞: 整数溢出; 符号错误; 截断错误; 整数逻辑错误; 整数漏洞解决方案。 5、格式化输出: 变参函数; 对格式化输出函数的漏洞利用; 栈随机化; 格式化输出安全解决方案。 6、文件I/O: 并发,TOC/TOU; 文件系统的利用; 文件I/O安全解决方案。 存组织及编译器、链接器、预处理器介绍 1、C/C++语法特性介绍 2、进程内存组织及编译器、链接器、预处理器介绍
谷安培训顾问:徐金梅 联系座机:0755-82024056-801 移动手机:13410883634 QQ:806050486 邮箱:xujinmei@gooann.com
公司地址:深圳南山区桃园路金桃园大厦金馨阁19E
|