吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 89565|回复: 284
收起左侧

[Android 原创] MIUI9绕开联网和插卡打开未知来源

    [复制链接]
qintangtao 发表于 2017-12-15 16:36
本帖最后由 qintangtao 于 2017-12-16 09:51 编辑

严重声明
本文的意图只有一个就是通过分析学习更多的逆向技术,如果有人利用本文知识和技术进行非法操作进行牟利,带来的任何法律责任都将由操作者本人承担,和本文作者无任何关系,最终还是希望大家能够秉着学习的心态阅读此文。

MIUI9绕开联网和插卡打开未知来源
最新MIUI9的设备通过PC手机助手安装APK,需要在设备上打开未知来源。
发现最新的MIUI9打开未知来源需要联网和插入SIM卡后才能打开。

* 用命令打开“未知来源”
          MIUI9绕开联网和插卡打开未知来源106.png
         MIUI9中加了权限,打开失败。因此需要手动打开

* 设置->更多设置->系统安全->未知来源
            MIUI9绕开联网和插卡打开未知来源158.png
   提示需要联网,联网后再次打开,又提示需要插入SIM
         看来是进行了网络检测和SIM卡检测
         看来只有老老实实的联网和插卡后才能打开未知来源了
         会不会有其它方式可以绕开呢?不能把,本地检测了网络和插卡,绕不过吧

*  pull“com.android.settings
          MIUI9绕开联网和插卡打开未知来源295.png

*  jadx查看下   
         拖进去居然没有反应,看来反编译失败了     
   解开apk后发现没有classes.dex     
   经过一番搜索,dex被提取并转换成oat了

*  pull oat
          MIUI9绕开联网和插卡打开未知来源401.png
         虽然是.odex结尾的,但其实是oat格式的文件

* oat转dex  
         oat是elf格式的文件并且包含了一个完整的dex  
         ExtractDexFromOatoat转换成dex
          MIUI9绕开联网和插卡打开未知来源503.png

*  jadx 打开 .dex
         居然还是打开失败
         经过一番折腾,是因为dex头中的035改成了037导致反编译失败
          MIUI9绕开联网和插卡打开未知来源564.png
         037改成035即可用jadx打开了
         我是把jadx解析dex用到的libdx-1.10.jar反编译后去掉了对035的校验

* apktool 反编译资源文件
          MIUI9绕开联网和插卡打开未知来源650.png

* 搜索“未知来源”
          MIUI9绕开联网和插卡打开未知来源664.png
         “install_applications”可疑

* 继续搜索“install_applications看在那个布局文件中出现
          MIUI9绕开联网和插卡打开未知来源732.png
         出现在security_settings_misc.xml
         
[XML] 纯文本查看 复制代码
<com.android.settings.MiuiRestrictedSwitchPreference android:persistent="false" android:title="@string/install_applications" android:key="toggle_install_applications"          android:summaryOn="@string/install_unknown_applications" android:summaryOff="@string/install_unknown_applications" style="?android:attr/preferenceScreenStyle" />

         可以看出com.android.settings.MiuiRestrictedSwitchPreference是小米自定义的没有android:id,可以看到有android:key有可能是根据这个key在程序中操作的

* jadx搜索toggle_install_applications
         
            MIUI9绕开联网和插卡打开未知来源1243.png
          MIUI9绕开联网和插卡打开未知来源1245.png
         com.android.settings.SecuritySettings找到2
         this.bGg = (MiuiRestrictedSwitchPreference) findPreference("toggle_install_applications");
         正如上面的猜想是通过key来获取MiuiRestrictedSwitchPreference对象
        
[Java] 纯文本查看 复制代码
 public boolean onPreferenceChange(Preference preference, Object obj) {        String key = preference.getKey();                     if ("toggle_install_applications".equals(key)) {            if (((Boolean) obj).booleanValue()) {                this.bGg.setChecked(false);                bsN();                z = false;            } else {                bsI(false);            }        }        return z;} 

         onPreferenceChange中响应事件
                  打开时调用bsN();
                  关闭时调用bsI(false);

