MIUI ROM Deodex 去广告 精简系统 破解主题 教程

安装JRE或JDK 配置java运行时环境变量
ROM下载
从这里下载对应机型的开发版或者稳定版
然后用winrar解压卡刷包
高版本的rom已经使用new.dat的形式封装system分区了
所以需要下载SystemExtractor解压system.new.dat

f8cbeeb1-1851-47a0-b214-bd1ea3760653

解压后使用SVADeodexerForArtx32_v4进行deodex操作
过程中会报几个错误,无视掉.然后删除框架里的miui-update.jar

3b58d213-cf2a-4d83-9e69-e78fbe33beb4

刷机脚本替换成旧版本的:
(这个脚本已处理 刷了不会再次锁BL)
这个时候,你制作成卡刷包 一般是OK了,对system.new.dat解压并deodex操作.
然后修改smali完成你的自定义处理.
但事实上还需要对代码做一些修改 去除验证才能完成开机进入系统
反编译步骤
工具 apkdb
编辑工具 nptepad++
相关函数请使用文件夹搜索功能 搜索整个反编译后smali文件夹
下面的东西的说明:
红色表示修改的文件
黄色表示修改的smali的路径(反编译后的)
灰绿色表示smali文件的文件名
绿色表示修改的内容 :修改前字符串 -> 修改后的字符串
如果是函数的话 直接替换原来的函数就好了 注意下入参个数
apk仅反编译dex文件

services.jar

