透视Java:反编译、修补和逆向工程技术
作者:(乌克兰)Alex Kalinovsky著
出版时间:2005
本书主要专注于通常被称作破译的技巧,介绍了边界的终极技术,包括反编译和混淆类、破译私有变量和方法、替代和修补应用类和破译JAVA的行为等方法。
您是否是到过所有常规方法都失效的窘境?您是否知道有一种产品能够准确地解决您所面对的问题,但并没有文献来记载其实现方法?您是否正在使用某一第三方库文件,需要改动其中一些逻辑,却苦于没有源代码?
本书给出了一些如何攻克上述难题的实用方法:
反编译和混淆类;
破译私有变量和方法;
替代和修补应用类;
运用窃听技术简化故障排除和性能调整;
截取控制流并控制类加载;
理解和调整字节码;
更改第三方应用逻辑;
破译JVM的行为;
保护商用软件免于破译;
本书中提及的一些窍门能够帮您节省时间,提高效率。每一章都集中讲解一种技术,解决一类问题概述问题所在、给出问题的解决方案,然后给出测试该方案的其他构思。
目录
- 第1章 入门指南
- 1.1 技术综述—— 使用各种方法的时间和目的
- 1.2 利用文件管理器提高程序开发效率
- 1.2.1 FAR和Total Commander
- 1.2.2 Java IDE
- 1.3 示例应用程序的功能和结构
- 1.4 快速测试
- 1.5 小结
- 第2章 反编译类
- 2.1 确定何时进行反编译
- 2.2 了解最佳的反编译器
- 2.3 反编译类
- 2.4 反编译可行的要素
- 2.5 反编译代码的潜在问题
- 2.6 快速测试
- 2.7 小结
- 第3章 混淆类
- 3.1 保护代码背后的构思
- 3.2 混淆—— 一种知识产权的保护措施
- 3.3 由混淆程序执行的变换
- 3.3.1 去除调试信息
- 3.3.2 名称的处理
- 3.3.3 编码Java字符串
- 3.3.4 改变控制流
- 3.3.5 插入讹用的代码
- 3.3.6 删除未使用的代码(压缩)
- 3.3.7 优化字节码
- 3.4 了解最佳的混淆程序
- 3.5 潜在问题和通用解决方案
- 3.5.1 动态类加载
- 3.5.2 反射
- 3.5.3 串行化
- 3.5.4 违反命名惯例
- 3.5.5 维护的难题
- 3.6 运用Zelix KlassMaster混淆一个Chat应用程序
- 3.7 破解混淆的代码
- 3.8 快速测试
- 3.9 小结
- 第4章 破译类的非公共方法和变量
- 4.1 封装的问题
- 4.2 访问包和保护类成员
- 4.3 访问私有类成员
- 4.4 快速测试
- 4.5 小结
- 第5章 替换和修补应用类
- 5.1 当进行各种尝试都失败后应该做什么
- 5.2 找到必须修补的类
- 5.2.1 常用的方法
- 5.2.2 搜寻文本串
- 5.2.3 已混淆的代码的处理
- 5.3 一个需要修补的示例
- 5.3.1 使用类名称
- 5.3.2 搜寻文本串
- 5.3.3 运用调用堆栈搜寻程序逻辑
- 5.4 修补类以提供新逻辑
- 5.5 重构应用程序来加载和使用修补的类
- 5.6 修补封装的包
- 5.7 快速测试
- 5.8 小结
- 第6章 使用有效的跟踪技术
- 第7章 管理Java安全
- 第8章 窥探运行时环境
- 第9章 用非正式调试程序破译编码
- 第10章 运用性能分析工具分析应用程序的运行时
- 第11章 运用负载测试定位和修正可伸缩性问题
- 第12章 逆向工程的应用
- 第13章 窃听技术
- 第14章 控制类的加载
- 第15章 替代和修补核心Java类
- 第16章 截取控制流
- 第17章 理解和调整字节码
- 第18章 运用本机代码修补法进行总控制
- 第19章 保护商用程序免于被破解
- 附录A 商用软件许可
- 附录B 资源
- 附录C 测试问题解答