软件加密技术内幕
 
软件加密技术内幕(到货)

作者:看雪学院

估价:45.00

出版时间:7月出版
                    
 
内容简介:

  本书主要讲解了如何对软件进行加密保护,以帮助程序员更好地保护自己的软件。书中介绍了相关系统底层知识,例如,PE格式深入分析、调试API应用、未公开技术SEH的深入研究等,从而使读者在了解这些底层知识后,可以应用到自己的软件保护方案如各种反跟踪技术的实现中。本书还首度公开了如何编写加壳软件,以及如何将壳与程序融合在一起等一些热门技术。
本书由密界一流高手共同打造,读者将从本书中获得许多极具商业价值的内幕技术,是专业开发人员不可多得的一本好书。
 
前言:

  作为一名软件开发人员,你是否因看到自己的软件被他人破解而痛恨?你是否因面对着猖獗的盗版而无奈?你是否正在寻找一套行之有效的软件保护方案? 如果你对上述问题的答案都是肯定的,那么本书对你而言实在是再合适不过的了。解决上述问题可以从提高用户版权意识和加强软件保护两方面入手。从目前情况来说,对软件进行加密保护是最直接有效的。但由于软件保护技术所带来的商业利益,掌握这方面技术的个人和公司都很保守,造成目前软件加密保护方面的资料比较匮乏。因此许多软件开发人员不得不自行摸索,导致在重复劳动中走了不少弯路,耗费了大量的时间和精力开发出来的保护产品在解密者眼中不堪一击,最终,他们的产品蒙受了巨大的经济损失。本书将公开许多极有商业价值的加密技术,以帮助读者更好地对软件实施加密保护。

 
