# AndroidJar **Repository Path**: john_gao/android-jar ## Basic Information - **Project Name**: AndroidJar - **Description**: No description available - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-02-04 - **Last Updated**: 2024-02-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AndroidJar #### 介绍 这个模块的目的是动态加载, 平时调试第三方APK(逆向学习时),经常要重编译系统和下载,比较花时间. 使用frida+objection大部工作都很好, 但有遇到过几个有返调试检测. 不大会重新编译frida-gadget,就自己写个小插件,手动执行一下代码 #### 软件架构 软件的入口是在/framework/base/core/java/android/app/Activity.java 调用逻辑: ActivityThread::handleDumpActivity-> Activity::dump->Activity -> dumpInner ---file-Activity.java-- ...... dumpInner ..... if (args != null && args.length > 0) { ...... switch (args[0]) { case "--autofill": dumpAutofillManager(prefix, writer); return; case "--contentcapture": dumpContentCaptureManager(prefix, writer); return; case "--loadjar": try { String dataDir = this.getCacheDir().getAbsolutePath(); DexClassLoader loader = new DexClassLoader(dexPath,dataDir,null,this.getClassLoader()); Class mainClass = loader.loadClass(main); Object mainObj = mainClass.newInstance(); Object _args[] = {writer,this} mainClass.getDeclaredMethod("start",Activity.class,Object[].class).invoke(mainObj,activity,_args); } catch (Throwable e) { // throw new RuntimeException(e); } return; ...... } } --end-file- 扩展源码里 里的dumpsys actvity #### 安装教程 1. 下载aosp源码, 2. 修改:/framework/base/core/java/android/app/Activity.java 3. 编译下载 #### 使用说明 1. 编译生成 out.jar source build.sh 2. 安装到sdard adb push out/out.jar /sdcard 3. 运行插件: adb shell dumpsys activity cn.test.example/.MainActivity --loadjar /sdcard/out.jar com.test.plugin.MainActivity