《透视Java 反编译、修补和逆向工程技术》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(乌克兰)Alex Kalinovsky著;刘凌,周哲海译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2005
  • ISBN:7302114145
  • 页数:262 页
图书介绍:反编译、修补和逆向工程技术.您是否是到过所有常规方法都失效的窘境?您是否知道有一种产品能够准确地解决您所面对的问题,但并没有文献来记载其实现方法?您是否正在使用某一第三方库文件,需要改动其中一些逻辑,却苦于没有源代码?..本书给出了一些如何攻克上述难题的实用方法:反编译和混淆类;破译私有变量和方法;替代和修补应用类;运用窃听技术简化故障排除和性能调整;截取控制流并控制类加载;理解和调整字节码;更改第三方应用逻辑;破译JVM的行为;保护商用软件免于破译。...本书中提及的一些窍门能够帮您节省时间,提高效率。每一章都集中讲解一种技术,解决一类问题概述问题所在、给出问题的解决方案,然后给出测试该方案的其他构思。

目录 1

第1章 入门指南 1

1.1 技术综述——使用各种方法的时间和目的 1

1.2 利用文件管理器提高程序开发效率 3

1.2.1 FAR和Total Commander 4

1.2.2 Java IDE 6

1.3 示例应用程序的功能和结构 7

1.4 快速测试 9

1.5 小结 9

第2章 反编译类 11

2.1 确定何时进行反编译 11

2.2 了解最佳的反编译器 12

2.3 反编译类 14

2.4 反编译可行的要素 20

2.5 反编译代码的潜在问题 21

2.6 快速测试 24

2.7 小结 24

第3章 混淆类 25

3.1 保护代码背后的构思 26

3.2 混淆——一种知识产权的保护措施 27

3.3 由混淆程序执行的变换 27

3.3.1 去除调试信息 28

3.3.2 名称的处理 28

3.3.3 编码Java字符串 29

3.3.4 改变控制流 30

3.3.5 插入讹用的代码 31

3.3.6 删除未使用的代码(压缩) 32

3.3.7 优化字节码 32

3.4 了解最佳的混淆程序 32

3.5 潜在问题和通用解决方案 33

3.5.1 动态类加载 33

3.5.2 反射 34

3.5.3 串行化 34

3.5.4 违反命名惯例 35

3.5.5 维护的难题 35

3.6 运用Zelix KlassMaster混淆一个Chat应用程序 36

3.7 破解混淆的代码 40

3.9 小结 41

3.8 快速测试 41

第4章 破译类的非公共方法和变量 43

4.1 封装的问题 43

4.2 访问包和保护类成员 44

4.3 访问私有类成员 47

4.4 快速测试 49

4.5 小结 49

第5章 替换和修补应用类 51

5.1 当进行各种尝试都失败后应该做什么 52

5.2 找到必须修补的类 53

5.2.1 常用的方法 53

5.2.2 搜寻文本串 54

5.3 一个需要修补的示例 55

5.2.3 已混淆的代码的处理 55

5.3.2 搜寻文本串 57

5.3.1 使用类名称 57

5.3.3 运用调用堆栈搜寻程序逻辑 59

5.4 修补类以提供新逻辑 60

5.5 重构应用程序来加载和使用修补的类 60

5.6 修补封装的包 62

5.7 快速测试 63

5.8 小结 63

第6章 使用有效的跟踪技术 65

6.1 跟踪技术简介 65

6.2 跟踪技术是了解软件的有效方法 67

6.4.1 有效使用跟踪技术的准则 68

6.3 跟踪技术与日志工具和API 68

6.4 跟踪技术的使用准则 68

6.4.2 不要滥用跟踪技术的准则 69

6.5 快速测试 70

6.6 小结 70

第7章 管理Java安全 71

7.1 Java安全概述 71

7.2 绕过安全核查 73

7.2.1 未安装安全管理器 74

7.2.2 安装默认政策的安全管理器 74

7.2.3 安装定制政策的安全管理器 75

7.4 小结 76

7.3 快速测试 76

第8章 窥探运行时环境 77

8.1 了解运行时环境的价值 77

8.2 系统属性 78

8.3 系统信息 79

8.4 内存信息 80

8.5 网络信息 81

8.6 访问环境变量 82

8.7 快速测试 82

8.8 小结 83

第9章 用非正式调试程序破译编码 85

9.1 了解未知应用程序的内幕 85

9.2 传统调试程序及其局限性 86

9.3 运用Omniscient调试程序破译 87

9.3.1 记录Chat的执行 87

9.3.2 浏览信息处理代码 89

9.3.3 运用ODB破译混淆的Chat程序版本 91