* 跟踪bsN()
          MIUI9绕开联网和插卡打开未知来源1910.png    
         弹出确认框 可以看到上面关闭时也是调用的bsI
          MIUI9绕开联网和插卡打开未知来源1920.png

* 跟踪bsI()
             MIUI9绕开联网和插卡打开未知来源1951.png
         关闭:
                  
[Java] 纯文本查看 复制代码
Global.putInt(blI(), "install_non_market_apps", z ? 1 : 0);

         打开:
                 
[Java] 纯文本查看 复制代码
 Intent intent = new Intent("com.miui.securitycenter.action.UNKNOWN_SOURCE_VERIFY");  
intent.setPackage("com.miui.securitycenter"); 
startActivityForResult(intent, 1004);   


         startActivityForResult的第二个参数是请求码1044  
         应该是在onActivityResul中根据"com.miui.securitycenter"中设置的返回码来确定是否打开“未知来源”

* 跟踪onActivityResul()
          图片4.png
         第一个参数是请求码,第二个参数是返回码  
         可以看出当请求码=1004时,返回码=-1时打开“未知来源”
         看看com.miui.securitycenter”中做了什么

*  pull“com.miui.securitycenter”包才能继续跟踪了
            图片5.png

* pull “com.miui.securitycenter”的oat文件
            图片6.png

* 同样把oat转dex
            图片7.png

* apktool 反编译资源文件
            图片8.png

* AndroidManifest.xml搜索com.miui.securitycenter.action.UNKNOWN_SOURCE_VERIFY
          图片9.png
         找到相关activity “com.miui.permcenter.install.UnknownSourceVerifyActivity

* 用修改过的jadx打开SecurityCenter.dex(不校验dex头的035)
         找到UnknownSourceVerifyActivity
             图片10.png
         可以看到V()把返回码设置成了-1  
                  1VERSION.SDK_INT == 24 && !"mido".equals(str)  
                  2VERSION.SDK_INT == 25 && new ArrayList().contains(str)  
                  3T()
                   图片11.png
                  Build.DEVICE=tiffanyVERSION.SDK_INT=25  
                  前面两个条件满足就可以,但是在我测试的设备上不满足前面两个条件  
                  继续看T()

* 跟踪T(), 父类AdbInstallVerifyActivity的方法
          图片13.png

*  跟踪W()
          图片12.png
         此处判断了是否联网,没有联网则提示并finish掉

* 跟踪m
          图片14.png

* 跟踪 a.a(this.R.getApplicationContext(), hashMap));
          图片15.png

* 跟踪 com.miui.securityscan.utils.a.Jr(arg3);
          图片16.png
         获取android_id

* 跟踪 ((Map)v4).put("sim", a.b(arg3));
          图片17.png
         可以看到没有插卡返回“off”

* 跟踪 new i().al(jSONObject2.toString())
          图片18.png
         请求数据加密

* 跟踪 a.c()  
          图片19.png
         post请求  
         Urlthis.R.s
         在子类UnknownSourceVerifyActivitys赋值为http://srv.sec.miui.com/data/unknownSources

* Fiddler看一下
         HTTP/1.1 200 OK
         Server: Server/2.1.1
         Date: Fri, 08 Dec 2017 06:41:22 GMT
         Content-Length: 29
         Connection: keep-alive
         x-host-name: c00.bj
         x-sec-s: qXjqQ8Kf7TcFT2R9C6E3CxcbkG5L7a1H1jAH9co1OPbJ3Ciy5P68qznvRwOnr/AL5qVW6BddwZV6fG1zE0sxJT20EKWH+6B/vdzTXVBLFX3zic+CJvwOwQCGNHyGQmZ6Gd41xq1Mt3Izthve+0HQM/3TkFDkmUbLqrELpOGtut0=

         {"status":"0","message":"ok"}

         "http://srv.sec.miui.com/data/unknownSources"请求数据  
         当没有插入SIM卡的时候,则请求数据中sim=off时返回的status=0并且message提示需要插卡