关于本书:

  本书是由"看雪学院"(http://www.pediy.com)众多高手共同打造而成的。要了解本书的写作背景,先简单谈谈本站的发展历史。
  在2000年初时想找一些研究加解密的朋友交流一下,但令人十分遗憾,那时国内这方面的技术资料很缺乏,大家的交流也有限,因此就创建了主页"看雪学院",与大家共同探讨加密与解密的知识。主页提供的论坛成了国内知名的加解密技术论坛,吸引了密界众多高手,当前最新的加解密技术都可从这里接触到。
  为了填补国内Windows平台加密与解密书籍的空白,作者与看雪坛的密界一流好手合作努力,于2001年9月推出国内第一本全面介绍Windows平台下软件的加密与解密技术的书籍《加密与解密--软件保护技术及完全解决方案》。次年,在台湾发行了繁体版,深受台湾读者的欢迎。在这本书中,我们从加密和解密两方面对当今流行的软件保护技术进行分析,读过这本书后,读者能够对当今流行的软件保护技术及破解技术有所了解。这本书获得了2002年全国优秀畅销书奖(科技类)!同时还获得了2002年版权输出奖。
  为了跟上技术发展的步伐,在2003年6月推出《加密与解密》(第二版)。这本书是在第一版的基础上写作而成的,补充了许多新技术,结构更加合理。这本书几乎囊括了Windows下的软件保护的绝大多数内容,是一本研究加密与解密入门的好书。
  由于开发人员对当前流行的软件加密技术有进一步的需求,我们决定推出《软件加密技术内幕》,其内容侧重软件加密技术及其具体实施方案。这本书的创作历时两年,共有十余名对加解密有心得的好手参与。
 
《软件加密技术内幕》与《加密与解密》的联系

  《加密与解密--软件保护技术及完全解决方案》与《加密与解密》(第二版)是同一本书的不同版次,主要讲解加密与解密的相互性,比较侧重一些软件解密技巧的讲述。 《软件加密技术内幕》内容是与前一本书承接互补的,并不重复。主要讲述当前流行的软件加密保护技术。这本书对读者软件调试技巧有一定的要求,这方面的知识可以从《加密与解密》(第二版)获得。

对读者的要求

  要研究软件加密技术必须对系统底层有一定的了解,书中首先讲解了相关系统底层知识,如PE格式深入分析,调试API应用,未公开技术SEH的深入研究等。在了解这些底层知识后,就可以将这些技术应用到自己的软件保护方案中去,例如各种反跟踪技术的实现等。同时本书花了较大篇幅讲解了目前很热门的技术--如何编写加壳软件,以及如何将壳与程序结合起来。
  本书各章节内容如下:
  第1章 PE文件格式的深入分析
  一个操作系统的可执行文件格式和数据结构揭示了藏在操作系统内部的秘密,理解EXE或DLL将有助于对操作系统的深刻理解。如果知道EXE和DLL里面的奥秘,你将成为一名知识更加渊博的程序员。
  第2章 PE分析工具编写
  编写PE分析工具可以加深对PE文件格式的了解,为以后编写加壳、脱壳等工具打好基础。
  第3章 Win32调试API
  Win32中自带了一些API函数,它们提供了相当于一般调试器的大多数功能。利用调试API,可以编写自己的调试器、脱壳机、内存补丁等。
  第4章 Windows下的异常处理
  Windows下异常处理机制之一SHE的出现已绝非一日,但很多人可能还没有彻底了解SEH的工作机制;有关SEH的知识资料不是很多,详细资料就更少!仅有的一些资料大部分还是重复的,本章将使读者对SEH有一个全面的了解。SEH不仅可以简化程序错误处理,使你的程序更加健壮,还广泛应用于反跟踪及加解密中。本章对Windows操作系统内部提供的异常处理支持机制进行了深入探究,首先介绍最常见SEH的实现、原理及应用;然后,介绍VC++如何封装这些内部支持,从而实现众所周知的__try{} __except{}/__finally{}语言;最后对Windows XP新引进的VEH异常处理做了简单的介绍。
  第5章 反跟踪技术
  好的软件保护都要与反跟踪技术结合在一起。如果没有反跟踪技术,软件等于直接裸露在解密者的面前。本章主要讲述防调试器、防静态反汇编、防监视工具和反加载技术等内容。读者可以根据实际情况在软件中采用相关的技术和代码。
  第6章 加壳软件编写
  软件最终发行之前一定要将可执行程序进行加壳/压缩,使解密者无法直接修改程序。但是外面流行的加壳软件,已被广泛深入地研究,有了通用的脱壳/解压办法,保护能力不强。因此十分有必要开发自己的加壳方法。由于外壳技术具有很大的商业价值,因此编写外壳的资料几乎没有。本章手把手地讲解如何编写自己的加壳软件,并介绍如何将前章节的反跟踪技术结合进去,打造你自己的加壳软件。
  第7章 如何让壳与程序融为一体
  不可能有不能脱的壳,那只是时间的问题。如果将壳与程序捆绑到一起,就会加大脱壳的难度,延长脱壳的时间,这也是壳现在的发展方向。本章就是讲述如何将壳与程序融合的技术和方法。
  第8章 Visual Basic 6 逆向工程
  现在所使用的语言无非是两种,一种是解释执行的语言,另一种就是编译后才能够执行的语言。解释语言的一个最大弱点就是能反编译,因此其保护的重点应放在如何防止反编译上。本章以Visual Basic 6 为例,讲解如何对解释语言进行逆向工程,以便针对这类语言的特点研究出更好的保护方法。
  附录A 在 Visual C++ 中使用内联汇编
  在编写某些加密代码时,可能要用到汇编语言来编写一些特定功能的代码。使用内联汇编可以在 C/C++ 代码中嵌入汇编语言指令,而且不需要额外的汇编和链接步骤。
  附录B 在Visual Basic中使用汇编
  汇编代码不能直接插入VB程序,必须采用一些特殊方法。

对读者的要求

  本书是针对具有一些编程经验和一定解密基础的程序员而写的。作为软件开发人员,有必要对软件保护(加密)和破解(解密)两方面同时进行研究。也就是说应该更多地从破解者的角度考虑,这样才可能比较合理地运用各种技术。这方面的知识可以从本书的姊妹篇《加密与解密》(第二版)中获得。
  由于要与Windows的底层打交道,不可避免地要使用汇编语言,而且使用汇编语言来阐述将是最清晰直接和易于理解的,因此需要读者有一定的汇编基础。
  本书适合以下读者:
  对软件加密技术感兴趣的软件开发人员
  进行商业软件开发的相关人员
  对系统底层机制感兴趣的读者
  对逆向工程感兴趣的读者

致谢

  感谢博文视点公司对本书的大力支持!
  感谢Sun Bird、Aming、Arbiter、小牧童等看雪论坛众多朋友的支持和帮助!
  感谢常州师范专科学校外语系顾晓波翻译的Brief Introduction to P-code,Mr.Silver一文。
  感谢参与写作的各位作者的技术共享的精神,是他们的无私让读者可以从本书中获得许多极有商业价值的技术。!

关于配套光盘

  本书所有实例均在配套光盘里提供,大部分实例是以Masm或Microsoft Visual C ++开发并测试的。笔者尽量使这些程序简短而完整,并将代码印刷在书里。对于那些较长的实例,需要读者阅读本书所附光盘上的那些文件。
请将光盘文件拷贝到硬盘,并去除只读属性再编译和调试。
  所有的实例程序均带源码,并且实例在光盘上都是预编译好的,均可在Windows系统上直接运行(注意:有些实例仅可运行在Windows 9x平台或Windows NT内核平台)。
  本书部分实例用汇编语言来描述,读者可利用内联汇编技术将汇编代码直接插入C++,Delphi等语言代码中去。
  大部分实例虽是采用了VC来描述,但由于是Win32编程,所以读者仍然可以很容易地将代码移植到其他编译语言中去。

技术支持

  虽然作者竭尽全力保证书中内容及所附光盘上内容的准确性,但错误可能在所难免。为此我们会在主页提供关于本书的更正内容:
http://www.pediy.com
  我们非常希望能够了解读者对本书的看法。读者可以将对本书的评论、疑问及其他意见发到我们的论坛里,我们乐意回答朋友们提出的任何合理的问题。同时,在这里你也能结识到许多兴趣相投的朋友。

                                                 看雪学院
                                                 2004年4月

 
目录:

  第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章 Win32 调试API 60
  3.1 Win32调试API原理 60
    3.1.1 调试相关函数简要说明 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.1 TIB结构 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进入Ring0 143
    4.4.2 利用SEH实现对自身的单步自跟踪 145
    4.4.3 其他应用 147
  4.5 系统背后的秘密 148
  4.6 VC如何封装系统提供的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.7 利用UnhandledExceptionFilter检测 169
    5.1.8 INT 41子类型 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.1 窗口方法检测 190
    5.4.2 句柄检测 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 VC++调用汇编子程序 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章 Visual Basic 6 逆向工程 336
  8.1 P-code传奇 336
  8.2 VB编译奥秘 337
  8.3 VB与COM 338
  8.4 VB可执行程序结构研究 343
  8.5 VB程序事件解读 353
  8.6 VB程序图形界面解读 356
  8.7 VB执行代码研究 361
    8.7.1 VB函数的解读 361
    8.7.2 VB函数调用约定 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 WKT VB Debugger实现原理 372
    8.8.5 VB6 P-code Crackme分析实例 378
  8.9 VB程序保护篇 383
    8.9.1 Anti-Loader技术 383
    8.9.2 VB"自锁"功能实现 386
  8.10 相关工具点评 386


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


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

 
加密与解密(第二版)(看雪论坛鼎力打造,全国优秀畅销书奖)

出版社:电子工业出版社
作者:段钢编著
定价:¥49

                             
 
内容简介:

  软件保护是维护软件开发人员利益的主要手段,是软件开发过程中的重要环节。为了跟上技术发展的步伐,本书在第一版的基础上,更新了第一版中的过时内容,补充了许多新技术。本书全面讲述了Windows平台下的最新软件加密与解密技术及相关解决方案,采用循序渐进的方式,从基本的跟踪调试到深层的拆解脱壳,从浅显的注册码分析到商用软件保护,几乎囊括了Windows下的软件保护的绝大多数内容。本书共分三个部分。第一部分介绍与加密和解密技术相关的基础知识。第二部分全面讲述各种最新的软件加密与解密技术及方法,如静态分析技术,动态分析技术,序列号,警告窗口,时间限制,加密算法MD5、SHA、RSA、EIGamal等。第三部分主要介绍PE文件的知识,如增加文件功能、加壳与脱壳、补丁技术等。
  本书是密界一流高手的呕心之作,通过解析大量实例来展现软件加密与解密的最深处,是软件开发人员不可多得的一本专业参考书。
 
Copyright ©1998~2004 华储网. All rights reserved。
To comment on this site,E-mail :
webmaster@huachu.com.cn
<% set rs=nothing conn_tsmlk.close set conn_tsmlk=nothing endtime=timer() response.write "页面执行时间:"&FormatNumber((endtime-startime)*1000,3)&"毫秒" %>