雜談Android:不可實現(xiàn)的Android靜默安裝

喬欣

靜默安裝建车,就是apk在后臺悄悄地安裝扩借。很多流氓軟件喜歡干。但從現(xiàn)在的情況看缤至,只有root了的手機潮罪,或者你能搞到手機廠商的簽名,才能靜默安裝。
關(guān)于靜默安裝领斥,基本上有兩種情況嫉到。
1.root情況下靜默安裝
2.非root下面靜默安裝

root情況靜默安裝##

1.調(diào)用pm指令,下面就是調(diào)用pm指令(pm install -r)把/sdcard/haha.apk安裝掉月洛。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       runShellCommand("pm install -r  /sdcard/haha.apk")何恶; //執(zhí)行命令
    }


    private void runShellCommand(String command) {
        Process process = null;
        BufferedReader bufferedReader = null;
        StringBuilder mShellCommandSB =new StringBuilder();
        Log.d("wenfeng", "runShellCommand :" + command);
        mShellCommandSB.delete(0, mShellCommandSB.length());
        String[] cmd = new String[] { "/system/bin/sh", "-c", command }; //調(diào)用bin文件
        try {
            byte b[] = new byte[1024];
            process = Runtime.getRuntime().exec(cmd);
            bufferedReader = new BufferedReader(new InputStreamReader(
                    process.getInputStream()));
            String line;

            while ((line = bufferedReader.readLine()) != null) {
                mShellCommandSB.append(line);
            }
            Log.d("wenfeng", "runShellCommand result : " + mShellCommandSB.toString());
            process.waitFor();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    // TODO: handle exception
                }
            }

            if (process != null) {
                process.destroy();
            }
        }
    }

2.調(diào)用cp指令,把apk拷貝到data/app目錄下,把上面的runShellCommand("pm install -r /sdcard/haha.apk")替換成下面這句嚼黔。然后用戶下次重啟時细层,apk就會自動安裝。

runShellCommand("cp /sdcard/haha.apk /data/app")

非root下面靜默安裝##

1.調(diào)用輔助功能唬涧,跟搶紅包原理差不多疫赎。其實這種方式并不算嚴格的靜默安裝,因為用戶可以看到安裝的界面爵卒。很多應(yīng)用商店都用到這種方式批量安裝apk虚缎,下載后自動彈出安裝界面,然后自動幫你點擊安裝。就能搶紅包一樣实牡,自動打開紅包頁面陌僵,自動點擊紅包的道理一樣一樣的。
這個輔助功能最開始google設(shè)計是用于殘疾人的创坞,讓他們更加方便的使用手機碗短。一個應(yīng)用要獲取輔助功能,要在設(shè)置里面授權(quán)题涨。

Paste_Image.png

2.反射調(diào)用PackageManager
這個在百度搜索偎谁,大多數(shù)是出現(xiàn)這篇文章
Android 無需root實現(xiàn)apk的靜默安裝
關(guān)于這種方式,想法很好纲堵。
但是其實是不可行的巡雨。
而且文章的實現(xiàn)過于復(fù)雜了,其實不需要這么復(fù)雜席函,拉出一大坨類铐望。如果你有Android系統(tǒng)源碼的話,在源碼環(huán)境編譯只需要在Android.mk增加一句就可以了,把framework.jar包含進去編譯茂附,自然就可以找到那一大坨類正蛙。

LOCAL_JAVA_LIBRARIES := \
    framework \

