接上一篇...android
本篇也是Android 應用安全防禦和逆向分析的一個demo源碼實現,git
由於書中寫的源碼地址找不到,寫的也是csdn的,下載極其不便,因此便想參考書裏內容寫一個上傳開源。github
加殼app主要有三部分,1. 源app 2. 加殼app 3. 加殼工具shell
其實就是把源apk加一層殼保護起來,反編譯看到的就只是加殼app安全
這個demo實用性不大,主要用來學習app
原理主要是在安裝殼app的時候將源app解密出來從新安裝吧,具體流程沒仔細研究~若有誤請指出函數
原理和問題有兩篇博客已詳細分析,故不寫了:工具
https://blog.csdn.net/androidsecurity/article/details/8809542#commentsedit學習
https://blog.csdn.net/itfootball/article/details/50962459gradle
要注意的地方:
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的簽名斷定~