接上一篇...
本篇也是Android 應用安全防護和逆向分析的一個demo源碼實現,
因為書中寫的源碼地址找不到,寫的也是csdn的,下載極其不便,所以便想參考書里內容寫一個上傳開源。
加殼app主要有三部分,1. 源app 2. 加殼app 3. 加殼工具
其實就是把源apk加一層殼保護起來,反編譯看到的就只是加殼app
這個demo實用性不大,主要用來學習
原理主要是在安裝殼app的時候將源app解密出來重新安裝吧,具體流程沒仔細研究~如有誤請指出
原理和問題有兩篇博客已詳細分析,故不寫了:
https://blog.csdn.net/androidsecurity/article/details/8809542#commentsedit
https://blog.csdn.net/itfootball/article/details/50962459
要注意的地方:
AndroidManifest.xml中
<meta-data android:name="APPLICATION_CLASS_NAME" android:value="com.example.signatureprotect.MyApplication"/>
這里是源app的Application包名和類名
protected void attachBaseContext(Context base) 函數中
RefInvoke.setFieldOjbect("android.app.LoadedApk", "mClassLoader", wr.get(), dLoader);
Object actObj = dLoader.loadClass("com.example.signatureprotect.MainActivity");
源app的包名和類名
加殼app和源app的res文件是一模一樣的
注意這兩個app編譯的resID也要一樣才行,不然會找不到資源,兩個app 的gradle的版本不一樣可能會導致編譯的resID不一樣
加殼工具:
主要是將app按照一定的格式重新組合
我是參考這里改了一點點東西:
https://github.com/vbanqi/shellApk/tree/master/unshell/src/com/android/dexunshell
最后,源碼路徑:
https://github.com/george-cw/AppAddShellDemo
因為使用的源碼app是之前的使用簽名保護的app,所以要將加殼app的簽名用於源app的簽名判定~