然后就可以直接在代碼里面引用IPackageManager那些類了。

         public static void install()  
    {  
        String path = "sdcard";  
        String fileName = path + "/haha.apk";  
        File file = new File(fileName);  
          
        try {  
   
            Class<?> clazz = Class.forName("android.os.ServiceManager");  
            Method method = clazz.getMethod("getService", String.class);  
            IBinder iBinder = (IBinder) method.invoke(null, "package");  
            IPackageManager ipm = IPackageManager.Stub.asInterface(iBinder);  
            @SuppressWarnings("deprecation")  
            VerificationParams verificationParams = new VerificationParams(null, null, null, VerificationParams.NO_UID, null);  
            ipm.installPackageAsUser(fileName, null, 2, null, verificationParams, "armeabi-v7a",0);  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
  
    }  

上面我說這種方式是不可行的营曼,原因是:
1.installPackageAsUser會遠程調(diào)用PackageManagerService進行安裝乒验,但安裝前需要校驗權(quán)限,只有System權(quán)限以上才能通過校驗蒂阱。所以為了編譯System權(quán)限的app锻全,需要在AndroidManifest增加一句 android:sharedUserId="android.uid.system"

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.haha"
    android:sharedUserId="android.uid.system"
    android:versionName="V1.01" >

2.但你以為你這個System權(quán)限的app可以安裝到現(xiàn)實手機中嗎?不可能的蒜危,系統(tǒng)在安裝AndroidManifest包含android:sharedUserId="android.uid.system"的app時虱痕,都會首先看下app的簽名。app簽名不對直接就安裝失敗的辐赞。

安裝失敗.png

所以部翘,那篇文章的app根本不可能安裝到手機中去。除非响委,你能搞到手機廠家的簽名P滤肌!W阜纭夹囚!簽名這個可是重大機密,泄露可是要出人命的邀窃。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荸哟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鞍历,老刑警劉巖舵抹,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異劣砍,居然都是意外死亡惧蛹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門刑枝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來香嗓,“玉大人,你說我怎么就攤上這事装畅】坑椋” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵洁灵,是天一觀的道長饱岸。 經(jīng)常有香客問我,道長徽千,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任汤锨,我火速辦了婚禮双抽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闲礼。我一直安慰自己牍汹,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布柬泽。 她就那樣靜靜地躺著慎菲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锨并。 梳的紋絲不亂的頭發(fā)上露该,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音第煮,去河邊找鬼解幼。 笑死,一個胖子當(dāng)著我的面吹牛包警,可吹牛的內(nèi)容都是我干的撵摆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼害晦,長吁一口氣:“原來是場噩夢啊……” “哼特铝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鲫剿,失蹤者是張志新(化名)和其女友劉穎痒芝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牵素,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡严衬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笆呆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片请琳。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赠幕,靈堂內(nèi)的尸體忽然破棺而出俄精,到底是詐尸還是另有隱情,我是刑警寧澤榕堰,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布竖慧,位于F島的核電站,受9級特大地震影響逆屡,放射性物質(zhì)發(fā)生泄漏圾旨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一魏蔗、第九天 我趴在偏房一處隱蔽的房頂上張望砍的。 院中可真熱鬧,春花似錦莺治、人聲如沸廓鞠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽床佳。三九已至,卻和暖如春榄审,著一層夾襖步出監(jiān)牢的瞬間砌们,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工瘟判, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留怨绣,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓拷获,卻偏偏與公主長得像篮撑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子匆瓜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,264評論 25 707
  • 原文出處:http://www.reibang.com/writer#/notebooks/156026/note...
    超低空閱讀 48,701評論 46 120
  • 歸鄉(xiāng) 清夜獨燈明赢笨,草木隱蛐聲未蝌。 難得夜風(fēng)寒,攜雨摧夏盛茧妒。
    PoYee閱讀 105評論 0 3
  • 從高速路開始 駕照拿到兩個多月萧吠,第一次上路因為慌不擇路與別人發(fā)生刮蹭。至此桐筏,再沒有正兒八經(jīng)的上過路纸型。 國慶回家,走...
    潭客富林的家閱讀 299評論 0 1
  • 當(dāng)面試官在問你對XX行業(yè)有什么看法時梅忌,應(yīng)該怎么回答狰腌? 基本思路是:分三方去回答 第一,對C端牧氮,包括產(chǎn)品功能上的體驗...
    櫻桃小肥紙閱讀 2,700評論 0 1