9.4 快速测试 92

9.5 小结 92

第10章 运用性能分析工具分析应用程序的运行时 93

10.1 使用性能分析技术的时机和目的 94

10.2 Java的最佳性能分析工具 94

10.3 研究堆的使用和垃圾回收频率以提高性能 95

10.4 浏览对象分配和引用以发现和修复内存泄漏 97

10.5 研究线程的分配和同步 101

10.6 识别开销大的方法以提高性能 105

10.7 使用线程转储研究运行时的应用程序 106

10.8 快速测试 107

10.9 小结 108

第11章 运用负载测试定位和修正可伸缩性问题 109

11.1 负载测试的重要性 109

11.2 用JUnit负载测试基于RMI的服务程序 111

11.3 用JMeter负载测试 115

11.3.1 JMeter概述 116

11.3.2 WebCream概述 117

11.3.3 创建一个Web测试方案 118

11.4 快速测试 125

11.5 小结 125

12.1 用户界面元素和资源 127

第12章 逆向工程的应用 127

12.2 破译文本 128

12.3 破译图片 129

12.4 破译配置文件 131

12.5 快速测试 131

12.6 小结 132

第13章 窃听技术 133

13.1 窃听的定义 133

13.2 在HTTP上窃听 134

13.2.1 用Tunnel捕捉HTTP信息交换 135

13.2.2 用网络嗅探器捕捉HTTP信息交换 136

13.2.3 保护Web应用程序不被窃听 138

13.3.1 RMI传输协议 139

13.3 在RMI协议上窃听 139

13.3.2 用网络嗅探器截取RMI消息 140

13.3.3 保护RMI应用程序不被窃听 141

13.4 在JDBC驱动程序和SQL语句上窃听 142

13.5 快速测试 144

13.6 小结 144

第14章 控制类的加载 147

14.1 从类加载的角度观察JVM的内部结构 147

14.2 编写定制类加载程序 151

14.3 快速测试 156

14.4 小结 156

15.1 为什么麻烦 157

第15章 替代和修补核心Java类 157

15.2 用启动类路径修补核心Java类 158

15.3 修补java.lang.Integer的例子 159

15.4 快速测试 161

15.5 小结 162

第16章 截取控制流 163

16.1 控制流的定义 164

16.2 截取系统出错信息 164

16.3 截取系统流 165

16.4 截取对System.exit的调用 167

16.5 用hook对JVM的关闭作出反应 169

16.6 用动态代理截取方法 169

16.7 Java虚拟机性能测量工具接口 172

16.9 小结 173

16.8 快速测试 173

第17章 理解和调整字节码 175

17.1 字节码基础 175

17.2 用jClassLib字节码查看器查看类文件 176

17.3 JVM指令集 177

17.4 类文件格式 178

17.4.1 字段和方法描述符 179

17.4.2 类文件结构 180

17.4.3 属性 183

17.4.4 字节码的验证 183

17.5 操纵和生成字节码 184

17.5.1 BCEL概述 184

17.5.2 操纵方法 185

17.5.3 生成类 189

17.5.4 ASM库 191

17.6 字节码调整与AOP和动态代理的比较 192

17.7 快速测试 193

17.8 小结 193

第18章 运用本机代码修补法进行总控制 195

18.1 何时以及为何要修补本机代码 196

18.2 本机代码在Java虚拟机中的用法 197

18.2.1 JNI概述 197

18.2.2 JNI实现的示例 198

18.3 修补本机方法的常用方法 200

18.3.3 修补本机代码 201

18.3.2 替换本机库文件 201

18.3.1 修补Java方法的声明 201

18.4 在Windows平台上修补本机代码 202

18.4.1 可移植执行体格式 202

18.4.2 用函数替代程序修补本机函数 205

18.4.3 使用Microsoft Detour库手动修补 207

18.5 在Unix平台上修补本机代码 209

18.6 快速测试 210

18.7 小结 211

第19章 保护商用程序免于被破解 213

19.1 为应用程序保护设定目标 213

19.2 用Java密码体系保护数据 215

19.2.1 Java密码体系概述 216

19.2.2 用JCA保护Chat的消息 217

19.3 保护发布的应用程序不被破译 220

19.3.1 保护字节码不被反编译 221

19.3.2 保护字节码不被破译 221

19.3.3 保护应用程序内容不被破译 224

19.4 通过许可证控制软件可用功能 229

1 9.4.1 现代软件许可模式 229

19.4.2 通过许可证控制商用功能 230

19.4.3 Web激活和许可注册 237

19.5 快速测试 238

19.6 小结 238

附录A 商用软件许可 241

附录B 资源 247

附录C 测试问题解答 255