拓冰建站拓冰建站
首页 / 资讯中心 / 正文

AAS 项目 apk-reverse 技能实战:基于 jadx + apktool + Frida 的 Android APK 逆向分析完整工作流

AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载本文以 agentic-awesome-skillsAAS仓库中的 apk-reverse 技能文档 为骨架系统讲解 Android APK 逆向分析的标准流程从 Triage 摸底、jadx Java 反编译、apktool smali 修改与重打包签名到 Frida 动态 Hook 与 native.so分流。读完本文你将掌握一套可复现、可闭环的 APK 分析流水线以及配套的 Frida 实战脚本与安全审计速查清单可用于授权范围内的安全评估、样本分析与防御研究。⚠️授权使用声明AUTHORIZED USE ONLY该技能仅用于教育目的或已获授权的安全评估。使用前必须取得系统所有者明确、书面的授权。未经授权使用本技能涉及的工具与技术是违法的并被严格禁止。任何探测、利用、修改、持久化、数据提取或凭证访问类操作都必须遵守技能文档规定的强制确认门Mandatory confirmation gate流程。适用范围哪些任务应优先调用本技能根据 SKILL.md当任务命中以下场景时优先使用 apk-reverse 技能分析 APK 的 Java 业务逻辑定位登录、签名、风控、证书校验、root 检测相关代码查看与修改AndroidManifest.xml查看与修改 smali重打包 APK用 Frida 做 Java/native 动态 HookAPK 内含.so时切换到 native 分析。简言之这是一条「静态反编译 → 语义定位 → 补丁修改 → 重建签名 → 动态验证 → native 深挖」的完整链路覆盖绝大多数 Android 逆向任务形态。当前机器已验证可用的 CLI 工具技能文档明确记录了在当前验证环境中已确认可用的工具及其版本见 SKILL.md工具版本定位jadx1.5.5Java 反编译阅读apktool3.0.2解包 / 重建 APKfrida-ps17.9.6Frida 动态注入工具链adb—设备连接、安装、日志java—apktool/jadx 运行依赖JDK版本号是环境事实而非能力上限实际使用时应以jadx --version、apktool --version校验本机安装情况因为不同版本的 CLI 参数细节可能存在差异。工具分工五个核心命令的职责边界技能文档将工具职责划分为五块SKILL.md每一块都有明确的适用场景与常用命令切勿混用。jadxJava 层逻辑阅读主力用于 Java 反编译阅读、包名/类名/方法名搜索先在高层次理解 APK 业务逻辑。# 全量反编译到 jadx_out 目录 jadx -d jadx_out app.apk # 只反编译单个类快速定位目标 jadx --single-class com.example.LoginActivity -d jadx_out app.apk # 启用反混淆类/方法重命名为可读形式 jadx --deobf -d jadx_out app.apk--single-class适合在已确定目标类后快速出结果--deobf则适合面对混淆包时先做一轮可读化处理。apktoolManifest 与 smali 的读写重建用于解包 APK、查看/修改AndroidManifest.xml、查看/修改 smali、重建 APK。# 解包导出 smali 与资源 apktool d app.apk -o apktool_out # 重建把修改过的 smali 打包回 APK apktool b apktool_out -o rebuilt.apkFrida动态观察与 Hook用于动态观察 Java 方法调用、Hook native 导出函数、绕过 root 检测/证书校验/调试检测。# 列出 USB 设备上的进程 frida-ps -U # spawn 启动目标进程并注入脚本 frida -U -f com.example.app -l hook.js # 按通配符追踪方法调用如所有含 certificate 的方法 frida-trace -U -f com.example.app -j *!*certificate*-fspawn 模式冷启动注入、-nattach 模式附加已运行进程、-UUSB 设备是 Frida 最容易混淆的三个参数也是技能文档将其封装为脚本的核心动机。adb设备侧的连接与管理用于设备连接、安装 APK、查看日志、拉取文件。adb devices # 查看已连接设备 adb install -r app.apk # 覆盖安装 adb shell pm list packages # 列出已装包 adb logcat # 实时日志 adb pull /data/local/tmp/file . # 从设备拉文件JEB Pro可选商业工具与边界技能文档将 JEB Pro 定位为可选的交叉验证工具用于 Android DEX/APK/ARM 的深度反编译在 JADX 输出不完整或混淆较重时补充静态分析对同一目标的类、方法与调用关系做第二工具链校验SKILL.md。其使用边界非常明确JEB Pro 是商业软件必须由用户自行取得并安装有效许可证技能包本身不会下载、破解或规避许可仅在tool-index已确认本机 JEB 可用时才调用否则继续使用 jadx、apktool、Ghidra、IDA 或 radare2第三方 JEB MCP bridge 不是技能依赖安装前必须审阅其源码、权限、网络行为和版本再由用户明确确认注册。高频流程脚本化文档规划的四个 PowerShell 入口技能文档为高频且参数容易出错的流程规划了四个 PowerShell 脚本入口SKILL.md并明确了「哪些流程走脚本、哪些保持一行命令直调」的分工策略。需要说明的是在当前仓库中apk-reverse 目录只包含SKILL.md与references/下的 4 个 Markdown 参考文档scripts/*.ps1脚本文件并未随附在仓库内脚本由上游 reverse-skill 项目维护。因此下述参数以技能文档为准实际运行需以你本机对应脚本为准或按文档描述自行实现等价逻辑。scripts/decode.ps1jadx apktool 一次性落盘用途统一跑 jadx 和 apktool默认在原 APK 同目录创建任务输出目录输出package、java_files、smali_dirs、so_files等摘要兼容 jadx 部分反编译错误但仍然有可用产物的情况。# 默认输出目录 清空历史产物 pwsh -File skill-root\apk-reverse\scripts\decode.ps1 -ApkPath D:\DOWNLOAD\app.apk -Clean # 自定义任务名 跳过 jadx只解包看 smali/资源 pwsh -File skill-root\apk-reverse\scripts\decode.ps1 -ApkPath D:\DOWNLOAD\app.apk -Name demo -SkipJadxscripts/frida-run.ps1Frida 注入统一入口用途统一 Frida 的设备、进程、spawn/attach 入口避免手写参数时混淆-f、-n、-U。pwsh -File skill-root\apk-reverse\scripts\frida-run.ps1 -ListDevices pwsh -File skill-root\apk-reverse\scripts\frida-run.ps1 -Usb -ListProcesses pwsh -File skill-root\apk-reverse\scripts\frida-run.ps1 -Usb -Spawn -Package com.example.app -ScriptPath D:\hooks\test.jsscripts/rebuild-sign-install.ps1重建—对齐—签名—安装闭环用途apktool b重建 APK →zipalign对齐 →apksigner签名与验签 → 可选直接adb install。默认生成并复用调试 keystore默认输出到 ProjectDir 同目录便于和原始包、解包目录放在一起。# 只做重建 签名 pwsh -File skill-root\apk-reverse\scripts\rebuild-sign-install.ps1 -ProjectDir C:\work\apktool_out -Clean # 重建 签名 安装到指定设备支持模拟器串口如 127.0.0.1:7555 pwsh -File skill-root\apk-reverse\scripts\rebuild-sign-install.ps1 -ProjectDir C:\work\apktool_out -Install -Reinstall -DeviceSerial 127.0.0.1:7555scripts/manifest-summary.ps1Manifest 快速摘要用途抽取包名、列出权限、列出 activity/service/receiver/provider、标出主启动 activity。pwsh -File skill-root\apk-reverse\scripts\manifest-summary.ps1 -ManifestPath C:\work\apktool_out\AndroidManifest.xml保持直接调用的一行命令以下命令简单直接无需封装SKILL.mdadb devices adb logcat frida-ps -U jadx --version apktool --version推荐工作流六步递进的逆向主线技能文档给出的核心工作流是「先摸底、再 Java、后 smali、重建验证、动态 Hook、native 分流」的六步递进SKILL.md。第 1 步Triage 摸底先确定 APK 大致构成不急着改包或 Hook。建议动作jadx -d jadx_out app.apk导出 Java 代码apktool d app.apk -o apktool_out导出 smali 和资源先看AndroidManifest.xml、主package、application/activity/service/receiver、lib/目录里是否有.so。技能文档还提供了一套威胁形态速查针对授权样本/设备的分析场景详见技能路由中引用的非 PE 格式 cookbook 相关章节透明/隐藏图标用aapt dump badging结合 manifest 的 theme/label/icon 判断Magisk/脚本格机特征与远程 curl|sh把特征与 URL 作为证据记录绝不执行破坏性命令持久化路径检查service.d、priv-app等系统级路径。第 2 步Java 逻辑观察优先从jadx_out读取MainActivity、Application、登录/网络/加密/风控相关类、第三方 SDK 初始化类。常用关键词搜索在 jadx 输出的 Java 文件中搜索login、sign、encrypt、cipher、token、root、certificate、trust、okhttp、retrofit、webview。如果 Java 代码可读先在这里定位业务逻辑这是成本最低的一层。第 3 步Smali 与资源层确认当 jadx 结果不完整、混淆较重、或需要实际 patch 时切到apktool_out看smali*/、res/values/strings.xml、AndroidManifest.xml。优先 patch 的点android:exported组件暴露面调试标记debuggableroot 检测返回值登录验证逻辑证书校验分支。第 4 步重建与安装修改完成后重建apktool b apktool_out -o rebuilt.apk或直接用脚本闭环pwsh -File skill-root\apk-reverse\scripts\rebuild-sign-install.ps1 -ProjectDir apktool_out -Install -Reinstall -DeviceSerial 127.0.0.1:7555注意技能只保证apktool重建链路若需要正式安装到设备通常还需要签名流程一旦进入签名/对齐阶段需要补充apksigner/zipalign这两者不在自举范围内需手动安装 Android Build-Tools。第 5 步动态 Hook静态分析不足时使用 Frida重点 Hook 对象登录函数OkHttp/Retrofit/WebView关键点javax.crypto、MessageDigestroot 检测函数SSL pinning 逻辑。两条核心原则先 Hook Java 层再看是否需要 native Hook先打印参数与返回值再决定是否主动修改返回值。执行建议简单一次性命令直接用frida-*系列需要稳定复用的注入流程优先走scripts/frida-run.ps1。第 6 步Native.so分流如果 APK 中包含关键.so用apktool或jadx找到lib/**/*.so若只是导出符号、字符串、快速 triage可用radare2若要长期深入分析、反编译、改名、类型恢复用 IDA 系工具。遇到以下信号要尽快切 nativeJava 层只是 JNI 包装核心签名逻辑不在 JavaSystem.loadLibrary()后关键逻辑消失证书校验/风控在.so中。Frida 实战脚本库开箱即用的 Hook 模板apk-reverse 的 references/frida-cookbook.md 提供了按场景分类的 Frida 实战脚本文档声称精选自 awesome-frida、Frida-Mobile-Scripts、frida-codeshare-scripts 等开源项目可直接复制使用。以下按场景给出核心模板。通用 Hook 模板Java.perform(function() { var TargetClass Java.use(com.target.ClassName); // Hook 无参方法 TargetClass.methodName.implementation function() { console.log([*] methodName called); var ret this.methodName(); console.log([*] return: ret); return ret; }; // Hook 有参方法需按实际签名指定 overload TargetClass.methodName.overload(java.lang.String, int).implementation function(str, num) { console.log([*] methodName( str , num )); var ret this.methodName(str, num); console.log([*] return: ret); return ret; }; });加密 / 签名 Hook捕获 AES 密钥与 IVJava.perform(function() { var Cipher Java.use(javax.crypto.Cipher); Cipher.doFinal.overload([B).implementation function(input) { console.log([Cipher.doFinal] input: bytesToHex(input)); var result this.doFinal(input); console.log( output: bytesToHex(result)); return result; }; // 捕获密钥 var SecretKeySpec Java.use(javax.crypto.spec.SecretKeySpec); SecretKeySpec.$init.overload([B, java.lang.String).implementation function(key, algo) { console.log([SecretKeySpec] algo algo key bytesToHex(key)); this.$init(key, algo); }; // 捕获 IV var IvParameterSpec Java.use(javax.crypto.spec.IvParameterSpec); IvParameterSpec.$init.overload([B).implementation function(iv) { console.log([IvParameterSpec] iv bytesToHex(iv)); this.$init(iv); }; }); function bytesToHex(bytes) { var hex []; for (var i 0; i bytes.length; i) { hex.push((0 (bytes[i] 0xFF).toString(16)).slice(-2)); } return hex.join(); }网络层 HookOkHttp3 请求 / 响应Java.perform(function() { var RealCall Java.use(okhttp3.RealCall); RealCall.execute.implementation function() { var request this.request(); console.log([OkHttp] request.method() request.url().toString()); var headers request.headers(); for (var i 0; i headers.size(); i) { console.log( headers.name(i) : headers.value(i)); } var response this.execute(); console.log([OkHttp] Response: response.code()); return response; }; });通用 SSL Pinning 绕过多方案组合Java.perform(function() { // OkHttp3 CertificatePinner try { var CertificatePinner Java.use(okhttp3.CertificatePinner); CertificatePinner.check.overload(java.lang.String, java.util.List).implementation function() { console.log([*] SSL Pinning bypassed (OkHttp3)); }; } catch(e) {} // TrustManagerImplAndroid 系统实现 try { var TrustManagerImpl Java.use(com.android.org.conscrypt.TrustManagerImpl); TrustManagerImpl.verifyChain.implementation function(untrustedChain) { console.log([*] SSL Pinning bypassed (TrustManagerImpl)); return untrustedChain; }; } catch(e) {} // X509TrustManager 空实现注册 try { var X509TrustManager Java.use(javax.net.ssl.X509TrustManager); var TrustManager Java.registerClass({ name: com.bypass.TrustManager, implements: [X509TrustManager], methods: { checkClientTrusted: function() {}, checkServerTrusted: function() {}, getAcceptedIssuers: function() { return []; } } }); } catch(e) {} });通用 Root 检测绕过Java.perform(function() { // 屏蔽已知 root 路径的 File.exists var File Java.use(java.io.File); var rootPaths [su, Superuser, magisk, busybox, xposed, /system/xbin/su, /system/bin/su, /sbin/su, /data/local/xbin/su, /data/local/bin/su]; File.exists.implementation function() { var path this.getAbsolutePath(); for (var i 0; i rootPaths.length; i) { if (path.toLowerCase().indexOf(rootPaths[i].toLowerCase()) ! -1) { console.log([Root] Blocked: path); return false; } } return this.exists(); }; // 拦截 Runtime.exec 中的 su / which 调用 var Runtime Java.use(java.lang.Runtime); Runtime.exec.overload(java.lang.String).implementation function(cmd) { if (cmd.indexOf(su) ! -1 || cmd.indexOf(which) ! -1) { console.log([Root] Blocked exec: cmd); throw Java.use(java.io.IOException).$new(Permission denied); } return this.exec(cmd); }; // 伪装 Build.TAGS var Build Java.use(android.os.Build); Build.TAGS.value release-keys; });数据存储 HookSharedPreferences 与 SQLiteJava.perform(function() { var SharedPreferencesImpl Java.use(android.app.SharedPreferencesImpl); SharedPreferencesImpl.getString.implementation function(key, defValue) { var value this.getString(key, defValue); console.log([SP.get] key value); return value; }; var SQLiteDatabase Java.use(android.database.sqlite.SQLiteDatabase); SQLiteDatabase.rawQuery.implementation function(sql, args) { console.log([SQL] sql); if (args) console.log( args: JSON.stringify(args)); return this.rawQuery(sql, args); }; });脱壳辅助枚举 ClassLoader 与 DEXJava.perform(function() { Java.enumerateClassLoaders({ onMatch: function(loader) { try { var pathList Java.cast(loader, Java.use(dalvik.system.BaseDexClassLoader)).pathList.value; var dexElements pathList.dexElements.value; for (var i 0; i dexElements.length; i) { var dexFile dexElements[i].dexFile.value; if (dexFile) { console.log([DEX] dexFile.getName()); } } } catch(e) {} }, onComplete: function() {} }); });该参考文档还提供了实用工具函数bytesToHex字节转十六进制、printStack打印调用栈、printFields打印对象字段、findInstances搜索内存类实例可显著提升 Hook 脚本的调试效率。FridaBypassKit四合一通用绕过框架references/frida-bypass-kit.md 收录了一个集四大绕过能力于一体的通用 Frida 脚本无需针对特定 APP 定制Root 检测绕过HookFile.exists()隐藏 su 二进制拦截Runtime.exec()的 root 检查从 PackageManager 隐藏 root 相关包Magisk、SuperSU 等修改系统属性使设备看起来未 root。SSL Pinning 绕过HookTrustManagerImpl.verifyChain()与checkTrustedRecursive()绕过证书链验证兼容 OkHttp、Retrofit 和自定义实现。模拟器检测绕过伪造 TelephonyManager 返回值假电话号码与运营商名称修改 Build 属性。反调试绕过HookDebug.isDebuggerConnected()阻止调试器检测。运行前置条件需 root 设备pip install frida-tools adb push frida-server /data/local/tmp/ adb shell chmod 755 /data/local/tmp/frida-server adb shell su -c /data/local/tmp/frida-server # 注入目标 APP frida -U -f com.example.app -l FridaBypassKit.js该文档还给出了在 apk-reverse 工作流中的集成判断APP 检测到 root 拒绝运行 → 启用 Root 绕过抓包时 HTTPS 看不到明文 → 启用 SSL Pinning 绕过APP 检测到模拟器拒绝运行 → 启用模拟器绕过附加 Frida 后 APP 崩溃 → 启用反调试绕过。推荐组合使用先跑完整 kit再针对性调整。Native.so深入JNI 与高级逆向references/android-advanced.md 提供了 native 层的分析流程分析流程从 APK 提取.sounzip app.apk lib/arm64-v8a/*.so -d extracted/→file libxxx.so/rabin2 -I确认架构 → 找 JNI 入口JNI_OnLoad动态注册 /Java_com_xxx_yyy静态注册 /nm -D libxxx.so | grep -i java→ 反汇编器加载分析 → 从 Java 层 native 方法名、字符串交叉引用、crypto 库函数调用定位关键逻辑。JNI 注册两种形态// 静态注册函数名 Java_包名_类名_方法名 JNIEXPORT jstring JNICALL Java_com_example_app_Security_getSign( JNIEnv *env, jobject thiz, jstring input) { ... } // 动态注册在 JNI_OnLoad 中调用 RegisterNatives static JNINativeMethod methods[] { {getSign, (Ljava/lang/String;)Ljava/lang/String;, (void*)native_getSign}, }; JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv *env; vm-GetEnv((void**)env, JNI_VERSION_1_6); jclass clazz env-FindClass(com/example/app/Security); env-RegisterNatives(clazz, methods, sizeof(methods)/sizeof(methods[0])); return JNI_VERSION_1_6; }Native Hook 与内存操作Frida// Hook libc 的 open屏蔽 root 检查 Interceptor.attach(Module.findExportByName(libc.so, open), { onEnter: function(args) { this.path args[0].readUtf8String(); }, onLeave: function(retval) { if (this.path.includes(su) || this.path.includes(magisk)) { console.log([open] Blocked root check: this.path); retval.replace(-1); // 返回失败 } } }); // Hook 自定义 SO 中指定偏移的函数 var base Module.findBaseAddress(libsecurity.so); var targetFunc base.add(0x1234); Interceptor.attach(targetFunc, { onEnter: function(args) { console.log(arg0: args[0].readUtf8String()); }, onLeave: function(retval) { console.log(return: retval.readUtf8String()); } });该参考文档还覆盖了加固/壳识别360 加固libjiagu.so、腾讯乐固libshell*.so、梆梆libDexHelper.so等特征库名、通用脱壳方法FART、Frida DEX Dump、BlackDex、手动 dump以及 Flutter / React Native 的逆向路径如 React Native 的assets/index.android.bundle与 Hermes 字节码Flutter 的libapp.soDart AOT 分析思路。APK 安全测试速查六大维度审计清单references/apk-security-checklist.md 基于 OWASP MASTG移动应用安全测试指南整理覆盖静态分析、动态分析、网络通信、数据存储、认证授权、代码保护六大维度可作为审计阶段的检查清单。Manifest 审计要点android:debuggabletrue生产环境不应出现android:allowBackuptrue数据可备份提取android:exportedtrue组件暴露面自定义权限 protectionLevel 是否为 normal应为 signaturedeeplink scheme 是否可被劫持android:usesCleartextTraffictrue允许明文 HTTPminSdkVersion 过低。代码审计关键点硬编码密钥/Token搜索key、secret、password、api_key不安全随机数java.util.Random而非SecureRandom不安全加密ECB 模式、DES、MD5 用于密码WebView 的setJavaScriptEnabled addJavascriptInterfaceRCE 风险SQL 注入rawQuery拼接用户输入路径遍历日志/剪贴板泄露隐式 Intent 泄露。动态分析 Hook 优先目标表目标Hook 点目的登录认证LoginActivity.login()观察凭证处理签名生成*Sign*、*sign*、*encrypt*还原签名算法SSL PinningCertificatePinner.check绕过抓包Root 检测*root*、*su*、*magisk*绕过检测加密操作javax.crypto.Cipher提取密钥/IVToken 存储SharedPreferences.getString观察 token 读写网络请求OkHttpClient.newCall观察请求构造常用 Frida 一行追踪命令# 追踪所有加密操作 frida-trace -U -f com.target.app -j *Cipher*!* # 追踪所有 HTTP 请求 frida-trace -U -f com.target.app -j *OkHttp*!* # 追踪 SharedPreferences 读写 frida-trace -U -f com.target.app -j *SharedPreferences*!* # 追踪所有 native 函数调用JNI 静态注册 frida-trace -U -f com.target.app -i Java_*30 分钟快速测试流程文档建议的时间分配1. [5min] 解包 Manifest 审计apktool d app.apk检查 debuggable/allowBackup/exported/cleartext 2. [10min] 代码快速审计jadx -d out app.apk搜索 password, key, secret, token, http:// 3. [5min] 网络测试配置代理 → 操作 APP → 检查是否有明文/弱加密 4. [5min] 存储检查adb shell → 检查 shared_prefs 和 databases 5. [5min] 动态验证Frida hook 关键函数 → 确认发现数据存储安全对照SharedPreferences 明文存储root 后直接读取、EncryptedSharedPreferencesAndroidX Security 库、SQLCipher加密 SQLite、Android Keystore硬件级密钥保护、自定义 AES取决于密钥管理安全等级递增。按需自举工具缺失时自动安装技能文档规划了统一的按需自举系统入口脚本缺少工具时不会直接报错而是自动尝试安装SKILL.md。自动化能力边界工具可自动安装安装方式说明jadx✓GitHub Release ZIP自动下载解压到%USERPROFILE%\Tools\jadx\apktool✓GitHub Release JAR wrapper自动下载 jar 并生成 bat 到%USERPROFILE%\Tools\apktool\JEB Pro✗用户手动安装并提供有效许可证可选的 Android / ARM 交叉验证工具第三方 MCP bridge 需单独审计frida / frida-ps✓pip install frida-tools需要 Python 已安装adb✓winget / fallback path自动安装 Android Platform-Toolszipalign✗需手动安装 Android Build-Toolssdkmanager build-tools;35.0.0apksigner✗需手动安装 Android Build-Tools同上自举触发点decode.ps1缺 jadx/apktool 时自动调用 bootstraprebuild-sign-install.ps1缺 adb/apktool 时自动调用 bootstrapfrida-run.ps1当前仍为手动检查frida 通常已通过 pip 安装。自举失败常见原因网络不通GitHub API / PyPI 不可达winget 不可用Windows 版本过低Java 未安装apktool 依赖 JDK。失败时脚本会抛出明确错误并附带手动安装指引。输出要求与任务完成自检技能文档要求最终产出至少说明以下内容SKILL.md入口组件与关键类关键逻辑在 Java、smali 还是.so已确认的敏感点登录、签名、root、SSL、WebView、JNI如果做了 patch说明改了什么如果做了 Hook说明 Hook 了哪个类/方法/导出函数。声称完成前必须通过的自检清单SKILL.md我是否执行了工作流中的每一步而不是只阅读我是否基于tool-index使用了真实工具路径我是否产出了可复现证据命令/脚本/截图/报告我是否完成并回写了 RULES 要求的 Checklist 项若命中隐藏图标/格机/持久化线索是否记录了对应威胁形态证据授权范围内禁止事项与经验红线技能文档明确列出的反模式SKILL.md不要一开始就盲目改 smali——先做 Triage 与逻辑定位不要在没看 manifest 和主入口前就写 Hook——入口不清则 Hook 无的放矢不要把 Java 反编译不完整直接等同于逻辑不可分析——可先换--deobf、换单类导出、或转向 smali/native不要在.so明显承载核心逻辑时继续死磕 Java 层——及时切换工具链radare2 / IDA 系。局限性与边界技能文档SKILL.md同时给出了诚实的局限性声明重打包与 Hook 会篡改目标应用绝不要对授权范围之外的应用执行依赖本地 Android 工具链jadx/apktool/Frida/adb高度混淆或加壳的应用可能抵抗静态分析需要转入脱壳与 native 分析路径。快速命令备忘# 反编译 Java jadx -d jadx_out app.apk # 解包 APKsmali 资源 apktool d app.apk -o apktool_out # 重建 APK apktool b apktool_out -o rebuilt.apk # 设备与进程 adb devices frida-ps -U # 启动并注入 frida -U -f com.example.app -l hook.js延伸阅读本主题在仓库中的完整素材均位于plugins/agentic-awesome-skills/skills/apk-reverse/目录建议按以下顺序深入apk-reverse 主技能文档本文的骨架与全部命令出处Frida 实战脚本速查按场景分类的完整 Hook 脚本库APK 安全测试速查六大维度审计清单与 30 分钟快速流程Frida Bypass Kit四合一通用绕过框架Android 高级逆向参考Native SO 分析、JNI 注册、脱壳与跨端逆向。需要说明的是技能文档中的路由上下文提到当核心逻辑在.so时应转向ida-reverse/radare2技能并提到动态 Hook 可参考 Frida 进阶章节——这些都属于 AAS 技能编排体系中的相邻能力实际使用时可在本仓库中按skills/目录查找对应技能文档。技能内容改编自上游 reverse-skill 项目MIT 许可使用时请遵守其开源许可条款。再次强调本技能及其参考文档中的所有命令与脚本仅用于教育目的或已获明确书面授权的安全评估。请在受控环境沙箱、一次性虚拟机或隔离测试设备中开展分析切勿针对任何未经授权的系统执行。赞分享AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载相关推荐消息被撤回了我为什么还能看到聊聊 Windows 微信QQ防撤回工具消息被撤回了我为什么还能看到聊聊 Windows 微信QQ防撤回工具 下午三点部门群弹出一条新消息明天带方案周三的会改到九点。我字还没打完消息就AI 技能逆向工程应用安全移动安全逆向Android APK分析工具Jadx、Androguard使用教程移动安全逆向Android APK分析工具Jadx、Androguard使用教程 在移动安全领域Android APK分析是最核心的技能之一。本文将为您详细文档网络安全教程Android 逆向调用链分析从 APK 反编译代码中追踪 UI 到网络层的完整执行流android-reverse-engineering-skill 实战指南Android 逆向调用链分析从 APK 反编译代码中追踪 UI 到网络层的完整执行流android reverse engineering skill 实AI 技能逆向工程应用安全上一篇能源与环境研究Awesome Public Datasets能源数据集实战解析下一篇Jongo完全指南像Mongo Shell一样在Java中写查询的终极利器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门