首页 / 资讯中心 / 文章详情

rea Android APK 静态分析实战:固定 JADX 引擎跑通五类检查

rea Android APK 静态分析实战:固定 JADX 引擎跑通五类检查 ★ FEATURED ARTICLE
rea Android APK 静态分析实战固定 JADX 引擎跑通五类检查【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rearea 的 Android 静态分析在src/android/适配层里包装一个提交固定的 JADX headless 引擎全程不执行 APK。最低供给是完整 JDK 17含jdk.compiler模块与调用方自备的 jadx-headless-mcp 0.7.1 引擎 JAR配两个环境变量即可启动。它能回答四类问题包清单与权限、类在哪、方法体写了什么、谁引用了目标方法。边界不执行 APK、不做签名校验、不处理 split APK/AAB、不分析 native 库JADX_LIMITATIONSsrc/android/JadxRelease.ts。 环境配置怎么过两个变量、Java 探针与平台边界供给只在选中 Android 操作时才解析src/android/JadxConfiguration.ts。先给命令export REA_JADX_MCP_JAR/abs/path/jadx-headless-mcp-0.7.1-all.jar export JAVA_HOME/abs/path/jdk-17变量要求失败表现REA_JADX_MCP_JAR绝对路径、常规可读文件realpath归一AnalysisCapabilityUnavailableError含REA does not download or install itJAVA_HOME可选必须绝对且$JAVA_HOME/bin/java为常规可执行文件相对路径直接拒绝REA_JADX_HEAP_MIB/REA_JADX_ACTIVE_PROCESSOR_COUNT可选正的 safe integer后者上限 2,147,483,647映射为-XmxNm/-XX:ActiveProcessorCountNJava 探针跑java --list-modules10 秒超时、1 MiB 输出预算JAVA_MODULE_LISTING_TIMEOUT_MS等两个常量。缺jdk.compiler会提示 A JRE cannot compile REAs source bridge因为元数据桥bridge/android/ReaJadxBridge.java以 source-file 模式对未修改的引擎 JAR 编译。JAR 侧只扫 ZIP 目录核对 5 个桥消费类读预算 8 MiBJAR_METADATA_READ_MAX_BYTES不加载引擎代码。平台linux/darwin 放行win32 仅 x64 且需随包 native controls 提供 owned protocol stdinLinux 上 JADX 是 REA 自持进程PATH 需有 procps 的psdocs/android-analysis.md。该功能族存在于 main 与 npm 4.1.0接入前核对发布包边界。 任务一怎么核对包清单、权限与计数rea inspect-android-package /path/Example.apk返回解码后的 manifest XML、package_name/version_code/min_sdk/target_sdk、权限列表与类/资源计数。signature_verification恒为not_performedJadxAnalysis.tsinspectPackage硬编码——签名真伪不在此工具的回答范围内需要签名校验得走别的工具链。摘要字段由上游引擎抽取存疑时对照保留的 manifest XML 核查。MCP 端可加detail: summary拿全部包/SDK/权限声明但不含解码 manifest 文本与重复的原始响应完整 Evidence 仍在保留会话内用inspect_analysis_view按 UTF-16 偏移分页读回docs/android-analysis.md Optional package delivery。一次性 CLI 输出恒为完整。任务二怎么按子串定位一个类并清点成员rea search-android-classes /path/Example.apk MainActivity rea inspect-android-class /path/Example.apk example.MainActivityquery是大小写敏感的类名子串空串 全量清点。实现按 4,096 个名称/页翻完所有分页JadxAnalysis.tssearchClasses的pageSizetotal/offset/limit任一漂移、重复行、或总数与加载期class_count不符都抛AnalysisOutputError。重复类名保留在matches中duplicate_names单独报告出现次数——类名本身区分不出后续查询会选中哪个 provider 节点。inspect-android-class读解析后的元数据、不生成源码返回每个方法的overload_index、reported_signature、dex_descriptor如(I)V外加字段与内部类代码生成隐藏的 synthetic 成员可能出现。overload_index绑定当前产物与引擎不是跨构建的稳定身份。任务三怎么读方法体重载怎么点名rea inspect-android-method /path/Example.apk example.MainActivity select --overload-index 1设计取向是拒绝模糊而不是猜同名方法多于 1 个且未带overload_index请求被拒错误信息列出全部候选签名JadxAnalysis.tsinspectMethodSelect one of N overloads。引擎的 smali 回退会把所有同名重载的函数体拼接返回rea 对重载方法直接抛AnalysisCapabilityUnavailableError避免把全部函数体归因到某一个被选中的重载。无函数体的 native/abstract 方法返回body_status: not_available不推断由哪个实现标志导致。静态初始化器clinit返回 smali 并带static_initializer_disassembly标记——Java 反编译可能把这些指令挪进字段声明使方法体看似为空。返回文本有 1 MiB 上游字节预算截断时报partial。任务四怎么追踪谁引用了目标rea trace-android-references /path/Example.apk example.MainActivity --method-name onCreate方法引用接受同样的overload_index省略--method-name时追踪类级引用此时再传overload_index属于非法输入。结果是 provider 节点之间的入向静态关系不是观测到的运行时调用reference_unitusing_node表示total统计含引用的 JADX 节点而非 invoke 指令一个方法里的两次调用显示为一条。每条引用的source_line与dex_offset显式为null。含 raw code 的节点给出direct_invokesDEX 偏移、方法索引、opcode空数组 该节点无直接匹配null 拿不到 raw code 或节点不是方法。虚拟/接口 invoke 不确立运行时实现反射与动态加载不在覆盖内JADX_LIMITATIONS。超时与字节预算怎么定真实引擎怎么验证rea Android APK 分析的预算集中在几处常量docs/android-analysis.md 汇总边界值位置单操作执行期限到队首后120 秒JadxProvider.tsOPERATION_TIMEOUT_MS上游反编译上限90 秒docs/android-analysis.mdmanifest / 方法文本1 MiB截断报partial同上类名分页4,096 个名称/片JadxAnalysis.tspageSize单条协议帧8 MiBJadxMcpTransport.tsMAX_FRAME_BYTES单操作 stdoutstderr 合计32 MiB超限以诊断失败同文件MAX_OPERATION_BYTES会话侧每实例一个序列化会话工作区是 APK、JAR、桥的私有副本复用键含 APKJAR 哈希、桥哈希与 JVM 参数键不同先退役旧会话。60 秒空闲、失败、超时、取消、MCP 断开均触发清理一次性 CLI 返回前总是 join 清理src/cli/androidCommands.ts 显式await provider.close()。heap_limit_mib报 worker 观测的Runtime.maxMemory()向下取整堆不是 RSS 上限。真实验证车道不装任何工具npm run fixtures:android export REA_JADX_MCP_JAR$PWD/_reference/apk-integration/jadx-headless-mcp-0.7.1-all.jar export REA_ANDROID_TEST_APK$PWD/_reference/apk-integration/ApiDemos-debug.apk npm run verify:android下载脚本校验固定 SHA-256、拒绝覆盖不同文件APK/JAR 落在被忽略的_reference/下scripts/verify/android/analysis.mjs先断言 APK 与 JAR 哈希与 fixture/审计值一致再对五个操作逐一跑真实 CLI 与 MCP 请求与合成协议回归相互独立。不需要 Gradle、模拟器、Android SDK 或 Ghidra。速查表CLIMCP 方法关键参数inspect-android-packageinspect_android_packagepathdetail可选complete/summarysearch-android-classessearch_android_classespath、query空串 全量inspect-android-classinspect_android_classpath、class_name精确全限定名inspect-android-methodinspect_android_methodpath、class_name、method_name、overload_indextrace-android-referencestrace_android_referencespath、class_name、method_name可选、overload_index环境REA_JADX_MCP_JAR必填绝对路径JAVA_HOME可选REA_JADX_HEAP_MIB/REA_JADX_ACTIVE_PROCESSOR_COUNT可选类名、方法名均为精确匹配拿不准先用search-android-classesinspect-android-class发现overload_index为非负整数按引擎返回顺序 0 起结果里的 Evidence 保留原始请求、APK/JAR SHA-256 与引擎原始响应可作引用凭证【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站