天书夜读:从汇编语言到Windows内核编程

天书夜读
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
出版社: 电子工业出版社
2008-10
版次: 1
ISBN: 9787121073397
定价: 45.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 270页
字数: 393千字
正文语种: 简体中文
  •   本书从基本的Windows程序与汇编指令出发,深入浅出地讲解了Windows内核的编程、调试、阅读,以及自行探索的方法。读者在使用C/C++开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及Windows内核的基本编程方法。
      本书适合使用C/C++在Windows上编程的读者,尤其适合希望加深自己技术功底的Windows应用程序员、计算机专业的有志于软件开发的大中院校学生;专业的Windows内核程序员,亦可从本书得到超越一般内核程序开发的启发。   谭文:从2002年到2008年,从事信息安全类软件的Windows内核驱动的开发工作。从2008年开始参与一个主要涉及不同架构之间二进制指令的实时翻译技术的项目的开发。业余时间在驱动开发音以楚狂人为笔名发表了许多技术文章。 入手篇熟悉汇编
    第1章汇编指令与C语言
    1.1上机建立第一个工程
    1.1.1用VisualStudio创建工程
    1.1.2用VisualStudio查看汇编代码
    1.2简要复习常用的汇编指令
    1.2.1堆栈相关指令
    1.2.2数据传送指令
    1.2.3跳转与比较指令
    1.3C函数的参数传递过程
    第2章C语言的流程和处理
    2.1C语言的循环反汇编
    2.1.1for循环
    2.1.2do循环
    2.1.3while循环
    2.2C语言判断与分支的反汇编
    2.2.1if-else判断分支
    2.2.2switch-case判断分支
    2.3C语言的数组与结构
    2.4C语言的共用体和枚举类型
    第3章练习反汇编C语言程序
    3.1算法的反汇编
    3.1.1算法反汇编代码分析
    3.1.2算法反汇编阅读技巧
    3.2发行版的反汇编
    3.3汇编反C语言练习
    基础篇内核编程
    第4章内核字符串与内存
    4.1字符串的处理
    4.1.1使用字符串结构
    4.1.2字符串的初始化
    4.1.3字符串的拷贝
    4.1.4字符串的连接
    4.1.5字符串的打印
    4.2内存与链表
    4.2.1内存的分配与释放
    4.2.2使用LIST_ENTRY
    4.2.3使用长长整型数据
    4.2.4使用自选锁
    第5章文件与注册表操作
    5.1文件操作
    5.1.1使用OBJECT_ATTRIBUTES
    5.1.2打开和关闭文件
    5.1.3文件读/写操作
    5.2注册表操作
    5.2.1注册表键的打开
    5.2.2注册表值的读
    5.2.3注册表值的写
    第6章时间与线程
    6.1时间与定时器
    6.1.1获得当前滴答数
    6.1.2获得当前系统时间
    6.1.3使用定时器
    6.2线程与事件
    6.2.1使用系统线程
    6.2.2在线程中睡眠
    6.2.3使用同步事件
    第7章驱动、设备与请求
    7.1驱动与设备
    7.1.1驱动入口与驱动对象
    7.1.2分发函数和卸载函数
    7.1.3设备与符号链接
    7.1.4设备的安全创建
    7.1.5设备与符号链接的用户相关性
    7.2请求处理
    7.2.1IRP与IO_STACK_LOCATION
    7.2.2打开与关闭请求的处理
    7.2.3应用层信息传入
    7.2.4驱动层信息传出
    探索篇研究内核
    第8章进入Windows内核
    8.1开始Windows内核编程
    8.1.1内核编程的环境准备
    8.1.2用C语言写一个内核程序
    8.2学习用WinDbg进行调试
    8.2.1软件的准备
    8.2.2设置WindowsXP调试执行
    8.2.3设置VMWare虚拟机调试
    8.2.4设置被调试机为Vista的情况
    8.2.5设置Windows内核符号表
    8.2.6调试例子diskperf
    8.3认识内核代码函数调用方式
    8.4尝试反写C内核代码
    8.5如何在代码中寻找需要的信息
    第9章用C++编写的内核程序
    9.1用C++开发内核程序
    9.1.1建立一个C++的内核工程
    9.1.2使用C接口标准声明
    9.1.3使用类静态成员函数
    9.1.4实现new操作符
    9.2开始阅读一个反汇编的类
    9.2.1new操作符的实现
    9.2.2构造函数的实现
    9.3了解更多的C++特性
    第10章继续探索Windows内核
    10.1探索Windows已有内核调用
    10.2自己实现XP的新调用
    10.2.1对照调试结果和数据结构
    10.2.2写出C语言的对应代码
    10.3没有符号表的情况
    10.464位操作系统下的情况
    10.4.1分析64位操作系统的调用
    10.4.2深入了解64位内核调用参数传递
    深入篇修改内核
    第11章机器码与反汇编引擎
    11.1了解Intel的机器码
    11.1.1可执行指令与数据
    11.1.2单条指令的组成
    11.1.3MOD-REG-R/M的组成
    11.1.4其他的组成部分
    11.2反汇编引擎XDE32基本数据结构
    11.3反汇编引擎XDE32具体实现
    第12章CPU权限级与分页机制
    12.1Ring0和Ring3权限级
    12.2保护模式下的分页内存保护
    12.3分页内存不可执行保护
    12.3.1不可执行保护原理
    12.3.2不可执行保护的漏洞
    12.4权限级别的切换
    12.4.1调用门及其漏洞
    12.4.2sysenter和sysexit指令
    第13章开发Windows内核Hook
    13.1XP下Hook系统调用IoCallDriver
    13.2Vista下IofCallDriver的跟踪
    13.3Vista下inlinehook
    13.3.1写入跳转指令并拷贝代码
    13.3.2实现中继函数
    实战篇实际开发
    第14章反病毒、木马实例开发
    14.1反病毒、木马的设想
    14.2开发内核驱动
    14.2.1在内核中检查可执行文件
    14.2.2在内核中生成设备接口
    14.2.3在内核中等待监控进程的响应
    14.3开发监控进程
    14.4本软件进一步展望
    第15章Rootkit与HIPS
    15.1Rootkit为何很重要
    15.2Rootkit如何逃过检测
    15.3HIPS如何检测Rootkit
    第16章手写指令保护代码
    16.1混淆字符串
    16.2隐藏内核函数
    16.3混淆流程与数据操作
    16.3.1混淆函数出口
    16.3.2插入有意义的花指令
    第17章用VMProtect保护代码
    17.1安装VMProtect
    17.2使用VMProtect
    17.3查看VMProtect效果
    参考文献
  • 内容简介:
      本书从基本的Windows程序与汇编指令出发,深入浅出地讲解了Windows内核的编程、调试、阅读,以及自行探索的方法。读者在使用C/C++开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及Windows内核的基本编程方法。
      本书适合使用C/C++在Windows上编程的读者,尤其适合希望加深自己技术功底的Windows应用程序员、计算机专业的有志于软件开发的大中院校学生;专业的Windows内核程序员,亦可从本书得到超越一般内核程序开发的启发。
  • 作者简介:
      谭文:从2002年到2008年,从事信息安全类软件的Windows内核驱动的开发工作。从2008年开始参与一个主要涉及不同架构之间二进制指令的实时翻译技术的项目的开发。业余时间在驱动开发音以楚狂人为笔名发表了许多技术文章。
  • 目录:
    入手篇熟悉汇编
    第1章汇编指令与C语言
    1.1上机建立第一个工程
    1.1.1用VisualStudio创建工程
    1.1.2用VisualStudio查看汇编代码
    1.2简要复习常用的汇编指令
    1.2.1堆栈相关指令
    1.2.2数据传送指令
    1.2.3跳转与比较指令
    1.3C函数的参数传递过程
    第2章C语言的流程和处理
    2.1C语言的循环反汇编
    2.1.1for循环
    2.1.2do循环
    2.1.3while循环
    2.2C语言判断与分支的反汇编
    2.2.1if-else判断分支
    2.2.2switch-case判断分支
    2.3C语言的数组与结构
    2.4C语言的共用体和枚举类型
    第3章练习反汇编C语言程序
    3.1算法的反汇编
    3.1.1算法反汇编代码分析
    3.1.2算法反汇编阅读技巧
    3.2发行版的反汇编
    3.3汇编反C语言练习
    基础篇内核编程
    第4章内核字符串与内存
    4.1字符串的处理
    4.1.1使用字符串结构
    4.1.2字符串的初始化
    4.1.3字符串的拷贝
    4.1.4字符串的连接
    4.1.5字符串的打印
    4.2内存与链表
    4.2.1内存的分配与释放
    4.2.2使用LIST_ENTRY
    4.2.3使用长长整型数据
    4.2.4使用自选锁
    第5章文件与注册表操作
    5.1文件操作
    5.1.1使用OBJECT_ATTRIBUTES
    5.1.2打开和关闭文件
    5.1.3文件读/写操作
    5.2注册表操作
    5.2.1注册表键的打开
    5.2.2注册表值的读
    5.2.3注册表值的写
    第6章时间与线程
    6.1时间与定时器
    6.1.1获得当前滴答数
    6.1.2获得当前系统时间
    6.1.3使用定时器
    6.2线程与事件
    6.2.1使用系统线程
    6.2.2在线程中睡眠
    6.2.3使用同步事件
    第7章驱动、设备与请求
    7.1驱动与设备
    7.1.1驱动入口与驱动对象
    7.1.2分发函数和卸载函数
    7.1.3设备与符号链接
    7.1.4设备的安全创建
    7.1.5设备与符号链接的用户相关性
    7.2请求处理
    7.2.1IRP与IO_STACK_LOCATION
    7.2.2打开与关闭请求的处理
    7.2.3应用层信息传入
    7.2.4驱动层信息传出
    探索篇研究内核
    第8章进入Windows内核
    8.1开始Windows内核编程
    8.1.1内核编程的环境准备
    8.1.2用C语言写一个内核程序
    8.2学习用WinDbg进行调试
    8.2.1软件的准备
    8.2.2设置WindowsXP调试执行
    8.2.3设置VMWare虚拟机调试
    8.2.4设置被调试机为Vista的情况
    8.2.5设置Windows内核符号表
    8.2.6调试例子diskperf
    8.3认识内核代码函数调用方式
    8.4尝试反写C内核代码
    8.5如何在代码中寻找需要的信息
    第9章用C++编写的内核程序
    9.1用C++开发内核程序
    9.1.1建立一个C++的内核工程
    9.1.2使用C接口标准声明
    9.1.3使用类静态成员函数
    9.1.4实现new操作符
    9.2开始阅读一个反汇编的类
    9.2.1new操作符的实现
    9.2.2构造函数的实现
    9.3了解更多的C++特性
    第10章继续探索Windows内核
    10.1探索Windows已有内核调用
    10.2自己实现XP的新调用
    10.2.1对照调试结果和数据结构
    10.2.2写出C语言的对应代码
    10.3没有符号表的情况
    10.464位操作系统下的情况
    10.4.1分析64位操作系统的调用
    10.4.2深入了解64位内核调用参数传递
    深入篇修改内核
    第11章机器码与反汇编引擎
    11.1了解Intel的机器码
    11.1.1可执行指令与数据
    11.1.2单条指令的组成
    11.1.3MOD-REG-R/M的组成
    11.1.4其他的组成部分
    11.2反汇编引擎XDE32基本数据结构
    11.3反汇编引擎XDE32具体实现
    第12章CPU权限级与分页机制
    12.1Ring0和Ring3权限级
    12.2保护模式下的分页内存保护
    12.3分页内存不可执行保护
    12.3.1不可执行保护原理
    12.3.2不可执行保护的漏洞
    12.4权限级别的切换
    12.4.1调用门及其漏洞
    12.4.2sysenter和sysexit指令
    第13章开发Windows内核Hook
    13.1XP下Hook系统调用IoCallDriver
    13.2Vista下IofCallDriver的跟踪
    13.3Vista下inlinehook
    13.3.1写入跳转指令并拷贝代码
    13.3.2实现中继函数
    实战篇实际开发
    第14章反病毒、木马实例开发
    14.1反病毒、木马的设想
    14.2开发内核驱动
    14.2.1在内核中检查可执行文件
    14.2.2在内核中生成设备接口
    14.2.3在内核中等待监控进程的响应
    14.3开发监控进程
    14.4本软件进一步展望
    第15章Rootkit与HIPS
    15.1Rootkit为何很重要
    15.2Rootkit如何逃过检测
    15.3HIPS如何检测Rootkit
    第16章手写指令保护代码
    16.1混淆字符串
    16.2隐藏内核函数
    16.3混淆流程与数据操作
    16.3.1混淆函数出口
    16.3.2插入有意义的花指令
    第17章用VMProtect保护代码
    17.1安装VMProtect
    17.2使用VMProtect
    17.3查看VMProtect效果
    参考文献
