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

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

昨夜西风凋碧树

没错,三个月以前,我须要这个技能,网上搜索了一番,获得以下代码:微信

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) {
        }
    }复制代码

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

衣带渐宽终不悔

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

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

反编译获得了以下代码:spa

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上很差使,有了系统权限确定好使,而这个扫一扫就具备系统权限,为伊消得人憔悴.code

众里寻他千百度

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

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

  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) {
        }
    }复制代码

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

相关文章
相关标签/搜索