内容简介
《C 黑客编程揭秘与防范》旨在通过简单的语法知识及常用的系统函数编程,完成一些有特定功能的安全工具,让读者对系统知识等各方面有一个全面的了解,并且在笔者的带领下一步步完成书中的实例。本书主要内容为:第1章了解黑客编程,主要讲解了VC(VisualC 的缩写)和Windwos下安全编程方面的基础知识。第2章 从剖析简单的木马说起,讲解有关的网络编程和协议知识。第3章Windows应用编程基础,讲解API编程的技术。第4章 加密与解密,讲解PE等加密有关的知识。第5章HOOK编程,讲解了与钩子有关的知识。第6章黑客编程剖析,剖析了病毒的原理和攻防技术,以及安全工具的开发。第7章最后的旅程——简单驱动开发及逆向。
《C 黑客编程揭秘与防范》适合网络安全人员、黑客爱好者,以及相关的程序员阅读。
目录
- 第1章黑客编程入门
- 1.1编程语言和开发环境的选择
- 1.1.1何为SDK、API和MFC
- 1.1.2VC6和SDK的配置
- 1.2应用程序的调试
- 1.2.1编写我们的第一个程序
- 1.2.2用VC6调试第一个程序
- 1.2.3专业的应用程序调试工具——OllyDbg
- 1.3简单API的介绍
- 1.3.1复制自身程序到Windows目录和系统目录下
- 1.3.2获得系统的相关信息
- 1.3.3Debug和Release的编译方式
- 1.3.4查看函数定义
- 1.4总结
- 第2章木马开发剖析
- 2.1网络通信基础
- 2.1.1IP地址的作用与分类
- 2.1.2端口的作用与分类
- 2.2网络编程基础知识
- 2.2.1通信模型
- 2.2.2Winsock
- 2.2.3Winsock的相关函数
- 2.2.4字节顺序
- 2.3简单的通信程序
- 2.3.1基于TCP协议的“HelloWorld!”
- 2.3.2基于UDP协议的“HelloWorld!”
- 2.4实现一个C/S模式的简单木马
- 2.4.1木马服务器端的实现
- 2.4.2木马客户端的实现
- 2.5总结
- 第3章Windows应用编程基础
- 3.1文件
- 3.1.1打开文件
- 3.1.2文件操作
- 3.2AutoRun免疫程序的编写
- 3.2.1AutoRun免疫原理
- 3.2.2AutoRun免疫程序的代码实现
- 3.2.3界面设置
- 3.2.4代码相关部分
- 3.3注册表操作
- 3.3.1注册表
- 3.3.2与注册表操作相关的常用API函数
- 3.3.3注册表启动项的管理
- 3.3.4程序的界面设置及相关代码
- 3.3.5启动项的枚举
- 3.3.6添加启动项的代码
- 3.3.7删除启动项的代码
- 3.4服务相关的编程
- 3.4.1如何查看系统服务
- 3.4.2服务控制管理器的开发
- 3.4.3枚举服务的相关API函数
- 3.4.4服务的停止
- 3.4.5停止服务的相关API函数
- 3.4.6服务的启动
- 3.5进程与线程
- 3.5.1进程
- 3.5.2进程的创建
- 3.5.3“下载者”的简单演示
- 3.5.4CreateProcess()函数介绍与程序创建
- 3.5.5进程的结束
- 3.5.6进程的枚举
- 3.5.7调整当前进程的权限
- 3.5.8进程的暂停与恢复
- 3.5.9多线程
- 3.6DLL编程
- 3.6.1什么是DLL
- 3.6.2编写一个简单的DLL程序
- 3.6.3对DLL程序的调用方法一
- 3.6.4对DLL程序的调用方法二
- 3.7远程线程
- 3.7.1DLL注入
- 3.7.2DLL卸载
- 3.7.3无DLL的代码注入
- 3.8总结
- 第4章加密与解密
- 4.1PE文件结构
- 4.1.1PE文件结构全貌
- 4.1.2MZ头部
- 4.1.3PE头部
- 4.1.4节表
- 4.1.5节表数据
- 4.2详解PE文件结构
- 4.2.1DOS头部详解IMAGE_DOS_HEADER
- 4.2.2PE头部详解IMAGE_NT_HEADERS
- 4.2.3IAMGE_FILE_HEADER
- 4.2.4IMAGE_OPTIONAL_HEADER
- 4.2.5节区详解IMAGE_SECTION_HEADER
- 4.2.6与PE结构相关的3种地址
- 4.2.73种地址的转换
- 4.3PE查看器
- 4.4简单的查壳工具
- 4.5地址转换器
- 4.6添加节区
- 4.6.1手动添加一个节区
- 4.6.2通过编程添加节区
- 4.7破解基础知识及调试API函数的应用
- 4.7.1CrackMe程序
- 4.7.2用OD破解CrackMe
- 4.8文件补丁及内存补丁
- 4.8.1文件补丁
- 4.8.2内存补丁
- 4.9调试API函数的使用
- 4.9.1常见的3种断点方法
- 4.9.2调试API函数及相关结构体介绍
- 4.9.3判断是否处于被调试状态
- 4.9.4断点异常函数
- 4.9.5调试事件
- 4.9.6调试循环
- 4.9.7内存的操作
- 4.9.8线程环境相关API及结构体
- 4.10打造一个密码显示器
- 4.11总结
- 第5章HOOK编程
- 5.1HOOK知识前奏
- 5.2内联钩子——InlineHook
- 5.2.1InlineHook的原理
- 5.2.2InlineHook的实现
- 5.2.3HOOKMessageBoxA
- 5.2.4HOOKCreateProcessW
- 5.2.57字节InlineHook
- 5.2.6InlineHook的注意事项
- 5.3导入地址表钩子——IATHOOK
- 5.3.1导入表简介
- 5.3.2导入表的数据结构定义
- 5.3.3手动分析导入表
- 5.3.4枚举导入地址表
- 5.3.5IATHOOK介绍
- 5.3.6IATHOOK之CreateFileW()
- 5.4Windows钩子函数
- 5.4.1钩子原理
- 5.4.2钩子函数
- 5.4.3键盘钩子实例
- 5.4.4使用钩子进行DLL注入
- 5.5总结
- 第6章黑客编程剖析
- 6.1恶意程序剖析
- 6.1.1恶意程序的自启动
- 6.1.2木马的配置生成与反弹端口
- 6.1.3代码实现剖析
- 6.2简单病毒剖析
- 6.2.1病毒的感染剖析
- 6.2.2缝隙搜索的实现
- 6.2.3感染目标程序文件剖析
- 6.2.4添加感染标志
- 6.2.5自删除功能的实现
- 6.3隐藏DLL文件
- 6.3.1启动WinDBG
- 6.3.2调试步骤
- 6.3.3编写枚举进程中模块的函数
- 6.3.4指定模块的隐藏
- 6.4安全工具开发基础
- 6.4.1行为监控工具开发基础
- 6.4.2专杀工具
- 6.4.3U盘防御软件
- 6.4.4目录监控工具
- 6.5引导区解析
- 6.5.1通过WinHex来手动解析引导区
- 6.5.2通过程序解析MBR
- 6.5.3自定义MBR的各种结构体
- 6.5.4解析MBR的程序实现
- 6.6加壳与脱壳
- 6.6.1手动加壳
- 6.6.2编写简单的加壳工具
- 第7章最后的旅程——简单驱动开发及逆向
- 7.1驱动版的“HelloWorld”
- 7.2驱动下的进程遍历
- 7.2.1配置VMware和WinDbg进行驱动调试
- 7.2.2EPROCESS和手动遍历进程
- 7.2.3编程实现进程遍历
- 7.3HOOKSSDT(系统服务描述表)
- 7.3.1SSDT简介
- 7.3.2HOOKSSDT
- 7.3.3InlineHOOKSSDT
- 7.4应用程序与驱动程序的通信
- 7.4.1创建设备
- 7.4.2应用程序与驱动程序的通信方式
- 7.4.3应用程序与驱动程序的通信实例
- 7.5C语言代码逆向基础
- 7.5.1函数的识别
- 7.5.2if…else…分支结构
- 7.5.3switch分支结构
- 7.5.4for循环结构
- 7.5.5do…while与while…循环结构
- 参考文献