* 根据返回的数据
         return jSONObject.optInt("status", -1) == 0 ? null : jSONObject.optString("message");
         Status=0时返回null,否则返回message

* 跟踪au(String str)
          图片20.png
         可以看到当str=null时调用了V() 将返回码设置成-1后并finish掉

* 根据上面的跟踪,看来并不是在本地校验sim卡是否存在而是在服务器端校验的  
         既然如此我们是否可以拦截求情返回status=0的数据呢?  
         当然是可以的  
         我们可以开启一个热点,并开启一个webserver,让手机连接这个热点,把相关请求转到webserver上并返回自定义的数据即可

* 开启热点并把“srv.sec.miui.com”添加到host
            图片21.png

* 使用QtWebServer 开发一个小的webserver
          图片22.png

* 断开热点机器上的外网   
         设备就不会联网激活

* 连接该热点  
         就可以把srv.sec.miui.com的请求转到QtWebServer 上  
         请求路径是/data/unknownSources”则返回{"status":"0","message":"ok"}
图片3.png
图片2.png
图片1.png
MIUI9绕开联网和插卡打开未知来源2916.png
MIUI9绕开联网和插卡打开未知来源2778.png
MIUI9绕开联网和插卡打开未知来源2629.png
MIUI9绕开联网和插卡打开未知来源2549.png
MIUI9绕开联网和插卡打开未知来源2528.png
MIUI9绕开联网和插卡打开未知来源2510.png
MIUI9绕开联网和插卡打开未知来源2466.png

免费评分