查看详情
好书推荐 / 更多
天书夜读
侧看成峰:葛兆光海外学术论著评论集(精)
葛兆光 著
天书夜读
病床边的陌生人:法律与生命伦理学塑造医学决策的历史
Rothman 著;[美]戴维·J.罗思曼(David、J.、潘驿炜 译
天书夜读
甲骨文丛书·恐惧与自由:第二次世界大战如何改变了我们
基思·罗威(Keith Lowe) 著;朱邦芊 译
天书夜读
果麦经典:平面国(数学界的超级文化符号,《三体》二向箔的灵感来源,理解维度概念的绝佳途径。)
鲁冬旭 译者;果麦文化 出品;埃德温·A·艾勃特
天书夜读
天生有罪: 特雷弗·诺亚的变色人生(精装珍藏版)
[南非]特雷弗·诺亚 著;董帅 译;未读 出品
天书夜读
《末代沙皇:罗曼诺夫王朝的覆灭》(再现末代沙皇的真实面孔与罗曼诺夫王朝的命运终章)
道洛什·久尔吉 著;何剑 译
天书夜读
版本与目录
辛德勇
天书夜读
生死有时:美国医院如何形塑死亡
[美]莎伦·考夫曼 著 ;初丽岩;王清伟
天书夜读
带着花椒去上朝:古杀十九式
马陈兵
天书夜读
与自然和谐:低碳社会的环境观
[日]稻盛和夫 著;陈琳珊 译
天书夜读
5G机会:5G将带来哪些机会,如何把握?
项立刚 著
天书夜读
胆小鬼俱乐部:为什么美国司法部治不了大公司高管
[美]杰西·艾辛格 著;崔松 译