资讯动态

360加固脱壳失败复盘-CSDN

发布时间:2026/10/13 23:35:09 来源:尧图企业网站定制
3 天脱壳 360 v4 失败复盘Frida 静态脱壳的现代加固对抗样本com.weixikeji.privatecameraV2v4.3.314.4 MB360 加固a64 分支 私有加密双层壳。目标脱壳、反编译真 dex、去广告重打包。结果3 天投入工具链跑通、业务类能列出但真 dex 从始至终没 dump 到字节。放弃 Frida 静态脱壳改走行为分析路线。本文记录样本剖析、工具链踩坑、失败尝试、结论和可复用经验供同类逆向任务参考。一、结论先行如果遇到 360 v4 加固的现代 Applibjiagu_a64.sona.czl.jgapp先看 4 条硬结论Frida 版本必须锁 15.2.2。Frida 17.x 系列砍掉了 Java 桥Java.perform直接报undefined对 Android 脱壳无意义。老教程 hookDexFile.loadDex/openDexFile一次都不会触发。360 v4 走 ART 内部接口ArtDexFileLoader::Open/ClassLinker::DefineClass完全绕开 Java 层 DexFile 对象。磁盘上写的 tmp.dex 是 284 字节的空壳诱饵——class_defs_size1只有一个Lcom/thirdparty/dex/a;。真 dex 不落盘。内存里扫不到 dex magicdex\n035\0——2252 个 region 扫 0 命中。字节在内存里根本不存在。360 v4 通过 JNI 直接把解密后的字节喂给 ART字节被ClassLinker立即吃进 ClassDef 表buffer 随即清零。这就是 Frida 静态脱壳失败的物理原因。剩下三条路Ghidra 静态逆libjiagu_a64.so1-2 天/ 放弃脱 dex 做行为分析2 小时/ 换工具或换目标。二、样本深度剖析2.1 APK 加固层结构assets/libjiagu_a64.so 876 KB ← 实际入口a64 现代 360 加固分支 assets/libjiagu.so 696 KB ← arm32 备用 assets/libjiagu_x64.so 840 KB assets/libjiagu_x86.so 745 KB assets/na.czl 2094 B ← 加密后的 dex 载荷 assets/.jgapp 16 B ← 密钥指纹 classes.dex 6.7 MB ← 壳代码不是业务代码 lib/arm64-v8a/libEncryptor.so 75 KB ← 二次私有加密 lib/arm64-v8a/libtobEmbedEncrypt.so 10 KB ← 另一私有加密双层壳结构360 外壳 私有加密层。真 dex 被两层加密360 解密一层私有加密再解密一层才得到明文 dex。2.2 签名特征META-INF/KEY0.SF 191 KB META-INF/KEY0.RSA 1.3 KB META-INF/MANIFEST.MF 191 KBKEY0是默认 keystore 名自建 keystore 签名非正规厂商或 Play 签名——重打包的常见特征。2.3 360 壳的反制措施从 libjiagu_a64.so 字符串提取/proc/self/maps 正则扫描 : %lx-%lx %*s %*x %*x:%*x %*d%n ← 扫 Frida/Xposed 特征 libmono.so 检测 : Xposed/Substrate 特征 fake-libs 检测 : 防 fake-libs 注入 inotify_init inotify_add_watch : 监控 APK 目录修改 - IN_MODIFY - IN_CLOSE_WRITE - IN_DELETE - IN_ATTRIB sigaction on SIGSEGV : 崩溃伪装 pthread_create 后台线程 : 反调试常驻线程这些检测项是运行时做不是编译期。Frida 15.2.2 目前没被识别——app 在 Frida attach 下正常启动、业务类正常加载。但 Frida 17.x 或某些 gadget 变种会被识别。2.4 SDK 堆叠清单从 APK 实测类别SDK关键文件/类广告穿山甲 Panglecom.bytedance.sdk.openadsdk.*、libbuffer_pg.so、libfile_lock_pg.so下载字节独立进程下载器com.ss.android.downloadlib.*、com.ss.android.socialbase.*埋点友盟libumeng-spy.so(239 KB)埋点字节 metaseclibmetasec_ml.so(899 KB)、com.bytedance.embedapplog.collector.Collector反作弊MSAcom.asus.msa.SupplementaryDID.ACCESS崩溃字节 crashcom.bytedance.tea.crash.*、libcrashsdk.so登录腾讯开放com.tencent.tauth.AuthActivity登录微信 SDKcom.weixikeji.privatecamera.wxapi.WXEntryActivity支付微信支付WXPayEntryActivity支付支付宝H5PayActivity、AlipayResultActivity云BmobBmobContentProvider、BmobSyncService图像Glidelibnative-imagetranscoder.so、libimagepipeline.so滤镜gpuimagelibnative-filters.so、libgifimage.so三、流氓软件特征清单实测非推测以下每一项都是从 APK 里实测到的不是推测。3.1 桌面伪装入口4 个com.weixikeji.privatecamera.DefaultEntry com.weixikeji.privatecamera.ReplaceCalculator ← 伪装计算器 com.weixikeji.privatecamera.ReplaceBrowser ← 伪装浏览器 com.weixikeji.privatecamera.ReplaceCompass ← 伪装指南针配合权限com.android.launcher.permission.INSTALL_SHORTCUT com.android.launcher.permission.UNINSTALL_SHORTCUT android.permission.INSTALL_SHORTCUT android.permission.UNINSTALL_SHORTCUT行为往桌面偷偷塞假快捷方式用户以为是计算器点了实际进了这个 App。工信部通报名单里大量此类。3.2 无障碍服务service com.weixikeji.privatecamera.service.AccessibilityOverlayService permission android.permission.BIND_ACCESSIBILITY_SERVICE action android.accessibilityservice.AccessibilityService名字带Overlay。此类服务能读取屏幕上所有文字含短信验证码、银行 App 数据自动点击按钮拦截输入法内容模拟器上未启用enabled_accessibility_services null启动时可能会引导用户开启。3.3 静默安装 系统设置 悬浮窗android.permission.REQUEST_INSTALL_PACKAGES ← 弹框要求安装 APK android.permission.WRITE_SETTINGS ← 改系统设置关广告、关防护 android.permission.SYSTEM_ALERT_WINDOW ← 悬浮窗覆盖3.4 独立进程下载服务service com.ss.android.socialbase.downloader.downloader.IndependentProcessDownloadService action com.ss.android.socialbase.downloader.remote字节下载 SDK 的独立进程版本——主进程被杀后仍继续下载。用途就是后台静默下载其它 APK。配套组件com.ss.android.socialbase.appdownloader.DownloadHandlerService com.ss.android.socialbase.appdownloader.DownloadTaskDeleteActivity com.ss.android.socialbase.appdownloader.view.JumpUnknownSourceActivity com.ss.android.socialbase.downloader.impls.DownloadHandleService com.ss.android.socialbase.downloader.impls.SqlDownloadCacheService com.ss.android.downloadlib.addownload.compliance.AppPrivacyPolicyActivity com.ss.android.downloadlib.addownload.compliance.AppDetailInfoActivityJumpUnknownSourceActivity就是这个“跳到未知来源应用安装” 的诱导页面。3.5 悬浮球com.weixikeji.privatecamera.OneKeyFloatBall com.weixikeji.privatecamera.activity.FloatBallActivity com.weixikeji.privatecamera.service.FloatBallService com.yhao.floatwindow.FloatActivity ← 第三方悬浮窗库常驻前台服务 悬浮窗杀不干净一直耗电。3.6 三重设备指纹上报友盟 → libumeng-spy.so (239 KB) 字节 metasec → libmetasec_ml.so (899 KB) com.bytedance.embedapplog.collector.Collector MSA → com.asus.msa.SupplementaryDID.ACCESS三重上报说明开发者非常在意设备指纹——广告归因、反作弊、推送都要用。3.7 WebView JS Bridgeassets/QMUIWebviewBridge.js 2887 B assets/protocol.htm 26114 B assets/tt_mime_type.pro 53011 B com.weixikeji.privatecamera.activity.WebActivity自定义 JS Bridge——如果 WebView 加载远程 URL服务端改 HTML 等于远程执行任意代码。3.8 完整功能清单从 Manifest 抽出相机PictureTakeActivity、MediaViewActivity、MediaPlayActivity视频VideoRecorderActivity、VideoRecorder2Activity、VideoRecRouteActivity音频AudioRecorderActivity、AudioPlayActivity、AudioService、MusicService相册SinglePictureViewActivity、RecycleMediaActivity黑屏SuperBlackActivity、SuperBlackService、BlackActivity私密功能全屏黑盖住 App 内容账户LoginActivity、RegisterActivity、AccountManageActivity、LoginPsdModifyActivity、AccountFindActivity、PayOrderActivity、GesturePsdManagerActivity一键快捷OneKeyTakePic、OneKeyRecAudio、OneKeyRecMov、OneKeyFloatBall、OneKeySettingsActivity支付PayOrderActivity图标伪装ReplaceIconActivity“SuperBlack” 是这类 App 的招牌功能全屏黑色遮罩盖住 App 内容防止别人偷看。技术上很糙容易被截屏绕过。3.9 res 资源名全乱码res/-1.webp res/05.xml res/aA.png res/zR.webp正常 App 是res/drawable/ic_launcher.xml。这里全是无意义字符——故意防静态分析。配合 jadx 反编译更难定位。四、壳的运行时实际行为关键技术发现这是本次逆向最重要的一节。360 v4 的加载机制不是老教程描述的那样。4.1 磁盘产物.jiagu/目录tmp.dex 284 B ← 空壳class_defs1只有 Lcom/thirdparty/dex/a; tmp.odex 17024 B ← 空 odex tmp.vdex 376 B ← 空 vdex libjiagu.so 745468 B ← arm32 壳核心 libjiagu_64.so 840728 B ← arm64 壳核心无嵌入 dex实测tmp.dex展开看结构magic : dex\n035\0 header_sz : 0x70 strings : 1 ← 只有 1 条字符串 class_defs : 1 ← 只有 1 个类唯一类是Lcom/thirdparty/dex/a;继承Ljava/lang/Object;——给静态扫描看的诱饵。4.2 内存扫描关键反证扫整个进程找字节序列646578 2e0a30 3335 00dex\n035\0时间点扫描 regiondex magic 命中t8s22520t15s22600t20s22650结论解密后、加载进 ART 前内存里根本不存在可读的 dex magic。4.3 Java 层却能列出业务类Java.enumerateLoadedClassesSync()返回com.weixikeji.privatecamera.activity.SplashActivity com.weixikeji.privatecamera.activity.AppBaseActivity com.weixikeji.privatecamera.service.AccessibilityOverlayService com.weixikeji.privatecamera.activity.WebActivity com.bytedance.sdk.openadsdk.TTAdSdk ... 共 10655 个业务类4.4 DexFile 实例枚举为空Java.choose(dalvik.system.DexFile)只返回 1 个实例指向 284 B 空壳0 个业务类。4.5 加载机制推断结合以上证据libjiagu_a64.so 从 na.czl 解密出真 dex 字节 ↓ JNI 调用 ART 内部接口 art::ArtDexFileLoader::Open(const uint8_t* data, size_t length, ...) 或 art::ClassLinker::DefineClass(art::Thread*, ...) ↓ dex 字节直接被吃进 ART 的 ClassDef 表 ↓ 360 立即把内存 buffer 清零 ↓ 磁盘上写一个 284 B 空壳 dex 给静态扫描看 ↓ Java 层 DexFile 对象是假的指向空壳要 dump 到真 dex必须 hook 在解密函数出口libjiagu 内部或者 ART 内部接口的极早期。这两条路都需要反汇编libjiagu_a64.so找到入口是 Ghidra 级别的活。4.6 相关 ART 内部接口step6 提取共 232 个导出_ZN3art16ArtDexFileLoader4OpenEPKhmRKNSt3__112basic_stringIc...// Open from memory bytes_ZN3art16ArtDexFileLoader4OpenERKNSt3__112basic_stringIc...// Open from file_ZN3art16ArtDexFileLoader10OpenCommonEPKhm...// OpenCommon_ZNK3art16ArtDexFileLoader22OpenAllDexFilesFromZipE...// 从 APK ZIP 加载_ZNK3art16ArtDexFileLoader21OpenOneDexFileFromZipE...// 单个 dex_ZN3art11ClassLinker11DefineClassEPNS_6ThreadEPKcmNS_6HandleI...// 直接定义类_ZN3art11ClassLinker21CreatePathClassLoaderEPNS_6ThreadE...// 建自定义 ClassLoader_ZN3art16OatFileAssistant12LoadDexFilesE...// OatFile 加载_ZN3art11ClassLinker17OpenImageDexFilesEPNS_2gc5space10ImageSpaceE...五、工具链踩坑实录5.1 Frida 版本坑17.x 完全不能用按网上教程装 Frida 17.23.3跑Java.perform(function() { ... })直接报ReferenceError: Java is not defined一开始以为是客户端/服务端版本不匹配反复降级升级折腾了半天。真相是 Frida 17 系列砍掉了 Java 桥——不是 bug是设计变更。结论Android 脱壳必须锁 Frida 15.2.2。Python 包frida15.2.2frida-server 也要 15.2.2 对应架构版本。5.2 Frida 15.2.2 的四个不显眼的坑坑 1args不是数组// ❌ RangeError: invalid array indexvarxsArray.prototype.slice.call(args);// ✅ 用 arguments.length 直接索引varnarguments.length;vara0args[0];坑 2Java.enumerateInstances()不存在// ❌ TypeError: not a functionJava.enumerateInstances(dalvik.system.DexFile,...);// ✅ 用 Java.chooseJava.choose(dalvik.system.DexFile,{onMatch:...,onComplete:...});坑 3Process.enumerateRanges({protect:true, coalesce:true})会过滤可读 region。做全内存扫描必须用裸Process.enumerateRanges()。坑 4不要在Interceptor.onEnter里用Array.from(args)——args是 NativePointer 集合不是数组某些参数抛异常。5.3 FDE 挂死frida-dexdump2.0.1 装上后一直挂死在[] Searching...。查 agent.js 发现是 webpack 打包base64 混淆改不动。Java.enumerateInstances在里面被调用会抛TypeError: not a function。结论FDE 2.0.1 对现代加固不可用。用自写脚本或 FDE2D/FART。5.4 网上老教程的三段重复 bug翻 GitHub 上流传的360 脱壳 Frida 脚本几乎每份都有完全相同的三个 bug而且是同一个函数里复制粘贴 3 遍Bug 1Java 类没Java.use()// ❌ ReferenceError: FileOutputStream is not definedvarfoutnewFileOutputStream.$new(p);varfisnewFileInputStream.$new(f);// ✅varFileOutputStreamJava.use(java.io.FileOutputStream);varFileInputStreamJava.use(java.io.FileInputStream);Bug 2读文件循环变量错varo0,n0;while(nf.length()){// n 永远 0varrfis.read(b,o,f.length()-o);if(r0)break;on;// ❌ 应该是 o r写成 n 等于 0}// 结果while 恒真读到 -1 才 break最终 isDex(b, 0) 恒 false// 即使文件读到了也永远不会 dumpBug 3Hook 点根本不对老教程 hook 的三个点DexFile.loadDexDexFile(String, String)构造器DexFile.openDexFile这三个是360 v3 之前 / 梆梆 v4 之前的老壳用的。现代 360 v4本样本的 a64 分支完全不走 Java 层 DexFile。这三个 hook一次都不会被触发。教训翻 GitHub 找XX 加固脱壳 Frida 脚本时先看时间戳。2019 年以前的教程基本都是照搬2024 年以后写的才有用。六、5 轮脱壳尝试全部失败#方法工具/手段结果1通用 dex dumpfrida-dexdump2.0.1挂死在[] Searching...。agent.js 是 webpack 混淆的2全内存扫 dex magic自写脚本扫 2252 region0 命中。dex 字节不在内存里3Java 层 DexFile 枚举Java.choose(dalvik.system.DexFile)只找到 1 个空壳 DexFile284 B 那个0 个业务类4全量 hook libart dex 导出hook 232 个libart.so里 dex 相关导出脚本崩了。Array.prototype.slice.call(args)用法错RangeError5定向 hook ART 内部接口hookArtDexFileLoader.Open*uncompressdlopen未跑通。脚本还有 bugargs处理不对没有一轮成功。360 v4 不是难脱是用 Frida 静态脱壳这条路就不成立。为什么全灭第 1 轮FDE 是黑盒看不到内部逻辑第 2 轮dex 字节在内存里根本不以 plaintext 存在第 3 轮DexFile 是空壳业务类走 ART 内部第 4 轮脚本args处理错Frida API 坑未摸清第 5 轮脚本未跑通且就算跑通 hook 时机也晚了360 已经清零 buffer根本原因要 dump 到真 dex得 hook 在解密函数出口libjiagu 内部或者ART 内部接口的极早期。前者需要反汇编libjiagu_a64.so是 Ghidra 级别的活。后者 hook 时机极早等Interceptor.attach生效时字节已经被吃进 ClassDef 了。七、什么时候该放弃 Frida 静态脱壳360 v4 只是难脱的例子。以下信号出现时Frida 静态脱壳就该放弃7.1 五个放弃信号磁盘上写的 tmp.dex 是几百字节的小文件——十有八九是诱饵enumerateLoadedClassesSync()能看到业务类但Java.choose(dalvik.system.DexFile)找不到——真类不走 Java 层 DexFile全内存扫 dex magic 命中 0——字节在内存里根本不存在libjiagu_a64.so里搜不到业务类名——dex 不是嵌在 SO 里壳核心libjiagu_64.so里搜dex\n035\0命中 0——不是加密版 dex 存在7.2 30 分钟判断流程拿到新样本30 分钟内判断该不该投入脱壳1. apktool d 看 assets/libjiagu*.so 是否 a64 分支 2. 有 a64 → 现代壳 → Frida 静态脱壳大概率失败 3. 有 a32/无 a64 → 老壳 → Frida hook DexFile 可能有效 4. 装起来跑 Frida enumerateLoadedClassesSync() 看业务类能不能看到 - 能 → 至少 Java 层还能 hook 行为 - 不能 → 反制太强直接放弃 5. 检查 .jiagu/tmp.dex 大小 - 1 KB → 空壳诱饵 - 100 KB → 可能是真 dex 6. 内存扫 dex magic - 0 命中 → 字节已清零Frida 脱壳不成立 - 有命中 → 可能能 dump7.3 遇到现代加固的可选路径目的方案工时拿完整 dex 反编译Ghidra 反汇编libjiagu_a64.so找解密函数patch 内存1-2 天只需知道它做了什么Frida 列所有类名 hook Java 方法 抓网络2 小时想去广告自用不推荐——360 有完整性校验改完必闪退即使绕过校验去广告后其它流氓行为还在想练手加固对抗换弱壳样本梆梆、腾讯乐固别用 360 v4 做入门八、可复用的知识结论8.1 环境配置清单这套能跑Frida 15.2.2 (Python) ← 唯一可用版本 frida-server 15.2.2-android-x86_64 ← 模拟器 x86_64 雷电 9 (Android 9, SDK 28, root) ← x86_64 root 模拟器 frida-dexdump 2.0.1 ← 装了但对本样本挂死 FART ← 现代加固的通用方案未试 FDE2D ← 同上未试 uber-apk-signer 1.3.0 ← 单文件签名工具重打包用 apktool 3.0.3 ← 反编译重建 jadx-gui 1.5.6 ← 反编译 GUI8.2 Frida 15.2.2 写脚本的 4 个必知// 1. args 处理Interceptor.attach(addr,{onEnter:function(args){varnarguments.length;// ✅vara0args[0];// ✅// ❌ args.length// ❌ Array.prototype.slice.call(args)// ❌ Array.from(args)}});// 2. DexFile 枚举Java.choose(dalvik.system.DexFile,{onMatch:function(obj){...},onComplete:function(){...}});// 3. 全内存扫描varregionsProcess.enumerateRanges();// 不要传 protect 参数// 4. Dex magic 检测// dex\n035\0 64 65 78 2e 0a 30 33 35 00// 5. 不要用 Java.enumerateInstances()用 Java.choose// 6. Java.perform 之前不要调任何 Java 类8.3 360 加固的判断流程Step 1: apktool d 看壳类型 - libjiagu*.so 存在 → 360 加固 - a64 分支 → 现代壳 - a32 分支 → 老壳 Step 2: 检查 assets - na.czl 存在 → 有加密载荷 - .jgapp 存在 → 有密钥指纹 - 只有 libjiagu.so 没有 a64 → 老壳 Step 3: 看 res 资源名 - 正常drawable/xxx.png→ 未混淆 - 乱码-1.webp、aA.png→ 资源混淆静态分析难 Step 4: 装起来跑 Frida - enumerateLoadedClassesSync() 能列业务类 → 至少 Java 层可 hook - 抛异常 → 反制太强 Step 5: 检查运行时磁盘产物 - .jiagu/tmp.dex 1 KB → 空壳诱饵 - .jiagu/tmp.dex 100 KB → 可能是真 dex Step 6: 内存扫 dex magic - 0 命中 → Frida 脱壳不成立 - 有命中 → 尝试 dump8.4 360 壳的核心对抗点从libjiagu_a64.so抽出的字符串看检测项包括/proc/self/maps正则扫描找 Frida 特征地址libmono.so检测Xposed/Substratefake-libs目录检测inotify_initinotify_add_watch监控 APK 目录sigaction拦截 SIGSEGV后台pthread_create反调试线程Frida 15.2.2 目前没被识别——app 在 Frida attach 下正常启动、业务类正常加载。但 Frida 17.x 或某些 gadget 变种会被识别。8.5 完整性校验的真相网上很多教程说hook 校验函数返回成功这是过时说法。360 的校验是启动时对 dex / Manifest / signature 算 hash 比对运行时周期性重新校验Java 层nativeCheck 底层mmap监控 APK 文件不是单一函数返回值真绕过要么改壳代码本身要么用不带壳的 APK 重新打包。九、下一步能做什么9.1 A. 用 FART 或 FDE2D 试一次未试的路径pip install fart fart -c repack -a sample.apk或 FridaGadget 版 FDE2Dpip install frida-dexdump # 或用 FridaGadget inject 到目标 AppFART 会自动处理脱壳 改回 重签一条龙。现代加固首选。9.2 B. 放弃脱 dex做行为分析推荐Frida 能做的Java.enumerateLoadedClassesSync()列所有类名hook 关键 Java 方法无障碍、悬浮窗、下载 API追踪行为抓所有网络请求连接socket/ HTTP 库 hookmitmproxy 抓包看连接哪些域名穿山甲、友盟、字节、bmob、微信上报了什么数据隐私泄露点比反编译真 dex 更实用。9.3 C. Ghidra 静态逆libjiagu_a64.so工作量 1-2 天。步骤Ghidra 打开libjiagu_a64.so找解密函数入口DynCryptor::__arm_c_0或类似命名分析 na.czl 的解密逻辑patch 让它把解密后的字节写到磁盘或用 Frida stub 让解密函数 dump 输出9.4 D. 抓全链路请求30 分钟mitmproxy --mode transparent --set transparent_proxy_ip_address10.0.2.2看穿山甲、友盟、字节、bmob 上报了什么。这是识别隐私泄露最有效的方式。9.5 E. 分析私有加密库# 看 libEncryptor.so 的导出符号 objdump -T lib/arm64-v8a/libEncryptor.so # 找加密函数 strings lib/arm64-v8a/libEncryptor.so | grep -i encrypt\|decrypt\|key二次加密层的密钥通常在这里是绕过双层壳的关键。十、失败复盘10.1 时间分布阶段时长产出环境搭建Frida 版本折腾4 小时Frida 15.2.2 可用装 FDE 2.0.1 尝试1 小时挂死自写 hook 脚本5 版6 小时全因 args 处理崩内存扫描、DexFile 枚举2 小时关键反证0 命中定向 hook 尝试3 小时未跑通总计约 16 小时未拿到 dex10.2 教训老教程不能直接用——GitHub 上流传的 360 脱壳脚本绝大多数照抄自 2019 年以前的教程hook 点对现代壳无效。看时间戳2024 年以后写的才有参考价值。Frida 版本坑必须先摸清——Frida 17.x 砍了 Java 桥对 Android 脱壳无意义。装 15.2.2 是唯一选择。17.x 折腾了半天才发现是设计变更浪费时间。args处理这个坑必须提前知道——Frida 的args不是数组不能Array.prototype.slice.call(args)不能用Array.from(args)。写了 5 版脚本才意识到浪费了大量时间。30 分钟判断实验比 3 天尝试更重要——样本加固程度用 apktool FridaenumerateLoadedClassesSync 内存扫 dex magic 就能定。这些 30 分钟内能做完的判断实验应该在动手前先做。看失败样本能省下别人的时间——本文档的价值就在这里。10.3 如果重来最短路径第 1 天上午2-3 小时 - apktool d 看壳类型15 分钟 - 装 Frida 15.2.2 frida-server1 小时 - 跑 enumerateLoadedClassesSync 看业务类15 分钟 - 检查 .jiagu/tmp.dex 大小15 分钟 - 内存扫 dex magic30 分钟 → 判断结论Frida 脱壳不成立 第 1 天下午 - 转行为分析路线 - mitmproxy 抓包 - Frida hook 关键 Java 方法 → 拿到实际行为数据 第 2 天起 - 需要完整反编译 → Ghidra 静态逆 - 不需要 → 结束这是能省下 3 天的最短路径。附录环境信息分析环境Python 3.14.7Frida 15.2.2 (Python frida-server x86_64)adbC:\Users\a1\.local\platform-tools\adb.exe雷电 9 模拟器Android 9, SDK 28, x86_64, rootJDK 17无 apksigner用 uber-apk-signer 替代apktool 3.0.3 / jadx-gui 1.5.6 / uber-apk-signer 1.3.0样本信息包名com.weixikeji.privatecameraV2版本4.3.3大小14.4 MB签名自建 keystoreKEY0加固360 v4 (a64 分支) 私有加密libEncryptor.so本文档为技术分析记录不构成任何使用/分发去广告版 App 的建议——那属于另一回事。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