这是一套基于 Morphe Patcher 的纯字节码补丁,专注于还原被加固或代码抽离的 Android 应用。
所有补丁在打包阶段直接操作 DEX 字节码,无需 root、无需 Termux、无需运行任何脚本——只要把补丁源加到 Morphe Manager,选好 APK 一键打包即可。
Note
这些补丁基于对开源还原工具逻辑的移植,目标是在 Morphe 生态里复刻"应用内自足"的还原流程。
在手机浏览器中打开上面的链接,会自动唤起 Morphe Manager 并添加本补丁源。
或者手动添加:打开 Morphe Manager → 左下角文件夹图标 → Patch Sources 旁的 + → 选择 Remote 标签 → 粘贴下面的地址:
https://github.com/sjshb57/pairip-patches
v1.5.1 •
main• 2 patches total
🌐 Universal • 2 patches
| 💊 Patch | 📜 Description | ⚙️ Options |
|---|---|---|
| Remove pairip protection | Restores obfuscated strings and removes pairip bytecode protection. | |
| Restore extracted methods | Inlines methods hidden in $c helper classes back into the host class, then removes those helper and reflection method-holder classes. |
🔓 Remove pairip protection — 还原 pairip 字符串混淆与 VMRunner 保护
针对使用 pairip 加固的应用,完成以下还原工作:
| 步骤 | 作用 |
|---|---|
| 字符串还原 | 从 Application 类(或 appkiller / ObjectLogger 风格)提取被混淆的字符串映射,把使用方的 sget-object 还原成 const-string,并清除配套的垃圾 const/4 指令 |
| VMRunner 清空 | 把所有调用 VMRunner 的方法体替换为按返回类型的最小返回 |
| 残留清理 | 删除引用 Lcom/pairip/ 的 invoke / 字段访问指令,删除被清空后只剩 return-void 的空 <clinit> |
| 类清除 | 真正删除 com/pairip/ 类与字符串占位类 |
🧬 Restore extracted methods — 还原被抽离到辅助类的方法
针对把方法体抽离到 <主类>$c<数字> 辅助类、主类仅保留反射桩的加固方式:
- 三重特征识别抽离类:类名形如
$c<数字>+ 含static方法 + 该方法首个参数为主类类型(充当this),避免误伤$c0这类正常的 Kotlin 内部类 - 将抽离方法体原样搬回主类对应方法,清除原本的
Method.invoke反射桩 - 保留原方法的注解(如
@Nullable) - 还原完成后删除已处理的辅助类
- 按上方 一键添加 把补丁源加入 Morphe Manager
- 在 Manager 中选择你要修补的 APK 文件
- 在补丁列表中勾选需要的补丁
- 点击 Patch 开始打包,完成后安装即可
Warning
- 这些补丁会强制启用 FULL 编译模式(完整重写 DEX),以确保被还原的类能被真正删除。代价是打包更慢、更耗内存,低内存设备打包大型应用时可能失败。
- FULL 模式存在已知边界情况(desugared
j$类),个别应用可能打包失败。若遇到此类问题,请提 Issue。 - 还原属于逆向性质的操作,仅供学习研究,请在合法合规的前提下使用。
本仓库基于 morphe-patches-template,使用 semantic-release 自动发版。
提交信息遵循 Conventional Commits:
| 前缀 | 含义 | 版本变化 |
|---|---|---|
feat: |
新功能 | minor |
fix: |
修复 | patch |
推送到 main 后,GitHub Actions 会自动构建 .mpp 并发布到 Releases。
仅供学习与研究使用 · Made with ❤️ by sjshb57