美文网首页androidAndroid知识Android开发
反编译某软件直接进入微信二维码扫描界面

反编译某软件直接进入微信二维码扫描界面

作者: 妙法莲花1234 | 来源:发表于2017-07-06 21:48 被阅读1651次

    今天无意发现了一款软件,进去点了两下,竟然直接跳到了微信二维码扫描界面,喜悦之情难以掩饰,终于等到你...

    昨夜西风凋碧树

    没错,三个月之前,我需要这个技能,网上搜索了一番,得到如下代码:

        public static void toWeChatScan(Context context) {
            try {
                Uri uri = Uri.parse("weixin://");
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                context.startActivity(intent);
            } catch (Exception e) {
            }
        }
    

    然而新版本微信已经失效,只能进入到微信界面,不能打开二维码.独上高楼,望尽天涯路.

    衣带渐宽终不悔

    时间如流水般飞逝了两周,忽然打开了小米的扫一扫,这个软件技能真多,不仅可以扫码,还可以扫题,扫名片,扫文档,扫字翻译,这都不是重点,关键能直接进入微信和支付宝扫一扫.

    于是提取了这个apk(怎么提取呢,后面会写个文章,专门介绍那些安卓开发神器APP,颤抖吧...).反编译了下,这个app也没混淆,也没加固,哈哈哈,最新版不知道啥情况,不过可悲的是去掉了微信和支付宝扫一扫入口...

    反编译得到了如下代码:

        public static void toWechatScanFromMIUI(Context context) {
            String packageName = "com.tencent.mm";
            String activityName = "com.tencent.mm.plugin.scanner.ui.BaseScanUI";
            Intent intent;
            try {
                intent = new Intent();
                intent.setClassName(packageName, activityName);
                intent.setFlags(268435456);
                intent.setComponent(new ComponentName(packageName, activityName));
                context.startActivity(intent);
            } catch (Exception e) {
            }
        }
    

    这个可以直接进入微信扫一扫二维码 Activity, 怎么知道是这个 Activity 呢,期待神器祭出吧.然鹅,我的APP使用这个代码,同样只打开了微信界面,并没有卵.
    发生了什么,谷歌了一下,发现只有两种情况可以打开其他软件的 Activity:

    1. 目标 Activityexported 标签
    2. 需要权限 android.permission.START_ANY_ACTIVITY

    发现微信扫一扫这个 Activity 并没有 exported 标签,然后在小米扫一扫的清单文件里发现了上面那个神一般的权限,然而这个权限和系统有关系,不同的系统处理有些差异,具体未测试,在miui上不好使,有了系统权限肯定好使,而这个扫一扫就具有系统权限,为伊消得人憔悴.

    众里寻他千百度

    时间转眼就来到了七月份的前头,一切仍在他合适的轨道上运转,不偏不倚,不快不慢.

    就像那个很火的英文诗歌写的那样:

    New York is 3 hours ahead of California,
    but it does not make California slow.
    ……
    
    

    诗歌写的很棒,读起来也很舒服,内容更是不用多说。

    今天,一个普通应用打开了你,原来这就是你的样子.

    1. 使用反编译神器 jadx 破解,还好没加固,只是混淆了一下,希望还是有的
    2. 用显示任意 Activity 的神器找到该 Activity
    3. 还好代码不多,点击事件处理里跳转了一下,找到了下面的代码:
        public static void toWeChatScanDirect(Context context) {
            try {
                Intent intent = new Intent();
                intent.setComponent(new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI"));
                intent.putExtra("LauncherUI.From.Scaner.Shortcut", true);
                intent.setFlags(335544320);
                intent.setAction("android.intent.action.VIEW");
                context.startActivity(intent);
            } catch (Exception e) {
            }
        }
    

    测试了下,完美展现了你的样子.蓦然回首,原来,你在这里.

    相关文章

      网友评论

      • __Saber__:能不能把从二维码获取的信息当参数塞进去,直接就跳转到付款界面
      • 风化成石:<开发者助手> 这个神奇也挺好用的,对了,大神,intent.putExtra("LauncherUI.From.Scaner.Shortcut", true);
        intent.setFlags(335544320);
        这些数据是怎么来的呢?
        __Saber__:intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND | Intent.FLAG_ACTIVITY_CLEAR_TOP);
      • Lily小熊猫:师兄现在是安卓大牛啦~求带
        妙法莲花1234: @Lily小熊猫 哈哈,一起加油
      • QYang:帅,我更想知道用的神器是啥?这是渔啊:smiley:
        QYang:@追风917 坐等:innocent:
        妙法莲花1234: @QYang 最近几天会祭出😁

      本文标题:反编译某软件直接进入微信二维码扫描界面

      本文链接:https://www.haomeiwen.com/subject/mnykhxtx.html