警告!请勿删除条件跳转或使用无条件跳转!否则此破解将崩溃且在 ART 模式下无法运行!为了避免出现此问题,请使用条件跳转。例如:如需跳转,可使用 if-eq v0,v0 (bytes: 32 00 ?? ??)。如无需跳转,可使用 if-ne v0,v0 (bytes: 33 00 ?? ??);您也可自定义跳转条件。

自定义破解文件名必须与目标 APK 文件名相同。注意:需要区分大小写。
如果应用已存在自定义破解文件,您可以简单的添加到任何文本文件名称的开头,并保存为已存在自定义破解的附近。
如果您想编写一个可以一次性地应用在单个公司的一系列应用的破解时,可以在自定义破解文件名末尾加上 _%25ALL%25 的后缀,例如:用于所有 SVOX 的破解名称可以这样命名:com.svox.classic.langpack_%25ALL%25.txt。那就是说,此 _%25ALL%25 将会替换破解包的部分名称,而破解包的完整名称将取决于应用公司自行命名的名称。 破解文件不需要使用特殊的字符或格式,仅需要单独分开。如果您想编写一个可以一次性地应用在单个公司的多个应用的破解时,可以在自定义破解文件名开头加上 %25ALL%25_ 的前缀和末尾加上 _%25ALL%25 的后缀。(例如:chelpus.%25ALL%25_com.android._%25ALL%25.txt)。您也可以使用如下自定义破解内容 %25PACKAGE_NAME%25,其中 %25PACKAGE_NAME%25 将会替换破解包的部分名称。
可以使用 IDA Pro 6.1 来搜索破解模式字节,它可以打开 dalvik-cache、odex、库文件和 classes.dex 文件。
如果您想破解 dalvik-cache 或 odex 文件,请不要忘记在不同固件版本中字节的数据存在非常大的差异,也不要忘记所有 classes.dex 的字节并非与 dalvik-cache 和 odex 文件一致。如果您在 IDA Pro 中打开 classes.dex 或 odex 文件将会看见此差异。

[BEGIN]
<将会在用户应用破解前显示破解的描述>
例如:应用 XYZ Pro 5.0.5 破解

[PACKAGE]
<解包 classes.dex 并对程序的 [CLASSES] 应用所有的破解,然后基于已修改的 classes.dex 生成 odex 文件。>

[CLASSES]
<搜索并替换 classes.dex 破解模式(详情如下字符串)>
{"search":"63 R00 R01 R02 38 00 04 00 12 10 0F 00"}
{"group":"1"}
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
{"replaced":"12 00 6A W00 W01 W02 00 00 12 S0 0F 00"}


[LIB]
<搜索并替换命名本地库文件破解模式(详情如下字符串)>
{"name":"libtitanium.so"}
{"original":"00 ** 50 e2"}
{"replaced":"00 00 50 e1"}

[LIB]
<搜索并替换命名全部本地库文件破解模式(详情如下字符串)>
{"name":"*"}
{"original":"00 ** 50 e2"}
{"replaced":"00 00 50 e1"}

[OTHER FILES]
<搜索并替换命名在 /data/data/Package_Target_APK/ 的其他文件破解模式(详情如下字符串)>
{"name":"/files/shell.dex"}
{"original":"0F 00 00 00 1A 00 00 00 0F 00 00 00 59 00 00 00 2F"}
{"replaced":"0F 00 00 00 0F 00 00 00 0F 00 00 00 59 00 00 00 2F"}

[OTHER FILES]
<搜索并插入命名在 /mnt/sdcard/ 的其他文件破解模式(如果未找到 /mnt/sdcard/ 路径,幸运破解器将搜索其他类型的 sdcard 路径)>
{"name":"/mnt/sdcard/Android/package-name/files/lives.xml"}
{"original":"63 68 65 6C 70 61"}
{"insert":"63 68 65 6c 70 61 61 61"}

[FILE_IN_APK]
<搜索并从 APK 中替换文件破解模式(仅支持使用此自定义破解重建的 APK 文件)>
{"name":"assets/bin/Data/Managed/O7SharpCompress.dll"}
{"original":"0F 00 00 00 1A 00 00 00 0F 00 00 00 59 00 00 00 2F"}
{"replaced":"0F 00 00 00 0F 00 00 00 0F 00 00 00 59 00 00 00 2F"}

[ADD-BOOT]
<此命令将会自动添加当前用户自定义破解到启动列表中,尽可能对库文件进行破解,或破解没有 [ODEX] 或没有 [PACKAGE] 的 [CLASSES])>

[END]
<在破解应用后将会显示破解描述>
恭喜您,应用已破解!

"search" - 搜索命令允许您对破解模式或存储于特殊位置的字节进行搜索。
{"search":"63 R00 R01 R02 38 00 04 00 12 10 0F 00"}
如上述例子所示,绿色字节是编写成您的破解模式代码,而黄色标签的字节 R00 -> R02 将会被保存。
已存储的字节必须排序为:R00, R01, R02, R03...
已存储的字节也不能够重复。

