注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络操作系统WindowsWindows 应用程序捆绑核心编程

Windows 应用程序捆绑核心编程

Windows 应用程序捆绑核心编程

定 价:¥49.00

作 者: 张正秋 编著
出版社: 清华大学出版社
丛编项:
标 签: WINDOWS

ISBN: 9787302140887 出版时间: 2006-12-01 包装: 胶版纸
开本: 16开 页数: 359 字数:  

内容简介

  本书所介绍的内容与计算机防护技术相关。本书基于作者在计算机编程方面的多年实践经验,对当今国际上最新的应用程序间的通信、挂钩、捆绑技术作了较为具体、系统的归纳和总结,并给出了大量的实例。本书中很多的技术还没有公开,属于底层热门技术,所给出的很多程序代码可以直接用于商业软件的制作。本书旨在为对通信、挂钩和捆绑等方面编程感兴趣的读者提供参考,适合于中高级软件开发人员使用,还可以作为计算机和信息类专业高年级学生学习的辅助读物。

作者简介

  张正秋,现在中国气象科学研究院工作,获北京大学物理学院理学博士学位,长期从事数值模式研究和计算机软件开发工作。对应用程序间的通信、挂钩和捆绑技术的编程有较丰富的实践经验。

图书目录

第1章  再谈计算机内存访问    1
1.1  引言    1
1.2  内存管理概述    1
1.2.1  虚拟内存    1
1.2.2  CPU工作模式    2
1.2.3  逻辑、线性和物理地址    3
1.2.4  存储器分页管理机制    3
1.2.5  线性地址到物理
地址的转换    4
1.3  虚拟内存访问    5
1.3.1  获取系统信息    5
1.3.2  在应用程序中使用
虚拟内存    6
1.3.3  获取虚存状态    7
1.3.4  确定虚拟地址空间的状态    8
1.3.5  改变内存页面保护属性    9
1.3.6  进行一个进程的内存读写    10
1.4  文件的内存映射    11
1.4.1  内存映射API函数    11
1.4.2  用内存映射在多个应用程序
之间共享数据    13
1.4.3  用内存映射文件读取
大型文件    18
1.5  深入认识指针的真正含义    21
1.5.1  指针的真正本质    21
1.5.2  用指针进行应用程序
之间的通信    22
1.6  本章小结    26
参考文献    27
第2章  再谈PE文件结构    28
2.1  引言    28
2.2  PE文件格式概述    28
2.2.1  PE文件结构布局    28
2.2.2  PE文件内存映射    30
2.2.3  Big-endian和
Little-endian    31
2.2.4  3种不同的地址    31
2.3  PE文件结构    32
2.3.1  MS-DOS头部    32
2.3.2  IMAGE_NT_HEADER
头部    33
2.3.3  IMAGE_SECTION_HEADER
头部    36
2.4  如何获取PE文件中的OEP    36
2.4.1  通过文件读取OEP值    37
2.4.2  通过内存映射
读取OEP值    38
2.4.3  读取OEP值方法的测试    39
2.5  PE文件中的资源    40
2.5.1  查找资源在文件中的
起始位置    40
2.5.2  确定PE文件中的资源    41
2.6  一个修改PE可执行文件
的完整实例    43
2.6.1  如何获得MessageBoxA
代码    43
2.6.2  把MessageBoxA()代码写入
PE文件的完整实例    45
2.7  本章小结    53
参考文献    53
第3章  进程之间通信概述
及初级技术    54
3.1  引言    54
3.2  进程通信概述    55
3.2.1  Windows进程间标准
通信技术的发展    55
3.2.2  应用程序与进程    56
3.2.3  进程之间通信的类型    56
3.3  使用自定义消息通信    57
3.3.1  通过自定义消息实现进程
间通信的方法    57
3.3.2  通过自定义消息实现进程
间通信的实例    58
3.4  使用WM_COPYDATA消息通信    60
3.4.1  通过WM_COPYDATA消息
实现进程间通信的方法    60
3.4.2  通过WM_COPYDATA消息
实现进程间通信的实例    61
3.5  使用内存读写函数和内存
映射文件通信    62
3.5.1  使用内存映射文件
通信的方法    62
3.5.2  使用内存读写函数实现进程
间通信的方法    62
3.5.3  使用内存读写函数实现进程
间通信的实例    63
3.6  使用动态链接库通信    64
3.6.1  DLL概述    64
3.6.2  使用DLL通信的方法    65
3.6.3  使用DLL通信的实例    66
3.7  使用Windows剪贴板通信    67
3.7.1  使用剪贴板实现进程间
通信的方法    68
3.7.2  使用剪贴板实现进程间
通信的实例    68
3.8  使用动态数据交换(DDE)
通信    70
3.8.1  使用DDE技术通信原理    70
3.8.2  如何使用DDEML
编写程序    71
3.8.3  使用DDE通信的实例    72
3.9  本章小结    77
参考文献    77
第4章  使用消息管道、邮槽和
套接字通信    78
4.1  引言    78
4.2  如何用命名管道进行进程间通信    78
4.2.1  命名管道函数    79
4.2.2  命名管道服务端与客户端
之间通信的实现流程    80
4.2.3  命名管道服务端与客户端
之间通信的实例    81
4.3  如何用邮槽进行进程间通信    85
4.3.1  用邮槽进行进程间
通信的步骤    85
4.3.2  邮槽服务器端与客户端之间
通信的实例    86
4.4  如何用Windows套接字进行
进程间通信    90
4.4.1  套接字分类    90
4.4.2  流式套接字编程流程    91
4.4.3  套接字调用基本函数    92
4.4.4  Winsock程序设计    95
4.4.5  一个通用套接字类    96
4.4.6  套接字服务器端与客户端间
通信的实例    101
4.5  本章小结    106
参考文献    106
第5章  使用LPC和RPC通信    107
5.1  引言    107
5.2  接口定义语言(IDL)简介    107
5.3  使用本地过程调用(LPC)
通信    108
5.3.1  使用LPC通信方法介绍    108
5.3.2  使用LPC通信的实例    110
5.4  使用远程过程调用(RPC)
通信    117
5.4.1  RPC运行机制    117
5.4.2  RPC 绑定模式和属性    118
5.4.3  RPC传输(Transport)    118
5.4.4  如何编写RPC应用程序    119
5.4.5  使用RPC通信的实例    120
5.5  本章小结    128
参考文献    128
第6章  使用组件模型通信    129
6.1  引言    129
6.2  COM/DCOM模型概述    129
6.2.1  COM/DCOM的特点    129
6.2.2  COM/DCOM组件
模型分类    130
6.3  使用组件对象模型(COM/DCOM)
通信    131
6.3.1  使用COM/DCOM通信
方法介绍    131
6.3.2  基于DCOM实现远程
会话的实例    136
6.4  本章小结    147
参考文献    147
第7章  进程的创建、控制和隐藏    148
7.1  引言    148
7.2  常见的几种创建进程的方法    148
7.2.1  使用WinExec() 函数    148
7.2.2  使用ShellExecute()和
ShellExecuteEx()函数    149
7.2.3  使用CreateProcess()函数    151
7.2.4  使用OLE激活服务程序    154
7.3  如何获得进程句柄    155
7.3.1  获得一个进程的句柄    155
7.3.2  提升进程权限级别    156
7.4  如何实现当前进程的枚举    158
7.4.1  通过系统快照实现当前
进程的枚举    158
7.4.2  通过psapi.dll提供的API函数
实现当前进程的枚举    160
7.4.3  通过wtsapi32.dll提供的API函
数实现当前进程的枚举    162
7.4.4  通过ntdll.dll提供的API函数
实现当前进程的枚举    163
7.5  如何终止进程    164
7.5.1  如何终止本进程    165
7.5.2  如何终止外部进程    165
7.5.3  终止进程的实例    165
7.6  如何隐藏进程(注入代码)    166
7.6.1  基本原理    166
7.6.2  使用CreateRemoteThread()
隐藏DLL    167
7.6.3  使用CreateRemoteThread()直
接注入API函数代码    173
7.6.4  使用Windows内存映射文件
注入代码    174
7.6.5  使用特洛伊DLL
注入代码    174
7.6.6  使用注册表注入DLL    175
7.6.7  使用程序挂钩的方法
注入代码    175
7.7  本章小结    175
参考文献    176
第8章  应用程序的静态挂钩    177
8.1  引言    177
8.2  使用C/C++语言提取可
执行程序代码    177
8.2.1  在C/C++中使用
内联汇编    177
8.2.2  如何使用C/C++语言提取
可执行程序代码    179
8.3  如何对PE文件加壳    182
8.3.1  PE文件的加壳方法    182
8.3.2  向PE文件中静态注入
代码的完整实例    183
8.4  如何实现文件脱壳    191
8.5  本章小结    192
参考文献    192
第9章  应用程序的动态挂钩    193
9.1  动态挂钩概述    193
9.2  使用Windows钩子函数挂钩    194
9.2.1  Windows钩子函数    194
9.2.2  具体实例    195
9.3  替换原API函数入口挂钩    198
9.3.1  如何替换原API函数入口
实现挂钩    198
9.3.2  通用的替换原API函数
入口挂钩类    199
9.3.3  使用JMP法编写的
挂钩实例    201
9.4  替换IAT中的函数地址
进行挂钩    202
9.4.1  如何替换IAT中的函数
地址实现挂钩    202
9.4.2  通用的替换IAT中的
函数地址挂钩类    203
9.4.3  使用IAT法编写的
挂钩实例    207
9.5  替换Windows消息处理函数
实现挂钩    208
9.5.1  Windows消息处理函数
及其替换    209
9.5.2  替换Windows消息处理
函数实现挂钩的实例    210
9.6  钩子DLL文件的装载    214
9.7  本章小结    216
参考文献    216
第10章  数据的编码和解码实例    217
10.1  引言    217
10.2  游程编码    218
10.2.1  CX游程压缩方法    218
10.2.2  BI_RLE8压缩方法    218
10.2.3  BI_RLE压缩方法    218
10.2.4  缩位压缩方法
(Packbits)    219
10.3  Huffman编码    219
10.3.1  Huffman编码原理    219
10.3.2  Huffman编码过程    220
10.4  算术编码    221
10.4.1  算术编码算法    221
10.4.2  算术解码算法    222
10.5  LZW压缩算法    222
10.5.1  LZW压缩算法原理    223
10.5.2  用VC++实现LZW
压缩算法    225
10.6  Base64编码    236
10.6.1  Base64算法原理    236
10.6.2  Base64算法的实现    238
10.7  本章小结    241
参考文献    242
第11章  可执行文件的捆绑和分离    243
11.1  引言    243
11.2  捆绑方式分类    243
11.2.1  结合式捆绑    243
11.2.2  功能式捆绑    245
11.3  文件捆绑相关技术    245
11.3.1  文件捆绑工具及实现    245
11.3.2  木马程序与捆绑    246
11.3.3  文件自身操作
特点分析    246
11.4  文件属性的获取和伪装    248
11.4.1  文件属性的获取
和更改    248
11.4.2  一个获取文件基
本属性类    249
11.4.3  可执行程序自删除
的实现    251
11.4.4  如何获取其他应用
程序的图标    254
11.4.5  如何改变窗口的图标    255
11.5  被捆绑文件分离后的运行及
自分解文件原理    256
11.5.1  异步执行分解法
的实现    256
11.5.2  同步执行分解法
的实现    256
11.5.3  自动分解法的实现    257
11.6  一个捆绑机(BindHider)软件
的设计    258
11.6.1  BindHider的设计    258
11.6.2  BindHider的源代码    259
11.7  一种制作自分解文件的方法    263
11.7.1  母体程序的制作    264
11.7.2  自分解文件的制作    266
11.8  本章小结    267
参考文献    268
第12章  可执行文件的分割和合并    269
12.1  引言    269
12.2  文件分割方式    269
12.2.1  考虑文件格式的分割    269
12.2.2  设置子文件大小
的分割    270
12.2.3  具有自合并功能
的文件分割    271
12.2.4  依赖文件存放位置
的分割    271
12.2.5  依赖磁盘大小的分割    271
12.3  如何使用多线程    272
12.3.1  线程的创建和终止    272
12.3.2  线程的控制函数    273
12.3.3  线程的通信    273
12.4  文件的简单分割与合并    274
12.4.1  文件的简单分割    274
12.4.2  文件的简单合并    275
12.5  用多线程进行文件的分割
与合并的实例    277
12.5.1  文件的分割与合并
方案设计    277
12.5.2  用多线程进行
文件分割    279
12.5.3  用多线程进行
文件合并    282
12.6  分割后文件自动合并的
方案设计    286
12.6.1  控制程序的制作    286
12.6.2  用于文件自合并的控制
程序的制作    287
12.6.3  一种生成自合并文件的
分割软件制作    289
12.7  本章小结    292
参考文献    292
第13章  多线程下载和断点续传    293
13.1  引言    293
13.2  使用FTP进行多线程下载
和断点续传    293
13.2.1  FTP协议简介    293
13.2.2  FTP的工作模式    295
13.2.3  FTP协议多线程下载和
断点续传的实现    295
13.2.4  实例    306
13.3  使用HTTP进行多线程下载
和断点续传    307
13.3.1  HTTP协议简介    307
13.3.2  HTTP协议的内部
操作过程    308
13.3.3  HTTP协议多线程下载和
断点续传的实现    311
13.3.4  实例    321
13.4  BT下载简介    323
13.4.1  BT下载与一般下载
的区别    323
13.4.2  BT种子    324
13.4.3  BT的下载过程    324
13.5  本章小结    324
参考文献    325
第14章  带附件的电子邮件
发送剖析    326
14.1  引言    326
14.2  电子邮件的发送方法    326
14.3  用WinSock实现SMTP协议    327
14.3.1  SMTP协议    327
14.3.2  SMTP的实现    328
14.4  邮件格式化    335
14.4.1  邮件主体格式化    335
14.4.2  邮件附件格式化    338
14.4.3  邮件格式化    341
14.5  发送电子邮件实例    346
14.6  本章小结    347
参考文献    347
第15章  特洛伊木马与反木马技术    348
15.1  引言    348
15.2  常见的木马种类    349
15.3  木马的载入方式    350
15.4  木马采用的伪装方法    351
15.5  Windows 2K/XP中无法删除
文件的常用解决办法    352
15.6  一种木马病毒的检测技术    353
15.7  本章小结    358
参考文献    359

本目录推荐