lcz团队吧 关注:32贴子:1,111

【教程】OPPO手机去除ROOT后状态栏出现ROOT警告

只看楼主收藏回复

本尸吊丝360n4借人后被对方搞丢了,对方赔了个oppoa57t给我(血亏系列)然后root后发现状态栏会显示设备被root的警告,很恶心,百度了一下发现并没有去除的教程故自行研究了一下,成功解决,分享一下。理论上定制系统都差不多所以应该是Color OS通用,具体自测


IP属地:广东来自Android客户端1楼2018-09-02 01:57回复
    OPPO-A57t:Android6.0-Color OS3.0!


    IP属地:广东来自Android客户端2楼2018-09-02 01:57
    回复
      首先反编译SystemUI.apk,打开com/android/systemui/statusbar/policy/OppoHighlightUtil.smali,搜索这个方法:.method public setRootStatus(I)V,结果可能大致如下:
      .method public setRootStatus(I)V
      .locals 1
      .param p1, "rootstatus" # I
      .prologue
      .line 698
      iget v0, p0, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->mRootStatus:I
      if-eq p1, v0, :cond_0
      .line 699
      iput p1, p0, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->mRootStatus:I
      .line 700
      const/4 v0, -0x1
      if-ne p1, v0, :cond_1
      .line 701
      const/4 v0, 0x1
      invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->setRootMode(Z)V
      .line 706
      :cond_0
      :goto_0
      return-void
      .line 702
      :cond_1
      if-nez p1, :cond_0
      .line 703
      const/4 v0, 0x0
      invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->setRootMode(Z)V
      goto :goto_0
      .end method


      IP属地:广东来自Android客户端3楼2018-09-02 01:57
      回复
        首先,我们把if-eq p1, v0, :cond_0改成if-ne p1, v0, :cond_0,然后把 if-ne p1, v0, :cond_1改成if-eq p1, v0, :cond_1。(简单来说就是把前面的eq换成ne然后把后面的ne换成eq,就是换下条件而已)


        IP属地:广东来自Android客户端4楼2018-09-02 01:57
        回复(1)
          修改前:
          .method public setRootStatus(I)V
          .locals 1
          .param p1, "rootstatus" # I
          .prologue
          .line 698
          iget v0, p0, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->mRootStatus:I
          if-eq p1, v0, :cond_0
          .line 699
          iput p1, p0, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->mRootStatus:I
          .line 700
          const/4 v0, -0x1
          if-ne p1, v0, :cond_1
          .line 701
          const/4 v0, 0x1
          invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->setRootMode(Z)V
          .line 706
          :cond_0
          :goto_0
          return-void
          .line 702
          :cond_1
          if-nez p1, :cond_0
          .line 703
          const/4 v0, 0x0
          invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->setRootMode(Z)V
          goto :goto_0
          .end method


          IP属地:广东来自Android客户端5楼2018-09-02 01:58
          回复
            修改后:
            .method public setRootStatus(I)V
            .locals 1
            .param p1, "rootstatus" # I
            .prologue
            .line 698
            iget v0, p0, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->mRootStatus:I
            if-ne p1, v0, :cond_0
            .line 699
            iput p1, p0, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->mRootStatus:I
            .line 700
            const/4 v0, -0x1
            if-eq p1, v0, :cond_1
            .line 701
            const/4 v0, 0x1
            invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->setRootMode(Z)V
            .line 706
            :cond_0
            :goto_0
            return-void
            .line 702
            :cond_1
            if-nez p1, :cond_0
            .line 703
            const/4 v0, 0x0
            invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->setRootMode(Z)V
            goto :goto_0
            .end method


            IP属地:广东来自Android客户端6楼2018-09-02 01:58
            回复
              完成,回编译并替换


              IP属地:广东来自Android客户端7楼2018-09-02 01:58
              回复
                交代下解决此问题的思路吧,首先root后状态栏会变红且会出现“发现您的手机被ROOT”的提示,然后我就去values/values-zh-rCN/strings.xml下搜索“发现您的手机被ROOT”获得结果: <string name="root_dialog_title">发现您的手机被ROOT</string>,然后在values/public.xml下搜索“root_dialog_title”获得<string name="root_dialog_title">发现您的手机被ROOT</string>的id值,然后直接在smali里搜索root,你会发现无结果,说明他的root判断并非是单独的smali文件,于是乎我们便打开我们的中老年妇女之友com/android/systemui/statusbar/phone/PhoneStatusBar.smali搜索“root_dialog_title”的id0x7f0900ce,然后会发现没结果!于是乎便试试其他关键字id逐一测试后发现依旧无果,那么我们倒回来看<string name="root_dialog_title">发现您的手机被ROOT</string>,我们会发现oppo并没有对root用别的英文修饰或者代替!那么我们便直接在妇女之友里搜索"root",duang的一声!有了! 你会发现如下一句跳转语句:
                invoke-virtual {v6}, Lcom/android/systemui/statusbar/policy/OppoHighlightUtil;->isRootMode()Z
                于是乎我们便跳到com/android/systemui/statusbar/policy/OppoHighlightUtil.smali,发现果然大有收获!然后便开始修改之路!
                over!有时候教程并不重要重要的是教程是如何诞生的,教程作者的分析思路是如何的!不懂smali没关系 百度很多讲解,你随时可以搜索研究!希望你能有所收获!


                IP属地:广东来自Android客户端8楼2018-09-02 01:58
                回复
                  byLCZ-反清复明


                  IP属地:广东来自Android客户端9楼2018-09-02 01:58
                  回复
                    如有转载注明下出处,谢谢?


                    IP属地:广东来自Android客户端10楼2018-09-02 01:59
                    回复
                      逼话少说,开发票


                      IP属地:湖南来自Android客户端11楼2018-09-02 07:15
                      收起回复
                        前排


                        IP属地:河南来自iPhone客户端12楼2018-09-02 22:18
                        收起回复
                          围观


                          IP属地:河南来自iPhone客户端13楼2018-09-02 22:19
                          回复


                            IP属地:上海来自iPhone客户端14楼2018-09-02 22:54
                            收起回复
                              看不懂,能加Q教我下?


                              15楼2018-09-29 12:15
                              收起回复