Android 加壳App Demo

接上一篇...

本篇也是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的签名判定~

猜你喜欢

转载自www.cnblogs.com/george-cw/p/10300425.html