逆向工程解锁Sketchbook高级版的记录

逆向工程解锁Sketchbook高级版的记录
拾璃Sketchbook 安卓版高级功能解锁:基于截图的逆向流程记录
背景
偶然发现 Sketchbook(安卓版)的新版本似乎包含了需要购买才能使用的高级功能(在界面上可能显示为“高级版捆绑包”或类似字样)。由于购买途径似乎受限于 Google Play 商店,这给无法或不愿使用该商店的用户带来了不便。因此,尝试通过逆向工程来分析和修改应用,以期在本地解锁这些功能。
目标应用: Sketchbook (安卓版)
目标: 解锁应用内的高级功能。
初始状态: 应用内有高级功能区域,但显示为锁定状态,需要购买。
使用工具:
- NP 管理器: 用于 APK 分析、修改、资源查看和代码编辑。
声明: 本文仅记录基于截图的操作过程,用于技术交流和学习。修改应用可能违反用户协议,并可能导致应用不稳定。请尊重开发者劳动,支持正版。
逆向修改步骤
1. 准备工作:应用共存与提取
为了方便修改且不影响原版应用,首先使用 NP 管理器对 Sketchbook 应用进行处理。
- 打开 NP 管理器,找到 Sketchbook 应用。
- 使用其“应用共存”功能(或类似的提取安装包功能),生成一个独立的、可供修改的 APK 文件副本。
2. 定位关键信息:查找资源 ID
要找到控制高级功能的代码,通常先从界面上可见的文字入手,查找其在应用资源文件中的 ID。
- 在 NP 管理器中,点击上一步生成的 Sketchbook APK 文件。
- 选择
resources.arsc文件,这是安卓应用的资源索引文件。 - 选择“Arsc 编辑器”(或 NP 管理器提供的相应功能)打开。
- 在 Arsc 编辑器中,使用“查询”或“搜索”功能,选择按“资源值”搜索。
- 输入界面上与高级功能相关的文字(例如 “Premium Bundle” 或实际显示的文字)。
- 搜索结果会显示该文字对应的资源 ID。。
3. 追踪代码:搜索资源 ID 的使用位置
得到资源 ID 后,需要在应用的 Java 代码(编译后的 Dalvik 字节码,位于 classes.dex 文件中)里查找这个 ID 被用在了哪里。
- 返回 APK 文件内容视图。
- 选择
classes.dex文件(如果应用较大,可能有classes2.dex,classes3.dex等,需要选择合适的或全部选择进行搜索)。 - 使用“Dex 编辑器++”打开。
- 在 Dex 编辑器中启动搜索功能。
- 选择按“常量”搜索,输入之前找到的资源 ID。
- 搜索结果会列出代码中使用该 ID 的位置。
4. 分析逻辑:找到关键判断函数
点击搜索结果,跳转到具体的 Smali 代码位置。分析这段代码及其上下文,寻找进行高级功能判断的逻辑。
- 观察 ID, 使用处的 Smali 代码。
- 根据截图分析,在使用该 ID 的代码附近,发现了一个静态方法调用:
invoke-static {p0}, Lcom/adsk/sketo/SketoApp;->P4(Landroid/content/Context;)Z。 - 方法签名末尾的
Z通常表示该方法返回一个布尔值(boolean,真或假)。 - 结合上下文,这个名为
P4的方法很可能就是用来检查用户是否拥有高级权限的函数。
5. 修改代码:强制返回 true
确定了关键判断函数 P4 后,目标是修改它,让它无论如何都返回 true(表示已授权)。
- 在 Dex 编辑器中,跳转到
com.adsk.sketo.SketoApp类下的P4方法定义处。
- 清空
P4方法原有的 Smali 代码。
- 在方法体内写入新的 Smali 代码,使其直接返回常量
1(在布尔语境下代表true)。根据截图,添加的代码是:1
2const/4 v0, 0x1
return v0
- 保存对
P4方法的修改。
6. 完成与验证:重新打包、签名、安装
代码修改完成后,需要保存更改,重新生成 APK 文件,并对其进行签名,然后才能安装到设备上。
- 退出 Dex 编辑器,NP 管理器通常会提示保存修改并自动重新编译打包 APK。
- 对修改后的 APK 文件进行签名(NP 管理器通常提供签名功能)。签名是安装到安卓系统的必要步骤。
- 卸载设备上可能存在的原版 Sketchbook(如果之前没有使用共存功能)。
- 安装这个修改过并已签名的 APK 文件。
- 打开新安装的 Sketchbook 应用。
7. 结果确认
- 检查之前显示为锁定的高级功能区域。
- 根据截图显示,修改后的应用中,高级版功能区域不再显示锁定或购买提示,表明修改成功,高级功能已被解锁。
总结
通过以上步骤,利用 NP 管理器,从界面文字出发找到资源 ID,再通过资源 ID 追踪到代码中的关键判断函数 P4,最后修改该函数强制返回 true,成功在本地解锁了 Sketchbook 应用的高级功能。这个过程展示了安卓逆向中一种常见的修改思路。





















