反編譯某軟件直接進入微信二維碼掃描界面

今天無心發現了一款軟件,進去點了兩下,居然直接跳到了微信二維碼掃描界面,喜悅之情難以掩飾,終於等到你...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) {
        }
    }複製代碼

測試了下,完美展示了你的樣子.驀然回首,原來,你在這裏.

相關文章
相關標籤/搜索