10 2022 档案
摘要:被动调用 以自实现的抽取壳为例,对Test01.proc1函数进行抽空,但这次不同的是此Test01类在apk加载的过程中并不会被加载。通过之前被动调用的方式dump dex发现此函数还是被抽空的状态。 总结:单单通过在LoadMethod调用后进行dump dex是一种被动调用的脱壳手段。因为AP
阅读全文
摘要:AndroidKiller查看此apk发现入口Activity找不到,说明此apk被加壳了。 接着查看apk反编译后的代码,发现使用的XX的乐固。 首先尝试在DEX文件加载过程中进行hook,例如hook DexFileLoader::OpenCommon。然后dump下来的dex进行分析发现所有的
阅读全文
摘要:一代壳主要是使用dex整体加密技术,无论是使用DexClassLoader从文件中动态加载dex还是使用InMemoryDexClassloader从内存中加载dex文件,dex文件在被加载后在内存中一定是一个解密后完整的dex文件。脱壳的方法就是找到这个dex文件并dump下来,大多数一代壳为了防
阅读全文
摘要:编译android源码 这里使用的是ubuntu18.04虚拟机进行编译,虚拟机先进行换源。(下载和编译代码需要200多g的空间,需要预留) sudo gedit /etc/apt/sources.list 执行上述命令后在文件开始加上 deb http://mirrors.aliyun.com/u
阅读全文
摘要:ActivityThread在handlebindapplication中执行完Application的初始化之后会继续进入到消息循环中接收AMS(activity manager service)启动activity的消息。AMS首先会发送启动入口Activity的消息,然后ActivityThr
阅读全文
摘要:# 一代壳dex整体加固 第一代壳主要是对dex/apk文件整体加密,然后自定义类加载器动态加载dex/apk文件并执行。在动态加载dex/apk文件的时候有落地加载和不落地加载,落地加载就是通过DexClassLoader从磁盘加载dex/apk文件,不落地加载就是通过InMemoryDexCla
阅读全文
摘要:Dex文件加载过程 PathClassLoader 和 DexClassLoader都可以加载dex文件,其对应的基类都是BaseDexClassLoader。在new一个PathClassLoader/DexClassLoader对象时就会调用其对应的构造函数,然后调用父类BaseDexClass
阅读全文
摘要:android应用程序启动流程 当在launcher进程(home进程)中点击一个应用的图标时其会调用startActivity,然后会通过Binder与system_server系统进程跨进程通讯。system_server会调用Process.start开始启动一个新进程。Process.sta
阅读全文
摘要:## java JVM中有三个初始的类加载器:引导类加载器BootStrapClassLoader,扩展类加载器ExterntionsClassLoader,应用程序类加载器ApplicationClassLoader。 * 引导类加载器BootStrapClassLoader是顶层类加载器,负责加
阅读全文
摘要:检测调试相关文件android_server等 int SearchFile(std::string file_path) { int ret = 0; // fork进程检测 std::string command = "cat "; command.append(file_path.c_str(
阅读全文
摘要:# android平台的ELF hook技术  ## LD_PRELOAD hook linker程序在对elf可执
阅读全文
摘要:android平台的so注入技术 LD_PRELOAD注入 LD_PRELOAD是linux的系统环境变量,因为android基于linux内核所以此环境变量依然存在。当linker初始化时会获取首先获取LD_PRELOAD指向的so库然后再获取elf文件的其他依赖库,所以LD_PRELOAD指向的
阅读全文