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

admin2025-07-29 23:22:48世界杯比赛赛

这篇是适配MIUI8的教程 ?代码和工具都更新了

自己先安装JRE或JDK ?配置java运行时环境变量

基本步骤

ROM下载

http://www.miui.com/download.html

从这里下载对应机型的开发版或者稳定版

然后用winrar解压卡刷包

高版本的rom已经使用new.dat的形式封装system分区了

所以需要下载SystemExtractor解压system.new.dat

解包后将vendor\app下的文件夹扔到app文件夹里面

解压工具下载地址:?

http://forum.xda-developers.com/android/software-hacking/tool-tool-unpack-repack-imgsystem-dat-t3280740

*需要安装py和jre

解压后使用SVADeodexerForArtx32_v4进行deodex操作

过程中会报几个错误,无视掉.然后删除框架里的miui-update.jar

deodex工具下载地址:

http://pan.baidu.com/s/1bo3zT6Z

到此 系统解包好了 也deodex完毕了 可以开始你的修改计划了

比如删除不需要的app 删除系统里的recovery等等。

扩展修改

下面提供一些反编译修改的例子供参考

基础:反编译步骤

所需工具:

工具 apkdb

编辑工具 ?nptepad++

相关函数请使用文件夹搜索功能 搜索整个反编译后smali文件夹

下面的内容说明:

红色表示修改的文件

黄色表示修改的smali的路径(反编译后的)

灰绿色表示smali文件的文件名

绿色表示修改的内容 :修改前字符串 -> 修改后的字符串,如果是方法 则是修改后的方法

如果是函数的话 ?直接替换原来的函数就好了 注意下入参 可能有重载

提示:仅修改代码可直接反编译

services.jar

com/miui/server -->

SecurityManagerService$1.smali (也可能是SecurityManagerService$2.smali)-> ? ?(解决删除app导致卡米的问题)

?修改验证函数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

?这个是平台签名校验

.method private checkPlatformSignature([Landroid/content/pm/Signature;)V

.registers 9

.param p1, "signatures" # [Landroid/content/pm/Signature;

.prologue

return-void

.end method

ThemeManager.apk (主题破解)

思路是删除函数主体的校验代码直接返回空 ?强迫症的全局搜索这个函数的调用 ?把调用全删了 然后删除这个函数

com/android/thememanager/util

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

?

.method protected isLegal()Z

.registers 2

.prologue

? ? const/4 v0, 0x1

? ? return v0

.end method

com/android/thememanager/controller/online

drmservice.smali

.method public isLegal(Lcom/android/thememanager/model/Resource;)Lmiui/drm/DrmManager$DrmResult;

.registers 17

.param p1, "origin" # Lcom/android/thememanager/model/Resource;

.prologue

sget-object v0, Lmiui/drm/DrmManager$DrmResult;->DRM_SUCCESS:Lmiui/drm/DrmManager$DrmResult;

? return-object v0

.end method

Settings.apk ?(去除设置里的更新菜单)?

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修改工具

自己解包boot,然后编辑文件文件?fstab.qcom

删除第八行的字符串“,verify” //去除system分区验证

修改第九行的字符串“forceencrypt=footer”为“encryptable=footer”//去除强制加密分区

具体如图

打包rom

论机型而定吧

友情链接