"group" - 组标记破解模式(组数量≥1)。如果此组中至少有一种模式破解成功,都将显示成功破解信息。当您尝试对指定应用的多个版本进行通用破解时,这将非常有效(例如,破解所有版本谷歌 Play 市场以禁用自动更新)。
"original" - 此破解模式是用于搜寻破解被应用后的偏差。
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
如上述例子所示,绿色字节是编写成您的破解模式代码,而黄色字节是通配符(??, **)
"replaced" - 此替换命令将会遵循“original”叙述而进行覆盖偏差处理。
{"replaced":"12 00 6A W00 W01 W02 00 00 12 00 0F 00"}
如上述例子所示,绿色字节将会覆盖目标位置,而黄色字节将会存储上次“search”执行的字节。
"name" - 此命令是用于特殊库文件名称的目标(可查看上述 [LIB] 说明)
S0 , S1, SQ - 分别设置 smali 变量为 0 或 1。
例如,变量: const/4 v?,0x00。 问号表示 变量 数未知(例如,它在新版本中已更改),但您肯定此变量对于 0,并希望将其设为 1。在这种情况下,模式为:
{"original":"12 ?? ?? ?? ?? ??"}
{"replaced":"12 S1 ?? ?? ?? ??"}
反之,设置变量为 0:
{"original":"12 ?? ?? ?? ?? ??"}
{"replaced":"12 S0 ?? ?? ?? ??"}
"replace_from_file" - 这将遵循 "original" 声明,从文件(必须已保存类似自定义破解)使用字节覆盖偏移量。
{"replace_from_file":"array.bin"}
这样做是为了避免写太长的模板来替换。
"insert" - 如果您想插入超过原始模式的数据长度。
例如,文件破解前包含:"chelpa end"
{"original":"63 68 65 6C 70 61"}
{"insert":"63 68 65 6c 70 61 61"}
文件破解后包含:"chelpaa end"

[LIB-ARMEABI],[LIB-ARMEABI-V7A],[LIB-MIPS] or [LIB-X86] - for Libraries from /lib/armeabi/, /lib/armeabi-v7a/, /lib/mips/, /lib/x86/.

[ODEX-PATCH] - 是用于破解已创建的 odex 文件。例如:将使用“自动模式”的“移除授权验证”对应用进行破解,通过使用自定义破解,您仍然需要对其做出额外的更改。如果我们使用一个简单的 [PACKAGE]-[CLASSES]、[ODEX] 或 [CLASSES]-[ODEX],那 odex 文件将会根据“无更改”或“仅破解”的方式被创建。
例如:

[BEGIN]
[ODEX-PATCH]
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
{"replaced":"12 00 6A ?? ?? ?? 00 00 12 00 0F 00"}
[END]
恭喜您,ODEX 文件已修改!

[CLASSES] 没有 [PACKAGE] - 破解 dalvik-cache 的应用。请不要忘记系统定期更新 dalvik-cache 的应用,更新后将会丢失所有的更改。因此,我们必须添加 [ADD-BOOT] 命令对过期的 dalvik-cache 进行破解,但此方式不稳定。如果 ROM Toolbox 应用发现了 odex 文件,将会需要此方式对其进行破解。
例如:

[BEGIN]
[CLASSES]
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
{"replaced":"12 00 6A ?? ?? ?? 00 00 12 00 0F 00"}
[ADD-BOOT]
[END]
恭喜!

[ODEX] - 在 /data/app/ 文件夹复制 dalvik-cache 并重命名为 odex 文件,然后所有的破解将会应用到此 odex 文件。如果 odex 的校验和错误,就不能够通过检验,而且与创建 odex 文件不同 [PACKAGE] - [CLASSES]。
例如:

[BEGIN]
[ODEX]
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
{"replaced":"12 00 6A ?? ?? ?? 00 00 12 00 0F 00"}
[END]
恭喜!

[CLASSES]-[ODEX] - 对 dalvik-cache 应用破解,然后在 /data/app/ 文件夹复制 dalvik-cache 并重命名为 odex 文件。如果 odex 的校验和以及 dalvik-cache 错误,就不能够通过检验,而且与创建 odex 文件不同 [PACKAGE] - [CLASSES]。
例如:

[BEGIN]
[CLASSES]
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
{"replaced":"12 00 6A ?? ?? ?? 00 00 12 00 0F 00"}
[ODEX]
[END]
恭喜!

[COMPONENT] - 启用或禁用应用组件。
例如:

[BEGIN]
[COMPONENT]
{"disable":"com.superApp.adsActivity"}
{"enable":"com.superApp.fullVersion.Provider"}
{"disable":"com.android.vending.CHECK_LICENSE"}
[END]
恭喜!

[SQLITE] - 有时候,目标应用必需在数据库中更改某些参数以实现某一项功能:
例如:

[BEGIN]
试用期重置
[SQLITE]
{"database":"/data/data/com.package.megaapp/databases/settings.db"}
{"execute":"DELETE FROM table_settings WHERE name = 'SETTING__LIC'"}
{"execute":"UPDATE table_settings SET UsedDays=0 WHERE name='Trial_set'"}
[END]
恭喜!试用期已重置!

database - 在设备中对数据库应用破解。
execute - SQLite 查询。

[SET_PERMISSIONS] - 为应用数据文件夹模拟 "chmod permissions file_name" linux 命令:
例如:

[BEGIN]
试用期重置
[SET_PERMISSIONS]
{"file_name":"/files/stats"}
{"permissions":"777"}

[OTHER FILES]
{"name":"/files/stats"}

{"original":"4D 4D 46 31"}
{"replaced":"00 4D 46 30"}

[SET_PERMISSIONS]
{"file_name":"/files/stats"}
{"permissions":"444"}

[END]
恭喜!试用期已重置!

[COPY_FILE] - 从幸运破解器目录复制文件到新路径:
例如:

[BEGIN]
复制文件修改金币
[COPY_FILE]
{"file_name":"money_for_game.bin"}
{"to":"/data/data/game_package/files/settings.xml"}

[END]
恭喜!您的文件已复制且金币已修改!