当前位置:首页 > 工业技术
软件加密技术内幕
软件加密技术内幕

软件加密技术内幕PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:看雪学院编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2004
  • ISBN:7121000989
  • 页数:405 页
图书介绍:本书结合实例,重点讲述了软件加密技术及其实施方案,以帮助程序员更好地保护自己的软件。书中介绍了相关系统底层知识,例如,PE格式深入分析、调试API应用、未公开技术SEH的深入研究等,从而使读者在了解这些底层知识后,可以应用到自己的软件保护方案如各种反跟踪技术的实现中。本书还首度公开了如何编写加壳软件,以及如何将壳与程序融合在一起等一些热门技术。本书由密界一流高手共同打造,读者将从本书中获得许多极具商业价值的内幕技术,是专业开发人员不可多得的一本好书。
《软件加密技术内幕》目录

目 录 1

第1章PE文件格式的深入分析 1

1.1 PE文件格式纵览 1

1.1.1 区块 3

1.1.2相对虚拟地址 5

1.1.3数据目录表 6

1.1.4输入函数 7

1.2 PE文件结构 10

1.2.1 MS-DOS头部 10

1.2.2 IMAGE_NT_HEADERS头部 10

1.2.3 区块表 14

1.2.4各种区块的描述 16

1.2.5输出表 17

1.2.6输出转向 20

1.2.7输入表 20

1.2.8绑定输入 22

1.2.9延迟装入数据 24

1.2.10资源 25

1.2.11基址重定位 27

1.2.12调试目录 29

1.2.13.NET头部 30

1.2.14 TLS初始化 31

1.2.15程序异常数据 32

第2章PE分析工具编写 33

2.1文件格式检查 34

2.2 FileHeader和OptionalHeader内容的读取 36

2.3得到数据目录表信息 40

2.4得到区块表信息 43

2.5得到输出表信息 47

2.6得到输入表信息 52

3.1 Win32调试API原理 60

3.1.1调试相关函数简要说明 60

第3章Win32调试API 60

3.1.2调试事件 64

3.1.3如何在调试时创建并跟踪一个进程 67

3.1.4调试循环体 68

3.1.5如何处理调试事件 69

3.1.6线程环境详解 71

3.1.7如何在另一个进程中注入代码 75

3.2利用调试API编写脱壳机 77

3.2.1 tElock 0.98脱壳简介 77

3.2.2脱壳机的编写 78

3.3利用调试API制作内存补丁 88

3.3.1跨进程内存存取机制 90

3.3.2 Debug API机制 92

第4章Windows下的异常处理 105

4.1基本概念 106

4.1.1 Windows下的软件异常 106

4.1.2异常处理的基本过程 109

4.1.3 SEH的分类 110

4.1.4未公开的可靠吗 110

4.2 SEH相关数据结构 111

4.2.1TIB结构 111

4.2.2 EXCEPTION_REGISTRATION结构 112

4.2.3 EXCEPTION_POINTERS,EXCEPTION_RECORD,CONTEXT结构 112

4.3异常处理程序原理及设计 115

4.3.1相关API 116

4.3.2顶层异常处理 117

4.3.3线程异常处理 121

4.3.4异常处理的堆栈展开 132

4.3.5异常处理程序设计中的注意事项 142

4.4 SEH的简单应用 143

4.4.1 Windows 9x下利用SEH进入RingO 143

4.4.2利用SEH实现对自身的单步自跟踪 145

4.4.3其他应用 147

4.5系统背后的秘密 148

4.6 Visual C++如何封装系统提供的SEH机制 148

4.6.1扩展的EXCEPTION_REGISTRATION级相关结构 149

4.6.2数据结构组织 150

4.7 Windows XP下的向量化异常处理 157

第5章反跟踪技术 161

5.1反调试技术 161

5.1.1句柄检测 161

5.1.2 SoftICE后门指令 163

5.1.3 int68子类型 164

5.1.4 ICECream子类型 165

5.1.5判断NTICE服务是否运行 166

5.1.6 INT 1检测 167

5.1.8 INT41子类型 169

5.1.7利用UnhandledExceptionFilter检测 169

5.2断点检测技术 170

5.2.1检测函数首地址 170

5.2.2利用SEH防范BPX断点 172

5.2.3利用SEH防范BPM断点 178