参与人数 96吾爱币 +99 热心值 +88 收起 理由
kelisi + 1 + 1 用心讨论,共获提升!
纨绔子弟 + 1 谢谢@Thanks!
debug_cat + 1 + 1 能否hook au,返回一个不是null的字符串?
xitian45 + 1 + 1 用心讨论,共获提升!
roybobo + 1 + 1 太牛了hhhhh
MistyRain + 1 + 1 035去校验的lib包可以提供吗
linqian + 1 + 1 我很赞同!
zlyb3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
52暗夜 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
王毛 + 1 + 1 谢谢@Thanks!
zhpt + 1 + 1 谢谢@Thanks!
穿透骨頭撫摸妳 + 2 + 1 卡米。。。
奥玛利亚 + 1 + 1 我很赞同!
djbljy + 1 + 1 求哪位大神把WebServer成品发布出来
夕魚 + 1 + 1 用心讨论,共获提升!
Modesty + 1 + 1 用心讨论,共获提升!
CrazyDoraemon + 1 + 1 我很赞同!
丁丁历险记 + 1 + 1 我很赞同!
Tim-52Pojie + 1 + 1 用心讨论,共获提升!
yangjinbobo + 1 + 1 用心讨论,共获提升!
终于注册到了啊 + 1 + 1 用心讨论,共获提升!
lamsouls + 1 + 1 热心回复!
小小微风smile + 1 + 1 鼓励转贴优秀软件安全工具和文档!
年华锦时 + 1 + 1 这个厉害了
a369111621 + 1 热心回复!
阿金斯 + 1 + 1 热心回复!
断了风筝的线 + 1 + 1 谢谢@Thanks!
hbwazxf + 1 + 1 楼主真是太牛了。分析的很详细
旋木过流年 + 1 + 1 用心讨论,共获提升!
hzy99 + 1 + 1 用心讨论,共获提升!
小飞虫 + 2 + 1 用心讨论,共获提升!
寒蝉鸣泣之时 + 1 + 1 用心讨论,共获提升!
f1367242857 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ruiyanha + 1 已答复!
没有如果儿 + 1 + 1 热心回复!
北海待雪来 + 1 + 1 谢谢@Thanks!
sznojue + 1 + 1 谢谢@Thanks!
z2019458641 + 1 + 1 谢谢@Thanks!
小醜 + 1 + 1 谢谢@Thanks!
LeadroyaL + 1 + 1 遇到过,分析的不错
felixyuan + 1 + 1 我很赞同!
jsrdx + 1 + 1 我很赞同!
可爱的小新萌 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
laughingsir38 + 1 + 1 我很赞同!
昵称怎么起9406 + 1 + 1 我尽力了,还是只能看懂最后两步
freedev100 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
B1aN + 1 + 1 谢谢@Thanks!
米小米 + 1 + 1 我很赞同!
不明真相的群众 + 1 + 1 谢谢@Thanks!
drw888 + 1 + 1 用心讨论,共获提升!
WYWZ + 1 + 1 谢谢@Thanks!
amtaia + 2 我很赞同!
Micky1005 + 1 + 1 我很赞同!
22222 + 1 谢谢@Thanks!
225298658 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Etin + 1 + 1 我很赞同!
gogogo2000 + 1 + 1 很好很强大,就是没发现有什么实际价值……
沙漠一滩水 + 1 + 1 谢谢@Thanks!
hyt19890908 + 1 + 1 我很赞同!
劣酒先生 + 1 + 1 我很赞同!
291236225 + 1 秀了一波技术啊,然而这个有什么用呢。。。
hyruur + 1 大神收我为徒吧
zhangjianfei + 1 + 1 我很赞同!
bpzm1987 + 1 + 1 热心回复!
a1016589353 + 1 + 1 我很赞同!
snccwt + 1 + 1 热心回复!
gxts588 + 1 我很赞同!
~Smile~ + 1 + 1 谢谢@Thanks!
lonely_coder + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
vc123 + 1 + 1 我很赞同!
skdxg + 1 + 1 谢谢@Thanks!
ftmovie + 1 + 1 已答复!
wei00514 + 1 鼓励转贴优秀软件安全工具和文档!
mrwinner + 1 + 1 鼓励转贴优秀软件安全工具和文档!
GsuhyFihx + 1 + 1 66
蓝色星空 + 1 + 1 已答复!
zhh4827 + 1 + 1 热心回复!
Hanae + 1 + 1 我很赞同!
zgcwkj + 1 + 1 虽然看不懂
一路吧 + 1 + 1 虽然看不懂
SomnusXZY + 1 + 1 热心回复!
孟坤软件 + 2 + 1 厉害
soyiC + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
www.52pojie.cn + 2 + 1 就是20个字:牛!
liuliu666 + 1 + 1 我很赞同!
sunnylds7 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
aken + 1 + 1 支持技术思路分享
吾爱_七哥 + 1 + 1 6 6 66 6 6 6 6 6 6楼主nb
qilelejia + 1 + 1 谢谢@Thanks!
52pojie3009 + 1 + 1 热心回复!
Mrwww + 1 + 1 MIUI 7 如何禁止系统更新?
zsyhn + 1 + 1 谢谢@Thanks!
【=筱筱=】 + 3 我很赞同!
610100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
拿破轮胎 + 2 + 1 已答复!
iamcjsyr + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

大蛇拉龟 发表于 2017-12-15 18:28
这个有什么用?
lan0mkdy 发表于 2017-12-26 08:14 来自手机
airwenlee 发表于 2017-12-15 19:09
怎么屏蔽MIUI9恶心的广告?切换程序经常会弹出京东或是苏宁广告

你这是软件自带的吧。。。不是系统广告。而且小米的广告都可以关的
15005560818 发表于 2017-12-15 17:15
兔子我是胡萝卜 发表于 2017-12-15 17:19
咦,帖子重复了?
hunanxiaom 发表于 2017-12-15 17:26
谢谢分享
朕很寂寞 发表于 2017-12-15 17:27
感谢分享,不过好像现在miui9现在开机不需要联网
不是呵呵 发表于 2017-12-15 18:34
确实666

airwenlee 发表于 2017-12-15 19:09
怎么屏蔽MIUI9恶心的广告?切换程序经常会弹出京东或是苏宁广告
随风飘落 发表于 2017-12-15 20:27
大神分析的就是到位
linclon 发表于 2017-12-15 20:44
厉害厉害,感谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 13:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表