ROM定制开发教程-APK反编译案例分析

service.jar删除APP校验

 

miui6版本修改方法:

 

反编译framework/services.jar,

定位到 \smali\com\miui\server\SecurityManagerService.smali文件,

搜索校验的包名”com.xiaomi.market“,

把以下语句删除,记得把:cond_0对应上下文逻辑修改。

 

    .line 243

    const-string v1, "android"

##############################

    const-string v2, "com.xiaomi.market"

 

    invoke-virtual {v0, v1, v2}, Landroid/content/pm/PackageManager;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I

 

    move-result v1

 

    if-eqz v1, :cond_0

 

    .line 244

    new-instance v1, Ljava/lang/RuntimeException;

 

    const-string v2, "System error : cannot find system app : com.xiaomi.market"

 

    invoke-direct {v1, v2}, Ljava/lang/RuntimeException;->(Ljava/lang/String;)V

 

    throw v1

 

    .line 248

########################

    :cond_0

    return-void

.end method

 

 

miui7版本修改方法:

 

反编译framework/services.jar,

定位到 \smali\com\miui\server\SecurityManagerService.smali文件,

搜索

.method private checkSystemSelfProtection(Z)V

 

.method private checkSystemSelfProtection(Z)V

    .locals 1

    .param p1, "onlyCore"    # Z

 

    .prologue

########################################

    .line 307

    new-instance v0, Lcom/miui/server/SecurityManagerService$2;

 

    invoke-direct {v0, p0, p1}, Lcom/miui/server/SecurityManagerService$2;->(Lcom/miui/server/SecurityManagerService;Z)V

 

    invoke-virtual {v0}, Lcom/miui/server/SecurityManagerService$2;->start()V

 

    .line 341

#############################

    return-void

.end method

 

####号之间的代码删除,并且删除framework下的

services.odex文件。

 

通用方案(去除所有校验):

 

打开SecurityManagerService.smali文件搜索checksystem定位到

 

然后删除

 

 

 

 

小米修改updater.apk屏蔽升级

 

实现效果:

点击【设置】-【关于手机】-【系统更新】选项:屏蔽升级提示,点击检查升级提示已经最新版,屏蔽下载完整包,选择本地升级包重启到recovery后提示刷机包校验失败。

 

实现方法:

反编译Updater.apk中的Updater2.smali,

第一步:屏蔽升级:

Updater2.smali找到onCheckFinish处,

增加如下代码,如上图红色框所示:

const/4 p3, 0x6

const/4 p2, 0x0

 

 

第二步:修改本地升级包路径:

根据选本地刷机包后logcat看到installInternalLocked中的p1是刷机包在recovery下的路径,修改之:

增加如下代码,如下图所示:

const-string p1, "/sd-card/base.zip"

 

 

 

 

注意framework/services.jar有校验updater.apk,所以需要去掉校验,否则会无法进入系统,反编译之:

SecurityManagerService$2.smali找到

你可能感兴趣的:(ROM定制开发教程-APK反编译案例分析)