Android应用监控自身被卸载的几种姿势
原理就是在Linux系统中,父进程死亡,子进程会被init进程接管,并不会直接死亡,我们只需要fork一个子进程循环检测本应用文件夹是否存在或者使用Inotify机制检测应用卸载时发生的文件删除操作再或者监控日志等可以明显判断自身被卸载的特征即可 我们先来看如何使用Inotify机制来监控应用文件被删除的操作,先fork一个子进程,在子进程里初始化一个inot...
Mobile Security Researcher
原理就是在Linux系统中,父进程死亡,子进程会被init进程接管,并不会直接死亡,我们只需要fork一个子进程循环检测本应用文件夹是否存在或者使用Inotify机制检测应用卸载时发生的文件删除操作再或者监控日志等可以明显判断自身被卸载的特征即可 我们先来看如何使用Inotify机制来监控应用文件被删除的操作,先fork一个子进程,在子进程里初始化一个inot...
一种比较常规的反静态分析的方法,大概可以分为修改数据和修改指令两部分 第一步就是定位Dex在内存中的位置,所以我们来实现定位到关键数据的过程 最近Android Studio升级到了3.0,对NDK开发的支持做的还不错,直接在入口添加C++支持即可配置好NDK开发环境 我们先实现一个JNI_OnLoad,来实现自动执行而不是在Java层调用篡改Dex数据或...
到目前为止,我们实现的加壳方案是可以再进一步优化的,针对这点,咱们来聊一聊其中的一些不足之处:我们直接将整个APK文件加密后储存在assets文件夹下,然后其中的资源又拷贝了一份在壳工程中,这就造成了整个加壳后的APK文件非常大,而且我们在加载APK的时候,其实只对其中的Dex进行了加载,并没有加载其中的资源,这一点是因为我们已经把其中的资源都拷贝到壳工程里了,...
一般情况下,一个正常的APP都会有一个Application类,少有APP没有这个,那么我们加壳的时候就要处理这个Application 我们前面直接加上了自己的ProtectApplication,因为没有Application,所以直接就调用了入口的MainActivity,如果待加壳的应用存在Application,我们在加壳的时候,就需要先保存这个Ap...
我们在第一篇文章中简单的跑了一个很简单的壳,但是那种加密方式相当的挫,这里演示一种比较贴近现实的一种Demo:在开发完整个工程后,不使用新的APK去加载,而是提取Dex,加密后存到assets文件夹,资源文件等都不进行处理,然后重新写一个ProtectApplication入口,在这个入口进行原始Dex的解密加载 这样就解决掉了不能加载资源的问题 再进一步说...