com/miui/server -->
SecurityManagerService$2.smali (或者是SecurityManagerService$1.smali)-> (精简系统更新和商店需要修改的)
修改验证函数run 直接返回空 (我是通过logcat和包名找到这个位置的)
# virtual methods
.method public run()V
.registers 9
.prologue
return-void
.end method
SecurityManagerService.smali-> (去除验证 必改)
思路是删除函数主体的校验代码直接返回空 强迫症的全局搜索这个函数的调用 把调用全删了 然后删除这个函数
这个是app签名校验函数
.method private checkAppSignature([Landroid/content/pm/Signature;Ljava/lang/String;Z)V
.registers 13
.param p1, "validSignatures" # [Landroid/content/pm/Signature;
.param p2, "pkgName" # Ljava/lang/String;
.param p3, "checkEnabled" # Z
.prologue
return-void
.end method
这个是平台签名校验(对付雷电os用的 你刷了雷电就等着卡米吧)
.method private checkPlatformSignature([Landroid/content/pm/Signature;)V
.registers 9
.param p1, "signatures" # [Landroid/content/pm/Signature;
.prologue
return-void
.end method
ThemeManager.apk (主题破解)提示:直接反编译dex文件即可
思路是删除函数主体的校验代码直接返回空 强迫症的全局搜索这个函数的调用 把调用全删了 然后删除这个函数
miui/resourcebrowser/view
ResourceOperationHandler.smali
这个函数大概是验证主题是否被篡改吧
.method public isAuthorizedResource()Z
.locals 1
.prologue
const/4 v0, 0x1
return v0
.end method
验证是否有权使用:是否免费,收费的是否付费
.method public isPermanentRights()Z
.registers 3
.prologue
const/4 v0, 0x1
return v0
.end method
Settings.apk (去除设置里的更新菜单) 提示:直接反编译dex文件即可
com\android\settings
MiuiDeviceInfoSettings.smali
.method public onCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)V
.locals 3
.prologue
return-void
.end method

miuisystem.apk

小米主题的DRM 不改的话 随时还原默认主题
这几个方法变了好几次了
说下思路
方法的主体代码改成创建一个DRM_SUCCESS 然后return
例如:sget-object v8, Lmiui/drm/DrmManager$DrmResult;->DRM_SUCCESS:Lmiui/drm/DrmManager$DrmResult;
return-object v8
miui\drm
DrmManager.smali
.method public static isLegal(Landroid/content/Context;Ljava/io/File;Ljava/io/File;)Lmiui/drm/DrmManager$DrmResult;
.registers 5
.param p0, "context" # Landroid/content/Context;
.param p1, "contentFile" # Ljava/io/File;
.param p2, "rightsFile" # Ljava/io/File;
.prologue
.line 185
sget-object v0, Lmiui/drm/DrmManager$DrmResult;->DRM_SUCCESS:Lmiui/drm/DrmManager$DrmResult;
return-object v0
.end method
.method public static isLegal(Landroid/content/Context;Ljava/lang/String;Ljava/io/File;)Lmiui/drm/DrmManager$DrmResult;
.registers 13
.param p0, "context" # Landroid/content/Context;
.param p1, "hash" # Ljava/lang/String;
.param p2, "rightsFile" # Ljava/io/File;
.prologue
.line 190
sget-object v0, Lmiui/drm/DrmManager$DrmResult;->DRM_SUCCESS:Lmiui/drm/DrmManager$DrmResult;
return-object v0
.end method
.method private static isLegal(Landroid/content/Context;Ljava/lang/String;Lmiui/drm/DrmManager$RightObject;)Lmiui/drm/DrmManager$DrmResult;
.registers 15
.param p0, "context" # Landroid/content/Context;
.param p1, "targetAsset" # Ljava/lang/String;
.param p2, "ro" # Lmiui/drm/DrmManager$RightObject;
.prologue
sget-object v0, Lmiui/drm/DrmManager$DrmResult;->DRM_SUCCESS:Lmiui/drm/DrmManager$DrmResult;
return-object v0
.end method
下面2个返回类型是boolean 所以直接返回true (0x1)
.method public static isPermanentRights(Ljava/io/File;)Z
.registers 2
.param p0, "rightsFile" # Ljava/io/File;
.prologue
.line 258
const/4 v0, 0x1
return v0
.end method
.method private static isPermanentRights(Lmiui/drm/DrmManager$RightObject;)Z
.registers 5
.param p0, "ro" # Lmiui/drm/DrmManager$RightObject;
.prologue
const/4 v0, 0x1
return v0
.end method
boot修改
使用如下工具解包boot
自己解包boot,然后编辑文件文件fstab.qcom
删除第八行的字符串“,verify” //去除system分区验证
修改第九行的字符串“forceencrypt=footer”为“encryptable=footer”//去除强制加密分区
具体如图
QQ截图20160507194547
fstab
点赞
  1. 路过的假面骑士说道:
    Google Chrome Windows 10

    现在miui10还可以用这个方法吗?
    我百度出来的教程就你这一个

    1. coderstory说道:
      Google Chrome Windows 10

      只能参考

  2. gg说道:
    Google Chrome Windows 10

    链接好像失效了

    1. coderstory说道:
      Google Chrome Windows 10

      年久失修。。。自己网上找新版本吧

  3. 千阙说道:
    Sogou Explorer Windows 10

    请教个问题
    为什么现在的miui8 我根据你提供的思路去破解了主题,但是还是会恢复,miuisystem 和thememanager 都修改过了。
    这个问题已经卡了我好多天了。希望您可以指点一下

    1. coderstory说道:
      Google Chrome Mac OS X 10.12.6

      不清楚。。。可能有其他的改动了把

      1. 千阙说道:
        Sogou Explorer Windows 10

        还有什么地方可能有控制的代码,能不能给我点建议。。。。我找的眼睛都要瞎了,有的用JD-GUI还看不到源码

  4. 同路人说道:

    过时,要修改了现在miui7 都是elf格式services.odex,oat2dex没问题,smali也没问题,但最后一步,具体怎么dex2oat改回services.odex?有成功实践经验的请说说

  5. 问一个问题说道:

    请问怎么解锁MIUI 6.0的PIE check?odex化services.jar不能完成啊,替换linker和刷入bypasspie都失败了,谢谢

    1. coderstory说道:

      完全没看懂你在说什么 哈哈哈哈

      1. 问一个问题说道:

        就是安卓5.0以后就又启用PIE验证机制了,就是不能随意读取根目录,可以取消吗,还有谢谢你得教程,我的目的其实就是怎么把service.jar odex化

        1. coderstory说道:

          不知道 我也不理解为什么要去除pie 现在的国产app貌似也无视这个问题的吧 申请存储权限不就好了 service.jar 用那个工具不行么

          1. 问一个问题说道:

            可以,就是单纯问问odex化框架的问题,过程中遇到PIE限制,安卓XDA的方法没有能解除。

          2. coderstory说道:

            从来没碰到过这种问题 odex有什么问题么? 你有没详细的说 论提问的哲学

      2. 问一个问题说道:

        servicescommiuiserverSecurityManagerService.smali[525,15] Error for input '? ': Invalid text(改了SecurityManagerService.smali的那个函数后似乎不太能反编译了)

        1. coderstory说道:

          改的有问题呗

  6. 好教程说道:

    deodex工具不能用了吗?合并后的classes.dex不翼而飞了

发表评论

电子邮件地址不会被公开。必填项已用 * 标注