Android开发中的反汇编与反编译工具全解析
1. 反汇编工具概述
在处理Android字节码时,随着经验的积累和耐心的投入,字节码就像一门新的语言,我们可以逐渐识别出不同的模式和语言结构。目前,我们已经了解了两款反汇编工具:作为Android SDK一部分的dx,以及能将classes.dex反汇编为XML结构的DexToXML。
1.1 十六进制编辑器
多年来,黑客们使用十六进制编辑器以及更复杂的工具(如Numega的SoftICE和Hex - Rays的IDA)来绕过各类软件试用版的授权机制。在过去,许多程序员会通过检查日期是否在安装日期后的30天来保护他们的游戏和实用程序。若过了30天,试用版将停止运行。如果不想购买正版,用户可以将计算机时间永久设置为试用到期前几天;聪明的用户还会找到开发者存储安装日期的位置(如.ini文件或注册表),并将其设置为遥远的未来日期。
当能够读懂汇编代码、设置断点缩小安全功能范围、找到检查试用日期的代码并禁用它,或者创建程序能接受的序列号或密钥,使试用版变成完整版时,就算完成了这一“入门仪式”。在Java领域,攻击这类保护机制的首选工具就是十六进制编辑器。
大多数程序员并没有从过去的经验中吸取教训,很多许可证保护机制仍然依赖于简单的条件跳转。例如以下代码展示了如何让一个演示应用在2012年底过期:
if (new Date().after(new GregorianCalendar(2012,12,31).getTime())) {
AlertDialog.Builder ad = new AlertDial
超级会员免费看
订阅专栏 解锁全文
1143

被折叠的 条评论
为什么被折叠?