5.3反加载技术(Anti-Loader) 183

5.3.1利用TEB检测 183

5.3.2利用IsDebuggerPresent函数检测 186

5.3.3检查父进程 188

5.4反监视技术(Anti-Monitor) 189

5.4.2句柄检测 190

5.4.1窗口方法检测 190

5.5反静态分析技术 191

5.5.1扰乱汇编代码 191

5.5.2花指令 193

5.5.3 SMC技术实现 194

5.5.4信息隐藏 201

5.6 反DUMP技术(Anti-Dump) 204

5.7文件完整性检验 207

5.7.1磁盘文件校验实现 207

5.7.2校验和 211

5.7.3内存映像校验 212

5.8代码与数据结合技术 216

5.8.1准备工作 217

5.8.2加密算法选用 219

5.8.3手动加密代码 220

5.8.4使.text区块可写 221

5.8.5重定位 223

5.9软件保护的若干忠告 223

第6章加壳软件编写 225

6.1外壳编写基础 225

6.1.1判断文件是否是PE-EXE文件 226

6.1.2文件基本数据的读入 229

6.1.3额外数据保留 230

6.1.4重定位数据的去除 231

6.1.5文件的压缩 233

6.1.6资源区块的处理 237

6.1.7区块的融合 244

6.1.8输入表的处理 246

6.1.9外壳部分的编写 251

6.1.10将外壳部分添加至原始程序 259

6.1.11小结 266

6.2加壳程序综合运用的实例 267

6.2.1程序简介 267

6.2.2加壳子程序(WJQ_ShellBegin()) 268

6.2.3 PE外壳程序 275

6.2.4加进Anti技术 285

6.2.5通过外壳修改被加壳PE 287

6.2.6 Visual C++调用汇编子程序 289

第7章如何让壳与程序融为一体 291

7.1欺骗查壳工具 291

7.1.1 FileInfo是如何查壳的 291

7.1.2欺骗FileInfo 293

7.2判断自己是否被加壳 297

7.2.1判断文件尺寸 297

7.2.2使用同步对象检查标记 298

7.2.3使用原子(Atom)检查标记 304

7.2.4使用存储映像文件检查标记 308

7.2.5使用线程优先权检查标记 311

7.2.6使用外部文件检查标记 313

7.2.7使用注册表检查标记 318

7.2.8注入一个定时器 318

7.2.9外部检测(使用DLL) 322

7.2.10 Hook相关的API(防止Loader和调试API) 322

7.3使用SDK把程序和壳融为一体 322

7.3.1 SDK加密的标记 322

7.3.2壳程序检测加密标志 324

7.3.3开始加密相关的数据 325

7.3.4输出函数的声明 327

7.3.5输出函数的执行代码定位 328

7.3.6为输出函数得到壳中加密函数做准备 329

7.3.7程序中使用加密和解密函数 330

7.3.8构造壳中的加密和解密函数 330

7.3.9壳寻找程序的输出函数位置 332

7.3.10 “毁尸灭迹”,擦除输出函数 333

7.3.11壳中分配临时的内存存放加密和解密函数 333

7.3.12壳中执行程序输出函数传递参数 334

8.1 P-code传奇 336

第8章Visual Basic 6逆向工程 336

8.2 Visual Basic编译奥秘 337

8.3 VisualBasic与COM 338

8.4 Visual Basic可执行程序结构研究 343

8.5 Visual Basic程序事件解读 353

8.6 Visual Basic程序图形界面解读 356

8.7 Visual Basic执行代码研究 361

8.7.1 Visual Basic函数的解读 361

8.7.2 Visual Basic函数调用约定 363

8.7.3执行代码中对控件属性的操作 364

8.8 P-code代码 369

8.8.1理解P-code代码指令 370

8.8.2 P-code程序调用约定 371

8.8.3调试时中断P-code程序的几种方法 371

8.8.4 WKTVB Debugger实现原理 372

8.8.5 VisualBasic6P-codeCrackme分析实例 378

8.9 Visual Basic程序保护篇 383

8.9.1 Anti-Loader技术 383

8.9.2 Visual Basic“自锁”功能实现 386

8.10相关工具点评 386

附录A在 VisualC++中使用内联汇编 388

附录B在 Visual Basic中使用汇编 403

参考文献 405

返回顶部