Windows PE权威指南:剖析Windows PE文件格式的原理及编程技术

Windows PE权威指南:剖析Windows PE文件格式的原理及编程技术
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2011-10
版次: 1
ISBN: 9787111354185
定价: 89.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 657页
162人买过
  • 内容全面,详尽地剖析了windowspe文件格式的原理及其编程技术,涉及安全领域的各个方面和windows系统的进程管理和底层机制;实战性强,以案例驱动的方式讲解了windowspe文件格式在加密与解密、软件汉化、逆向工程、反病毒等安全领域的应用,不仅每个知识点都配有小案例,而且还有多个完整的商业案例。
    《windowspe权威指南》共分为三大部分:第一部分简单介绍了学习本书需要搭建的工作环境和必须具备的工具,深入分析了pe文件头、导入表、导出表、重定位表、资源表、延迟导入表、线程局部存储、加载配置信息等核心技术的概念、原理及其编程方法,有针对性地讲解了程序设计中的重定位、程序堆栈、动态加载等;第二部分讨论了pe头部的变形技术及静态附加补丁的技术,其中静态附加补丁技术重点讲解了如何在空闲空间、间隙、新节、最后一节四种情况下打补丁和进行编码的方法;第三部分精心编写了多个大型而完整的pe应用案例,以pe补丁作为重要手段,通过对目标pe文件实施不同的补丁内容来实现不同的应用,详细展示了exe捆绑器、软件安装自动化、exe加锁器、exe加密、pe病毒提示器以及pe解毒的实现过程和方法。
    《windowspe权威指南》不仅适合想深入理解windows系统进程管理和运作机制的读者,而且还适合从事加密与解密、软件汉化、逆向工程、反病毒工作的安全工作者。此外,它还适合想全面了解windowspe文件结构和对程序字节码感兴趣的读者。 戚利,资深安全技术专家和软件开发工程师,对Windows PE、Windows内核、计算机网络安全、协议分析和病毒技术有较为深入的研究,实践经验丰富。擅长汇编语言和Java技术,曾自主开发了一个RMI框架。活跃于国内著名的安全论坛看雪学院,乐于与大家分享自己的心得和体会,且有较高的知名度。此外,教学(副教授)经验也十分丰富,对读者的学习习惯和认知方式有一定的认识,这一点在本书的写作方式上得到了体现。 前言
    第一部分pe的原理和基础

    第1章windowspe开发环境
    1.1开发语言masm32
    1.1.1设置开发环境
    1.1.2开发第一个源程序helloworld.asm
    1.1.3运行helloworld.exe
    1.2调试软件ollydbg
    1.2.1调试helloworld.exe
    1.2.2修改exe文件字节码
    1.3十六进制编辑软件flexhex
    1.4破解实例:u盘监控器
    1.5初识pe文件
    1.6小结

    第2章三个小工具的编写
    2.1构造基本窗口程序
    2.1.1构造窗口界面
    2.1.2编写相关的资源文件
    2.1.3通用程序框架的实现
    .2.2pedump的实现
    2.2.1编程思路
    2.2.2pedump编码
    2.2.3pedump代码中的数据结构
    2.2.4运行pedump
    2.3pecomp的实现
    2.3.1编程思路
    2.3.2定义资源文件
    2.3.3pecomp编码
    2.3.4运行pecomp
    2.4peinfo的实现
    2.4.1编程思路
    2.4.2peinfo编码
    2.4.3运行peinfo
    2.5小结

    第3章pe文件头
    3.1pe的数据组织方式
    3.2与pe有关的基本概念
    3.2.1地址
    3.2.2指针
    3.2.3数据目录
    3.2.4节
    3.2.5对齐
    3.2.6unicode字符串
    3.3pe文件结构
    3.3.116位系统下的pe结构
    3.3.232位系统下的pe结构
    3.3.3程序员眼中的pe结构
    3.4pe文件头部解析
    3.4.1dosmz头image_dos_header
    3.4.2pe头标识signature
    3.4.3标准pe头image_file_header
    3.4.4扩展pe头image_optional_header32
    3.4.5pe头image_nt_headers
    3.4.6数据目录项image_data_directory
    3.4.7节表项image_section_header
    3.5数据结构字段详解
    3.5.1pe头image_nt_header的字段
    3.5.2标准pe头iamge_file_header的字段
    3.5.3扩展pe头image_optional_header32的字段
    3.5.4数据目录项image_data_directory的字段
    3.5.5节表项image_section_header的字段
    3.5.6解析helloworld程序的字节码
    3.6pe内存映像
    3.7pe文件头编程
    3.7.1rva与foa的转换
    3.7.2数据定位
    3.7.3标志位操作
    3.7.4pe校验和
    3.8小结

    第4章导入表
    4.1何谓导入表
    4.2导入函数
    4.2.1invoke指令分解
    4.2.2导入函数地址
    4.2.3导入函数宿主
    4.3pe中的导入表
    4.3.1导入表定位
    4.3.2导入表描述符image_import_descriptor
    4.3.3导入表的双桥结构
    4.3.4导入函数地址表
    4.3.5构造调用同一个dll文件的多个函数的导入表
    4.4导入表编程
    4.4.1导入表遍历的思路
    4.4.2编写函数_getimportinfo
    4.4.3运行测试
    4.5绑定导入
    4.5.1绑定导入机制
    4.5.2绑定导入数据定位
    4.5.3绑定导入数据结构
    4.5.4绑定导入实例分析
    4.6手工重组导入表
    4.6.1常用注册表api
    4.6.2构造目标指令
    4.6.3pe头部变化
    4.6.4手工重组
    4.6.5程序实现
    4.6.6思考:关于iat的连贯性
    4.6.7思考:关于导入表的位置
    4.7小结

    第5章导出表
    5.1导出表的作用
    5.1.1分析动态链接库功能
    5.1.2获得导出函数地址
    5.2构造含导出表的pe文件
    5.2.1dll源代码
    5.2.2编写def文件
    5.2.3编译和链接
    5.2.4编写头文件
    5.2.5使用导出函数
    5.3导出表数据结构
    5.3.1导出表定位
    5.3.2导出目录image_export_directory
    5.3.3导出表实例分析
    5.4导出表编程
    5.4.1根据编号查找函数地址
    5.4.2根据名字查找函数地址
    5.4.3遍历导出表
    5.5导出表的应用
    5.5.1导出函数覆盖
    5.5.2导出私有函数
    5.6小结
    第6章栈与重定位表
    6.1栈
    6.1.1栈的应用场合
    6.1.2call调用中的栈实例分析
    6.1.3栈溢出
    6.2代码重定位
    6.2.1重定位的提出
    6.2.2实现重定位的方法
    6.2.3重定位编程
    6.3pe文件头中的重定位表
    6.3.1重定位表定位
    6.3.2重定位表项image_base_relocation
    6.3.3重定位表的结构
    6.3.4遍历重定位表
    6.3.5重定位表实例分析
    6.4小结

    第7章资源表
    7.1资源分类
    7.1.1位图、光标、图标资源
    7.1.2菜单资源
    7.1.3对话框资源
    7.1.4自定义资源
    7.2pe资源表组织
    7.2.1资源表的组织方式
    7.2.2资源表数据定位
    7.2.3资源目录头image_resource_directory
    7.2.4资源目录项image_resource_directory_entry
    7.2.5资源数据项image_resource_data_entry
    7.2.6三级结构中目录项的区别
    7.3资源表遍历
    7.4pe资源深度解析
    7.4.1资源脚本
    7.4.2使用peinfo分析资源表
    7.4.3菜单资源解析
    7.4.4图标资源解析
    7.4.5图标组资源解析
    7.4.6对话框资源解析
    7.5资源表编程
    7.5.1更改图标实验
    7.5.2提取程序图标实例
    7.5.3更改程序图标实例
    7.6小结

    第8章延迟加载导入表
    8.1延迟加载导入的概念及其作用
    8.1.1提高应用程序加载速度
    8.1.2提高应用程序兼容性
    8.1.3提高应用程序可整合性
    8.2pe中的延迟加载导入表
    8.2.1延迟加载导入表数据定位
    8.2.2延迟加载导入描述符image_delay_import_descriptor
    8.2.3延迟加载导入表实例分析
    8.3延迟加载导入机制详解
    8.4延迟加载导入编程
    8.4.1修改资源文件pe.rc
    8.4.2修改源代码pe.asm
    8.5关于延迟加载导入的两个问题
    8.5.1异常处理
    8.5.2dll的卸载
    8.6小结

    第9章线程局部存储
    9.1windows进程与线程
    9.1.1windows体系结构
    9.1.2进程与线程创建
    9.1.3进程环境块peb
    9.1.4线程环境块teb
    9.2什么是线程局部存储
    9.3动态线程局部存储
    9.3.1动态tls实例
    9.3.2获取索引tlsalloc
    9.3.3按索引取值tlsgetvalue
    9.3.4按索引存储tlssetvalue
    9.3.5释放索引tlsfree
    9.4静态线程局部存储
    9.4.1tls定位
    9.4.2tls目录结构image_tls_directory32
    9.4.3静态tls实例分析
    9.4.4tls回调函数
    9.4.5测试静态tls下的线程存储初始化回调函数
    9.5小结

    第10章加载配置信息
    10.1何谓加载配置信息
    10.2windows结构化异常处理
    10.2.1什么是seh
    10.2.2windows异常分类
    10.2.3内核模式下的异常处理
    10.2.4用户模式下的异常处理
    10.2.5windowsseh机制解析
    10.2.6seh编程实例
    10.3pe中的加载配置信息
    10.3.1加载配置信息定位
    10.3.2加载配置目录image_load_config_directory
    10.3.3加载配置信息实例分析
    10.4加载配置编程
    10.4.1程序源代码分析
    10.4.2为pe添加加载配置信息
    10.4.3运行测试
    10.4.4注册多个异常处理函数示例
    10.5小结

    第11章动态加载技术
    11.1windows虚拟地址空间分配
    11.1.1用户态低2gb空间分配
    11.1.2核心态高2gb空间分配
    11.1.3helloworld进程空间分析
    11.2windows动态库技术
    11.2.1dll静态调用
    11.2.2dll动态调用
    11.2.3导出函数起始地址实例
    11.3在编程中使用动态加载技术
    11.3.1获取kernel32.dll基地址
    11.3.2获取getprocaddress地址
    11.3.3在代码中使用获取的函数地址编程
    11.3.4动态api技术编程实例
    11.4小结
    第二部分pe进阶

    第12章pe变形技术
    12.1变形技术的分类
    12.1.1结构重叠技术
    12.1.2空间调整技术
    12.1.3数据转移技术
    12.1.4数据压缩技术
    12.2变形技术可用的空间
    12.2.1文件头部未用的字段
    12.2.2大小不固定的数据块
    12.2.3因对齐产生的补足空间
    12.3pe文件变形原则
    12.3.1关于数据目录表
    12.3.2关于节表
    12.3.3关于导入表
    12.3.4关于程序数据
    12.3.5关于对齐
    12.3.6几个关注的字段
    12.4将pe变小的实例helloworldpe
    12.4.1源程序helloworld的字节码(2560字节)
    12.4.2目标pe文件的字节码(432字节)
    12.5打造目标pe的步骤
    12.5.1对文件头的处理
    12.5.2对代码段的处理
    12.5.3对导入表的处理
    12.5.4对部分字段值的修正
    12.5.5修改后的文件结构
    12.5.6修改后的文件分析
    12.5.7目标文件更小的实例分析
    12.6小结

    第13章pe补丁技术
    13.1动态补丁
    13.1.1进程间的通信机制
    13.1.2读写进程内存
    13.1.3目标进程枚举
    13.1.4执行远程线程
    13.2静态补丁
    13.2.1整体替换pe文件
    13.2.2整体替换dll文件
    13.2.3部分修改pe文件
    13.3嵌入补丁程序
    13.3.1嵌入补丁程序框架
    13.3.2嵌入补丁程序编写规则
    13.3.3嵌入补丁字节码实例分析
    13.4万能补丁码
    13.4.1原理
    13.4.2源代码
    13.4.3字节码
    13.4.4运行测试
    13.5小结

    第14章在pe空闲空间中插入程序
    14.1什么是pe空闲空间
    14.1.1pe文件中的可用空间
    14.1.2获取pe文件可用空间的代码
    14.1.3获取pe文件可用空间的测试
    14.2添加注册表启动项的补丁程序实例
    14.2.1补丁程序的源代码
    14.2.2补丁程序的字节码
    14.2.3目标pe的字节码
    14.3手工打造目标pe的步骤
    14.3.1基本思路
    14.3.2对代码段的处理
    14.3.3对导入表的处理
    14.3.4对数据段的处理
    14.3.5修改前后pe文件对比
    14.4开发补丁工具
    14.4.1编程思路
    14.4.2数据结构分析
    14.4.3运行测试
    14.4.4适应性测试实例分析
    14.5小结

    第15章在pe间隙中插入程序
    15.1什么是pe间隙
    15.1.1构造间隙一
    15.1.2间隙一与参数
    15.2插入helloworld的补丁程序实例
    15.2.1补丁程序字节码
    15.2.2目标pe结构
    15.3开发补丁工具
    15.3.1编程思路
    15.3.2数据结构分析
    15.3.3主要代码
    15.3.4运行测试
    15.4存在绑定导入数据的pe补丁程序实例
    15.4.1改进补丁程序
    15.4.2修正补丁工具
    15.4.3为记事本程序打补丁
    15.5小结

    第16章在pe新增节中插入程序
    16.1新增pe节的方法
    16.2在本地建立子目录的补丁程序实例
    16.2.1补丁程序源代码
    16.2.2目标pe结构
    16.3开发补丁工具
    16.3.1编程思路
    16.3.2为变量赋值
    16.3.3构造新文件数据
    16.3.4修正字段参数
    16.3.5主要代码
    16.3.6运行测试
    16.4小结

    第17章在pe最后一节中插入程序
    17.1网络文件下载器补丁程序实例
    17.1.1用到的api函数
    17.1.2补丁功能的预演代码
    17.1.3补丁程序的源代码
    17.1.4目标pe结构
    17.2开发补丁工具
    17.2.1编程思路
    17.2.2主要代码
    17.2.3运行测试
    17.3小结
    第三部分pe的应用案例

    第18章exe捆绑器
    18.1基本思路
    18.2exe执行调度机制
    18.2.1相关api函数
    18.2.2控制进程同步运行实例分析
    18.3字节码转换工具hex2db
    18.3.1hex2db源代码
    18.3.2运行测试
    18.4执行调度程序_host.exe
    18.4.1主要代码
    18.4.2数据结构分析
    18.5宿主程序host.exe
    18.5.1宿主程序的功能
    18.5.2宿主程序的状态
    18.5.3遍历文件
    18.5.4释放文件
    18.5.5宿主程序主函数
    18.6exe捆绑器bind.exe
    18.6.1绑定列表定位
    18.6.2捆绑步骤及主要代码
    18.6.3测试运行
    18.7小结

    第19章软件安装自动化
    19.1基本思路
    19.2补丁程序patch.exe
    19.2.1相关api函数
    19.2.2执行线程函数
    19.2.3简单测试
    19.3消息发送器_message.exe
    19.3.1窗口枚举回调函数
    19.3.2调用窗口枚举函数
    19.3.3向指定窗口发送消息
    19.3.4消息发送器源代码
    19.3.5测试运行
    19.4消息发送器生成工厂messagefactory.exe
    19.4.1消息发送函数
    19.4.2键盘虚拟码
    19.4.3改进的消息发送器实例分析
    19.4.4消息发送器生成工厂代码结构
    19.4.5代码与数据的定位
    19.4.6提取代码字节码
    19.5软件安装自动化主程序autosetup.exe
    19.5.1主要代码
    19.5.2测试运行
    19.6小结

    第20章exe加锁器
    20.1基本思路
    20.2免资源文件的窗口程序nores.asm
    20.2.1窗口创建函数createwindowex
    20.2.2创建用户登录窗口的控件
    20.2.3窗口程序源代码
    20.3免重定位的窗口程序login.asm
    20.4补丁程序patch.asm
    20.4.1获取导入库及函数
    20.4.2按照补丁框架修改login.asm
    20.4.3补丁程序主要代码
    20.5附加补丁运行
    20.6小结

    第21章exe加密
    21.1基本思路
    21.2加密算法
    21.2.1加密算法的分类
    21.2.2自定义可逆加密算法实例
    21.2.3构造加密基表
    21.2.4利用基表测试加密数据
    21.3开发补丁工具
    21.3.1转移数据目录
    21.3.2传递程序参数
    21.3.3加密节区内容
    21.4处理补丁程序
    21.4.1还原数据目录表
    21.4.2解密节区内容
    21.4.3加载目标dll
    21.4.4修正目标iat
    21.5小结

    第22章pe病毒提示器
    22.1基本思路
    22.1.1志愿者的选择条件
    22.1.2判断病毒感染的原理
    22.2手工打造pe病毒提示器
    22.2.1编程思路
    22.2.2分析目标文件的导入表
    22.2.3补丁程序的源代码
    22.2.4补丁程序的字节码
    22.2.5修正函数地址
    22.2.6测试运行
    22.3补丁版的pe病毒提示器
    22.3.1将提示器写入启动项
    22.3.2检测特定位置校验和
    22.3.3测试运行
    22.4小结

    第23章破解pe病毒
    23.1病毒保护技术
    23.1.1花指令
    23.1.2反跟踪技术
    23.1.3反调试技术
    23.1.4自修改技术
    23.1.5注册表项保护技术
    23.1.6进程保护技术
    23.2pe病毒补丁程序解析
    23.2.1病毒特征
    23.2.2补丁程序的源代码分析
    23.2.3病毒传播测试
    23.2.4感染前后pe结构对比
    23.3解毒代码的编写
    23.3.1基本思路
    23.3.2计算病毒代码大小
    23.3.3获取原始入口地址
    23.3.4修正pe头部的其他参数
    23.3.5主要代码
    23.3.6运行测试
    23.4小结
    后记
  • 内容简介:
    内容全面,详尽地剖析了windowspe文件格式的原理及其编程技术,涉及安全领域的各个方面和windows系统的进程管理和底层机制;实战性强,以案例驱动的方式讲解了windowspe文件格式在加密与解密、软件汉化、逆向工程、反病毒等安全领域的应用,不仅每个知识点都配有小案例,而且还有多个完整的商业案例。
    《windowspe权威指南》共分为三大部分:第一部分简单介绍了学习本书需要搭建的工作环境和必须具备的工具,深入分析了pe文件头、导入表、导出表、重定位表、资源表、延迟导入表、线程局部存储、加载配置信息等核心技术的概念、原理及其编程方法,有针对性地讲解了程序设计中的重定位、程序堆栈、动态加载等;第二部分讨论了pe头部的变形技术及静态附加补丁的技术,其中静态附加补丁技术重点讲解了如何在空闲空间、间隙、新节、最后一节四种情况下打补丁和进行编码的方法;第三部分精心编写了多个大型而完整的pe应用案例,以pe补丁作为重要手段,通过对目标pe文件实施不同的补丁内容来实现不同的应用,详细展示了exe捆绑器、软件安装自动化、exe加锁器、exe加密、pe病毒提示器以及pe解毒的实现过程和方法。
    《windowspe权威指南》不仅适合想深入理解windows系统进程管理和运作机制的读者,而且还适合从事加密与解密、软件汉化、逆向工程、反病毒工作的安全工作者。此外,它还适合想全面了解windowspe文件结构和对程序字节码感兴趣的读者。
  • 作者简介:
    戚利,资深安全技术专家和软件开发工程师,对Windows PE、Windows内核、计算机网络安全、协议分析和病毒技术有较为深入的研究,实践经验丰富。擅长汇编语言和Java技术,曾自主开发了一个RMI框架。活跃于国内著名的安全论坛看雪学院,乐于与大家分享自己的心得和体会,且有较高的知名度。此外,教学(副教授)经验也十分丰富,对读者的学习习惯和认知方式有一定的认识,这一点在本书的写作方式上得到了体现。
  • 目录:
    前言
    第一部分pe的原理和基础

    第1章windowspe开发环境
    1.1开发语言masm32
    1.1.1设置开发环境
    1.1.2开发第一个源程序helloworld.asm
    1.1.3运行helloworld.exe
    1.2调试软件ollydbg
    1.2.1调试helloworld.exe
    1.2.2修改exe文件字节码
    1.3十六进制编辑软件flexhex
    1.4破解实例:u盘监控器
    1.5初识pe文件
    1.6小结

    第2章三个小工具的编写
    2.1构造基本窗口程序
    2.1.1构造窗口界面
    2.1.2编写相关的资源文件
    2.1.3通用程序框架的实现
    .2.2pedump的实现
    2.2.1编程思路
    2.2.2pedump编码
    2.2.3pedump代码中的数据结构
    2.2.4运行pedump
    2.3pecomp的实现
    2.3.1编程思路
    2.3.2定义资源文件
    2.3.3pecomp编码
    2.3.4运行pecomp
    2.4peinfo的实现
    2.4.1编程思路
    2.4.2peinfo编码
    2.4.3运行peinfo
    2.5小结

    第3章pe文件头
    3.1pe的数据组织方式
    3.2与pe有关的基本概念
    3.2.1地址
    3.2.2指针
    3.2.3数据目录
    3.2.4节
    3.2.5对齐
    3.2.6unicode字符串
    3.3pe文件结构
    3.3.116位系统下的pe结构
    3.3.232位系统下的pe结构
    3.3.3程序员眼中的pe结构
    3.4pe文件头部解析
    3.4.1dosmz头image_dos_header
    3.4.2pe头标识signature
    3.4.3标准pe头image_file_header
    3.4.4扩展pe头image_optional_header32
    3.4.5pe头image_nt_headers
    3.4.6数据目录项image_data_directory
    3.4.7节表项image_section_header
    3.5数据结构字段详解
    3.5.1pe头image_nt_header的字段
    3.5.2标准pe头iamge_file_header的字段
    3.5.3扩展pe头image_optional_header32的字段
    3.5.4数据目录项image_data_directory的字段
    3.5.5节表项image_section_header的字段
    3.5.6解析helloworld程序的字节码
    3.6pe内存映像
    3.7pe文件头编程
    3.7.1rva与foa的转换
    3.7.2数据定位
    3.7.3标志位操作
    3.7.4pe校验和
    3.8小结

    第4章导入表
    4.1何谓导入表
    4.2导入函数
    4.2.1invoke指令分解
    4.2.2导入函数地址
    4.2.3导入函数宿主
    4.3pe中的导入表
    4.3.1导入表定位
    4.3.2导入表描述符image_import_descriptor
    4.3.3导入表的双桥结构
    4.3.4导入函数地址表
    4.3.5构造调用同一个dll文件的多个函数的导入表
    4.4导入表编程
    4.4.1导入表遍历的思路
    4.4.2编写函数_getimportinfo
    4.4.3运行测试
    4.5绑定导入
    4.5.1绑定导入机制
    4.5.2绑定导入数据定位
    4.5.3绑定导入数据结构
    4.5.4绑定导入实例分析
    4.6手工重组导入表
    4.6.1常用注册表api
    4.6.2构造目标指令
    4.6.3pe头部变化
    4.6.4手工重组
    4.6.5程序实现
    4.6.6思考:关于iat的连贯性
    4.6.7思考:关于导入表的位置
    4.7小结

    第5章导出表
    5.1导出表的作用
    5.1.1分析动态链接库功能
    5.1.2获得导出函数地址
    5.2构造含导出表的pe文件
    5.2.1dll源代码
    5.2.2编写def文件
    5.2.3编译和链接
    5.2.4编写头文件
    5.2.5使用导出函数
    5.3导出表数据结构
    5.3.1导出表定位
    5.3.2导出目录image_export_directory
    5.3.3导出表实例分析
    5.4导出表编程
    5.4.1根据编号查找函数地址
    5.4.2根据名字查找函数地址
    5.4.3遍历导出表
    5.5导出表的应用
    5.5.1导出函数覆盖
    5.5.2导出私有函数
    5.6小结
    第6章栈与重定位表
    6.1栈
    6.1.1栈的应用场合
    6.1.2call调用中的栈实例分析
    6.1.3栈溢出
    6.2代码重定位
    6.2.1重定位的提出
    6.2.2实现重定位的方法
    6.2.3重定位编程
    6.3pe文件头中的重定位表
    6.3.1重定位表定位
    6.3.2重定位表项image_base_relocation
    6.3.3重定位表的结构
    6.3.4遍历重定位表
    6.3.5重定位表实例分析
    6.4小结

    第7章资源表
    7.1资源分类
    7.1.1位图、光标、图标资源
    7.1.2菜单资源
    7.1.3对话框资源
    7.1.4自定义资源
    7.2pe资源表组织
    7.2.1资源表的组织方式
    7.2.2资源表数据定位
    7.2.3资源目录头image_resource_directory
    7.2.4资源目录项image_resource_directory_entry
    7.2.5资源数据项image_resource_data_entry
    7.2.6三级结构中目录项的区别
    7.3资源表遍历
    7.4pe资源深度解析
    7.4.1资源脚本
    7.4.2使用peinfo分析资源表
    7.4.3菜单资源解析
    7.4.4图标资源解析
    7.4.5图标组资源解析
    7.4.6对话框资源解析
    7.5资源表编程
    7.5.1更改图标实验
    7.5.2提取程序图标实例
    7.5.3更改程序图标实例
    7.6小结

    第8章延迟加载导入表
    8.1延迟加载导入的概念及其作用
    8.1.1提高应用程序加载速度
    8.1.2提高应用程序兼容性
    8.1.3提高应用程序可整合性
    8.2pe中的延迟加载导入表
    8.2.1延迟加载导入表数据定位
    8.2.2延迟加载导入描述符image_delay_import_descriptor
    8.2.3延迟加载导入表实例分析
    8.3延迟加载导入机制详解
    8.4延迟加载导入编程
    8.4.1修改资源文件pe.rc
    8.4.2修改源代码pe.asm
    8.5关于延迟加载导入的两个问题
    8.5.1异常处理
    8.5.2dll的卸载
    8.6小结

    第9章线程局部存储
    9.1windows进程与线程
    9.1.1windows体系结构
    9.1.2进程与线程创建
    9.1.3进程环境块peb
    9.1.4线程环境块teb
    9.2什么是线程局部存储
    9.3动态线程局部存储
    9.3.1动态tls实例
    9.3.2获取索引tlsalloc
    9.3.3按索引取值tlsgetvalue
    9.3.4按索引存储tlssetvalue
    9.3.5释放索引tlsfree
    9.4静态线程局部存储
    9.4.1tls定位
    9.4.2tls目录结构image_tls_directory32
    9.4.3静态tls实例分析
    9.4.4tls回调函数
    9.4.5测试静态tls下的线程存储初始化回调函数
    9.5小结

    第10章加载配置信息
    10.1何谓加载配置信息
    10.2windows结构化异常处理
    10.2.1什么是seh
    10.2.2windows异常分类
    10.2.3内核模式下的异常处理
    10.2.4用户模式下的异常处理
    10.2.5windowsseh机制解析
    10.2.6seh编程实例
    10.3pe中的加载配置信息
    10.3.1加载配置信息定位
    10.3.2加载配置目录image_load_config_directory
    10.3.3加载配置信息实例分析
    10.4加载配置编程
    10.4.1程序源代码分析
    10.4.2为pe添加加载配置信息
    10.4.3运行测试
    10.4.4注册多个异常处理函数示例
    10.5小结

    第11章动态加载技术
    11.1windows虚拟地址空间分配
    11.1.1用户态低2gb空间分配
    11.1.2核心态高2gb空间分配
    11.1.3helloworld进程空间分析
    11.2windows动态库技术
    11.2.1dll静态调用
    11.2.2dll动态调用
    11.2.3导出函数起始地址实例
    11.3在编程中使用动态加载技术
    11.3.1获取kernel32.dll基地址
    11.3.2获取getprocaddress地址
    11.3.3在代码中使用获取的函数地址编程
    11.3.4动态api技术编程实例
    11.4小结
    第二部分pe进阶

    第12章pe变形技术
    12.1变形技术的分类
    12.1.1结构重叠技术
    12.1.2空间调整技术
    12.1.3数据转移技术
    12.1.4数据压缩技术
    12.2变形技术可用的空间
    12.2.1文件头部未用的字段
    12.2.2大小不固定的数据块
    12.2.3因对齐产生的补足空间
    12.3pe文件变形原则
    12.3.1关于数据目录表
    12.3.2关于节表
    12.3.3关于导入表
    12.3.4关于程序数据
    12.3.5关于对齐
    12.3.6几个关注的字段
    12.4将pe变小的实例helloworldpe
    12.4.1源程序helloworld的字节码(2560字节)
    12.4.2目标pe文件的字节码(432字节)
    12.5打造目标pe的步骤
    12.5.1对文件头的处理
    12.5.2对代码段的处理
    12.5.3对导入表的处理
    12.5.4对部分字段值的修正
    12.5.5修改后的文件结构
    12.5.6修改后的文件分析
    12.5.7目标文件更小的实例分析
    12.6小结

    第13章pe补丁技术
    13.1动态补丁
    13.1.1进程间的通信机制
    13.1.2读写进程内存
    13.1.3目标进程枚举
    13.1.4执行远程线程
    13.2静态补丁
    13.2.1整体替换pe文件
    13.2.2整体替换dll文件
    13.2.3部分修改pe文件
    13.3嵌入补丁程序
    13.3.1嵌入补丁程序框架
    13.3.2嵌入补丁程序编写规则
    13.3.3嵌入补丁字节码实例分析
    13.4万能补丁码
    13.4.1原理
    13.4.2源代码
    13.4.3字节码
    13.4.4运行测试
    13.5小结

    第14章在pe空闲空间中插入程序
    14.1什么是pe空闲空间
    14.1.1pe文件中的可用空间
    14.1.2获取pe文件可用空间的代码
    14.1.3获取pe文件可用空间的测试
    14.2添加注册表启动项的补丁程序实例
    14.2.1补丁程序的源代码
    14.2.2补丁程序的字节码
    14.2.3目标pe的字节码
    14.3手工打造目标pe的步骤
    14.3.1基本思路
    14.3.2对代码段的处理
    14.3.3对导入表的处理
    14.3.4对数据段的处理
    14.3.5修改前后pe文件对比
    14.4开发补丁工具
    14.4.1编程思路
    14.4.2数据结构分析
    14.4.3运行测试
    14.4.4适应性测试实例分析
    14.5小结

    第15章在pe间隙中插入程序
    15.1什么是pe间隙
    15.1.1构造间隙一
    15.1.2间隙一与参数
    15.2插入helloworld的补丁程序实例
    15.2.1补丁程序字节码
    15.2.2目标pe结构
    15.3开发补丁工具
    15.3.1编程思路
    15.3.2数据结构分析
    15.3.3主要代码
    15.3.4运行测试
    15.4存在绑定导入数据的pe补丁程序实例
    15.4.1改进补丁程序
    15.4.2修正补丁工具
    15.4.3为记事本程序打补丁
    15.5小结

    第16章在pe新增节中插入程序
    16.1新增pe节的方法
    16.2在本地建立子目录的补丁程序实例
    16.2.1补丁程序源代码
    16.2.2目标pe结构
    16.3开发补丁工具
    16.3.1编程思路
    16.3.2为变量赋值
    16.3.3构造新文件数据
    16.3.4修正字段参数
    16.3.5主要代码
    16.3.6运行测试
    16.4小结

    第17章在pe最后一节中插入程序
    17.1网络文件下载器补丁程序实例
    17.1.1用到的api函数
    17.1.2补丁功能的预演代码
    17.1.3补丁程序的源代码
    17.1.4目标pe结构
    17.2开发补丁工具
    17.2.1编程思路
    17.2.2主要代码
    17.2.3运行测试
    17.3小结
    第三部分pe的应用案例

    第18章exe捆绑器
    18.1基本思路
    18.2exe执行调度机制
    18.2.1相关api函数
    18.2.2控制进程同步运行实例分析
    18.3字节码转换工具hex2db
    18.3.1hex2db源代码
    18.3.2运行测试
    18.4执行调度程序_host.exe
    18.4.1主要代码
    18.4.2数据结构分析
    18.5宿主程序host.exe
    18.5.1宿主程序的功能
    18.5.2宿主程序的状态
    18.5.3遍历文件
    18.5.4释放文件
    18.5.5宿主程序主函数
    18.6exe捆绑器bind.exe
    18.6.1绑定列表定位
    18.6.2捆绑步骤及主要代码
    18.6.3测试运行
    18.7小结

    第19章软件安装自动化
    19.1基本思路
    19.2补丁程序patch.exe
    19.2.1相关api函数
    19.2.2执行线程函数
    19.2.3简单测试
    19.3消息发送器_message.exe
    19.3.1窗口枚举回调函数
    19.3.2调用窗口枚举函数
    19.3.3向指定窗口发送消息
    19.3.4消息发送器源代码
    19.3.5测试运行
    19.4消息发送器生成工厂messagefactory.exe
    19.4.1消息发送函数
    19.4.2键盘虚拟码
    19.4.3改进的消息发送器实例分析
    19.4.4消息发送器生成工厂代码结构
    19.4.5代码与数据的定位
    19.4.6提取代码字节码
    19.5软件安装自动化主程序autosetup.exe
    19.5.1主要代码
    19.5.2测试运行
    19.6小结

    第20章exe加锁器
    20.1基本思路
    20.2免资源文件的窗口程序nores.asm
    20.2.1窗口创建函数createwindowex
    20.2.2创建用户登录窗口的控件
    20.2.3窗口程序源代码
    20.3免重定位的窗口程序login.asm
    20.4补丁程序patch.asm
    20.4.1获取导入库及函数
    20.4.2按照补丁框架修改login.asm
    20.4.3补丁程序主要代码
    20.5附加补丁运行
    20.6小结

    第21章exe加密
    21.1基本思路
    21.2加密算法
    21.2.1加密算法的分类
    21.2.2自定义可逆加密算法实例
    21.2.3构造加密基表
    21.2.4利用基表测试加密数据
    21.3开发补丁工具
    21.3.1转移数据目录
    21.3.2传递程序参数
    21.3.3加密节区内容
    21.4处理补丁程序
    21.4.1还原数据目录表
    21.4.2解密节区内容
    21.4.3加载目标dll
    21.4.4修正目标iat
    21.5小结

    第22章pe病毒提示器
    22.1基本思路
    22.1.1志愿者的选择条件
    22.1.2判断病毒感染的原理
    22.2手工打造pe病毒提示器
    22.2.1编程思路
    22.2.2分析目标文件的导入表
    22.2.3补丁程序的源代码
    22.2.4补丁程序的字节码
    22.2.5修正函数地址
    22.2.6测试运行
    22.3补丁版的pe病毒提示器
    22.3.1将提示器写入启动项
    22.3.2检测特定位置校验和
    22.3.3测试运行
    22.4小结

    第23章破解pe病毒
    23.1病毒保护技术
    23.1.1花指令
    23.1.2反跟踪技术
    23.1.3反调试技术
    23.1.4自修改技术
    23.1.5注册表项保护技术
    23.1.6进程保护技术
    23.2pe病毒补丁程序解析
    23.2.1病毒特征
    23.2.2补丁程序的源代码分析
    23.2.3病毒传播测试
    23.2.4感染前后pe结构对比
    23.3解毒代码的编写
    23.3.1基本思路
    23.3.2计算病毒代码大小
    23.3.3获取原始入口地址
    23.3.4修正pe头部的其他参数
    23.3.5主要代码
    23.3.6运行测试
    23.4小结
    后记
查看详情