diff --git a/.gitignore b/.gitignore index 82eac75..aca4356 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,6 @@ Desktop.ini # Python __pycache__/ *.pyc + +# ZCode 会话目录 +.zcode/ diff --git a/README.md b/README.md index d604850..7926da4 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,67 @@ -# MAG160C 热像仪逆向工程 +# MAG160C 热像仪统一工程 -MAG160C 热像仪(160×120,USB VID 0x833C)的 USB 协议、官方 SDK 逆向、纯 C SDK -和**官方渲染管线逐像素复刻**(demo3 v5)的完整工程。 +MAG160C 热像仪(160×120,15fps,USB VID `0x833C`)的逆向工程与双端实现: +**C 参考实现**(Linux/Windows,源自官方 PC SDK 逆向)与**安卓统一 App** +(Kotlin + Compose,适配 Android 16,整合官方 4 个 App 的功能)。 -## 从这里开始 +## 从这里开始(新接手者阅读顺序) -新接手者按顺序阅读: - -1. `analysis/reverse_20260813_full.md` — 官方管线 Ghidra 全量逆向 + 鬼影根因(最新) -2. `analysis/session_state.md` — 当前会话状态与恢复点(心跳锚点) -3. `交接_完整逆向工程说明_20260811.md` — 项目总交接(目录/环境/历史/失败路线) -4. `analysis/protocol_spec.md` — USB 协议/帧/命令/温度规格 -5. `csdk/README.md` — **C SDK 完整使用文档**(构建/API/工具/测试) -6. `csdk/tools/mag160c_demo3.c` — 主程序(官方管线复刻) - -## 当前状态(2026-08-13) - -- demo3 v5 已完整复刻官方渲染管线:DDT 校准表加载 → 快门驱动端点选择与 - Q12 插值 → ref=FFC 窗口 4×type1 帧均值 → NUC 查表 → 盲元补偿 → - 窗口 → LUT1024 重建 → 灰度 → 2x 升采样 → 官方调色板 -- 逐像素验证:NUC+盲元 0/19200、插值 0 误差、2x 0/76800、窗口一致 -- 同静态场景 gray 直方图与官方相关性 0.92(跨会话) -- 原"鬼影"问题的根因已定位并复刻官方行为(见 reverse_20260813_full.md §7) - -## 硬件 - -- 设备:MAG160C 热像仪,分辨率 160×120,15 fps -- USB VID:`0x833C`,常见 PID:`0x0001` -- 帧:19200 个小端 `uint16`;端点:命令 `0x03`/响应 `0x82`/实时帧 `0x81` - -## 快速入口 - -```powershell -# 编译 demo3(官方管线复刻) -gcc -O2 -w -DMAG160C_STATIC -I"csdk\third_party\libusb\win64" -I"csdk\include" -I"csdk\src" ` - -o build-artifacts\mag160c_demo3.exe csdk\tools\mag160c_demo3.c ` - csdk\src\mag160c_display.c csdk\src\mag160c_error.c ` - csdk\third_party\libusb\win64\libusb-1.0.x64.a -lgdi32 -luser32 - -# 启动 -Start-Process "build-artifacts\mag160c_demo3.exe" -WorkingDirectory "build-artifacts" -``` - -详细用法见 `csdk/README.md`。 +1. `docs/android_app/HANDOFF_DEVELOPMENT.md` — 安卓 App 总交接(必读) +2. `docs/android_app/session_state.md` — 会话心跳与待办(最新进度) +3. `analysis/README.md` — 逆向工程总目录索引(Linux/Windows/Android 三条线) +4. `analysis/magcx_official_flow.md` — **权威 USB 协议结论**(官方源码逐行核对版) +5. `analysis/protocol_spec.md` — 早期 PC 端协议逆向(硬件验证记录) +6. `csdk/README.md` — C SDK 文档(构建/API/工具/测试) ## 仓库结构 | 路径 | 用途 | |---|---| -| `csdk/` | 纯 C SDK + 工具(见 `csdk/README.md`)| -| `analysis/` | 逆向证据:反编译导出(`ida/`)、协议规格、交接文档、抓帧数据 | -| `IR_Camera_SDK-1.0.1/` | 原厂 Windows/Android/Linux SDK | -| `build-artifacts/` | 运行目录(demo3 exe、DDT 表、官方抓帧工具)| -| `docs/` `vendor-docs/` `app/` | 历史资料与模块文档 | -| `tools/resume_rev.ps1` | 会话恢复脚本(心跳配套)| +| `android/` | **安卓统一 App**(Kotlin + Compose,Gradle 工程,package `com.mag160c.thermal`):实时预览、拍照 MDT、录像、媒体库、离线分析、PDF 报告、任务巡检、设置 | +| `csdk/` | 纯 C SDK(官方管线 C 复刻:渲染/温度/IR 会话/FFC 调度,见 `csdk/README.md`)| +| `analysis/` | 逆向工程总目录(Linux/Windows/Android 三条 SDK 线的解包产物与结论,见 `analysis/README.md`)| +| `IR_Camera_SDK-1.0.1/` | 原厂 Windows/Android/Linux SDK 原始包 | +| `app/` | 官方安卓 APK 存档(普通版/专业版/ThermoScope/demo)| +| `build-artifacts/` | 构建产物(安卓 APK、PC demo3、DDT 标定数据)| +| `docs/android_app/` | 安卓 App 交接文档(HANDOFF / session_state / 逆向功能总表)| +| `vendor-docs/` | 厂商资料 | +| `tools/` | 会话恢复脚本 | -历史文档(早期 findings/progress/task_plan、根目录抓帧残留)已归档到 -`analysis/history/`;早期探索工具源码在 `csdk/tools/legacy/`。 +## 快速入口 + +### 安卓 App(构建/测试) +```powershell +cd C:\Project\MAG160C\android +$env:JAVA_HOME = "C:\Tools\jdk-21" +.\gradlew.bat :app:assembleDebug test --no-daemon +# 产物:build-artifacts\mag160c-app-debug.apk +``` + +### C 管线复刻 demo3 +```powershell +gcc -O2 -w -DMAG160C_STATIC -I"csdk\third_party\libusb\win64" -I"csdk\include" -I"csdk\src" ` + -o build-artifacts\mag160c_demo3.exe csdk\tools\mag160c_demo3.c ` + csdk\src\mag160c_display.c csdk\src\mag160c_error.c ` + csdk\third_party\libusb\win64\libusb-1.0.x64.a -lgdi32 -luser32 +Start-Process "build-artifacts\mag160c_demo3.exe" -WorkingDirectory "build-artifacts" +``` + +## 硬件 + +- 设备:MAG160C 热像仪机芯,160×120 @15fps +- USB:VID `0x833C` PID `0x0001`;端点 0x03 命令 / 0x82 响应 / 0x81 图像流 / + 0x84 标定文件 / 0x05 标定上传 +- 协议细节:`analysis/magcx_official_flow.md`(权威) + +## 里程碑 + +- 2026-08:官方 PC SDK(libmagcore/CoreSDKLib)逆向 + C 管线逐像素复刻(demo3) +- 2026-09-06~09:安卓 App(纯 Kotlin,无 NDK):渲染管线移植(逐字节验证)、 + USB 层(官方协议 Java 源码逐行复刻)、相机式 UI、拍照/录像/媒体库/分析/PDF +- 2026-09-10:真机联调打通(根因:USB 命令字节序反转,已修复并用单测锁死); + 官方 App 全量解包入库(jadx + Ghidra) ## 仓库说明 -仓库包含官方 SDK、第三方依赖、二进制样本和抓帧数据。部分内容可能受原厂 -许可限制,仅用于本项目的互操作性研究和设备调试。大型文件使用 Git LFS。 +仓库包含官方 SDK、反编译产物、二进制样本和抓帧数据。部分内容可能受原厂许可 +限制,仅用于本项目的互操作性研究和设备调试。 diff --git a/analysis/README.md b/analysis/README.md new file mode 100644 index 0000000..962bfa9 --- /dev/null +++ b/analysis/README.md @@ -0,0 +1,55 @@ +# analysis/ — MAG160C 逆向工程总目录 + +> 本目录汇总了 MAG160C 相关的**全部逆向工程材料**,覆盖三条产品线: +> ① Linux SDK(libmagcore.so)② Windows SDK(CoreSDKLib.dll / ThermalSDK.dll) +> ③ 官方安卓 App(MAG-Cx 普通版:Java 层 + libcxsdk.so / libcoresdk.so)。 +> 阅读顺序建议:先读本 README → `magcx_official_flow.md`(权威协议结论) +> → 按需深入各分目录。 + +## 顶层文件(结论与工具) + +| 文件 | 内容 | +|---|---| +| `magcx_official_flow.md` | **权威协议结论**(2026-09-10,官方 Java 源码逐行核对版):命令表、BasePara/CaliInfo 布局、连接序列、标定文件下载、FFC 逻辑 | +| `protocol_spec.md` | 早期 PC 端逆向协议(libmagcore/CoreSDKLib,2026-08-10 硬件验证),历史参考 | +| `gen_kotlin_tables.py` | 生成 `OfficialTables.kt`(palette256/T2E/E2T)的脚本 | +| `render_offline.c` | PC 端参考渲染管线(gcc 编译),Kotlin 移植的逐字节差分基准 | +| `official_render_frame.rgb` / `official_t2e_table.txt` / `t2e_table.json` / `test_ref_stats.txt` | PC 差分验证数据 | +| `revtools.py` / `reverse_tools/` | 逆向辅助脚本 | + +## sdk_re/ — 按 SDK 产品线归档 + +### `sdk_re/linux_libmagcore/` — Linux SDK(libmagcore.so.2.1.1,x86-64) +- `magcore_disasm.txt`(全量反汇编)+ `magcore_defined.txt` / `magcore_dynsyms.txt` / `magcore_relocs.txt` +- `disasm_*.txt`:关键函数级反汇编(LinkCameraEx / StartProcessImage / Raw2Temperature / + ConvertResponse2Temp / ReviseTemperature / ffc / frameParse / AccumulatorPushFrame 等) +- `all_functions_decomp_libmagcore.so_00100000.txt`:Ghidra 全量伪代码 + +### `sdk_re/windows_sdk/` — Windows SDK(CoreSDKLib.dll / ThermalSDK.dll) +- `refs_CoreSDKLib.dll.txt` / `exports_decomp_CoreSDKLib.dll.txt` / `keyfuncs_decomp_CoreSDKLib.dll.txt` + / `callers_decomp_CoreSDKLib.dll.txt` / `coresdk_keyfuncs_disasm.txt` / `coresdk_windows_disasm.txt` +- `exports_decomp_ThermalSDK.dll.txt` + `thermalsdk_dll/` + `thermalsdk_so/`(ThermalSDK 包装层) + +### `sdk_re/android_app/` — 官方安卓 App(普通版 MAG-Cx,本管线上真机跑通的代码) +- `jadx_magcx/`:**全量 Java 源码**(jadx 1.5.1)。核心:`cn/com/magnity/magnitycx/sdk/UsbCommunication.java` + (USB 协议真身)、`P2DCmd.java`/`D2PCmd.java`(命令表)、`DeviceController.java`(JNI 封装) +- `libcxsdk_decomp.txt`:Ghidra 全量伪代码(libcxsdk.so,1290 函数;Controller::StartProcess / + PushFrame / LoadCalibrationTable 已核对) +- `all_functions_decomp_libcoresdk_arm64.so_00100000.txt`:libcoresdk(arm64) 全量伪代码 + (专业版/网络路径,CNetComm 命令层) +- `coresdk_arm64_defined.txt`:ARM64 库符号表 + +## history/ — 过程记录(按时间) +`task_plan_20260714` → `findings_20260810` / `progress_20260810` / `handoff_20260810..13` / +`交接_完整逆向工程说明_20260811`(PC SDK 全流程报告)→ `reverse_20260813_full` / +`progress_reverse`。历史参考,协议细节以 `magcx_official_flow.md` 为准。 + +## preview/ — 渲染验证截图 +demo2_v3..v7 系列(管线复刻过程对照)、preview_*.png(安卓 UI 验证)。 + +## 与代码库的关系 +- `csdk/src/`:依据 Linux SDK 逆向写出的 C 参考实现(渲染/温度/IR 会话/FFC 调度), + Kotlin 管线(android/app)与其逐字节差分验证一致。 +- `android/app/src/main/java/com/mag160c/thermal/usb/IrSession.kt`:官方 + UsbCommunication.java 的 Kotlin 等价实现(含小端命令、800ms 超时、0x84 标定下载)。 +- `docs/android_app/HANDOFF_DEVELOPMENT.md` §4.2 指向本目录。 diff --git a/analysis/handoff_20260810.md b/analysis/history/handoff_20260810.md similarity index 100% rename from analysis/handoff_20260810.md rename to analysis/history/handoff_20260810.md diff --git a/analysis/handoff_20260811.md b/analysis/history/handoff_20260811.md similarity index 100% rename from analysis/handoff_20260811.md rename to analysis/history/handoff_20260811.md diff --git a/analysis/handoff_20260811_full.md b/analysis/history/handoff_20260811_full.md similarity index 100% rename from analysis/handoff_20260811_full.md rename to analysis/history/handoff_20260811_full.md diff --git a/analysis/handoff_20260812.md b/analysis/history/handoff_20260812.md similarity index 100% rename from analysis/handoff_20260812.md rename to analysis/history/handoff_20260812.md diff --git a/analysis/handoff_20260812_night.md b/analysis/history/handoff_20260812_night.md similarity index 100% rename from analysis/handoff_20260812_night.md rename to analysis/history/handoff_20260812_night.md diff --git a/analysis/handoff_20260813.md b/analysis/history/handoff_20260813.md similarity index 100% rename from analysis/handoff_20260813.md rename to analysis/history/handoff_20260813.md diff --git a/analysis/progress_reverse.md b/analysis/history/progress_reverse.md similarity index 100% rename from analysis/progress_reverse.md rename to analysis/history/progress_reverse.md diff --git a/analysis/reverse_20260813_full.md b/analysis/history/reverse_20260813_full.md similarity index 100% rename from analysis/reverse_20260813_full.md rename to analysis/history/reverse_20260813_full.md diff --git a/analysis/session_state.md b/analysis/history/session_state.md similarity index 100% rename from analysis/session_state.md rename to analysis/history/session_state.md diff --git a/交接_完整逆向工程说明_20260811.md b/analysis/history/交接_完整逆向工程说明_20260811.md similarity index 100% rename from 交接_完整逆向工程说明_20260811.md rename to analysis/history/交接_完整逆向工程说明_20260811.md diff --git a/analysis/magcx_official_flow.md b/analysis/magcx_official_flow.md index fffe976..9a2c8e7 100644 --- a/analysis/magcx_official_flow.md +++ b/analysis/magcx_official_flow.md @@ -1,10 +1,10 @@ # MAG160C 官方 MAG-Cx 完整逆向结论(2026-09-10,jadx + Ghidra 全量解包) > 产物来源: -> - Java 层:`analysis/jadx_magcx/`(jadx 1.5.1 反编译官方普通版 MAG-Cx.apk 全量源码) -> - Native 层:`analysis/ida/export/ghidra_dump/libcxsdk_decomp.txt` +> - Java 层:`analysis/sdk_re/android_app/jadx_magcx/`(jadx 1.5.1 反编译官方普通版 MAG-Cx.apk 全量源码) +> - Native 层:`analysis/sdk_re/android_app/libcxsdk_decomp.txt` > (Ghidra 11.3.2 headless 全量反编译 lib/armeabi/libcxsdk.so,1290 函数) -> - libcoresdk(arm64) 反编译已在 `analysis/ida/export/ghidra_dump/`(专业版/网络路径) +> - libcoresdk(arm64) 反编译已在 `analysis/sdk_re/android_app/`(专业版/网络路径) > - 本文结论全部来自以上反编译源码,与真机日志交叉验证(vivo V2509A, Android 16)。 ## 1. USB 协议权威版(以官方 Java UsbCommunication.java 为准) @@ -96,7 +96,7 @@ fpaTemp 在尾 +8(devType0/5/6/3),camTemp=fpaTemp-500。 ## 3. 工具与环境(2026-09-10 本机) - jadx 1.5.1:C:\Tools\jadx-1.5.1(反编译产物 C:\Tools\jadx-out,已拷贝入库 - analysis/jadx_magcx/) + analysis/sdk_re/android_app/jadx_magcx/) - Ghidra 11.3.2:C:\Tools\ghidra_11.3.2_PUBLIC;工程 C:\Tools\ghidra_proj\MagCX; 全量反编译脚本 C:\Tools\ghidra_scripts_user\DumpAllDecomp.java - 重跑命令(PowerShell/cmd): diff --git a/analysis/demo2_v3_mog_verified_20260810.png b/analysis/preview/demo2_v3_mog_verified_20260810.png similarity index 100% rename from analysis/demo2_v3_mog_verified_20260810.png rename to analysis/preview/demo2_v3_mog_verified_20260810.png diff --git a/analysis/demo2_v3_verified_20260810.png b/analysis/preview/demo2_v3_verified_20260810.png similarity index 100% rename from analysis/demo2_v3_verified_20260810.png rename to analysis/preview/demo2_v3_verified_20260810.png diff --git a/analysis/demo2_v4_selfheal_verified_20260810.png b/analysis/preview/demo2_v4_selfheal_verified_20260810.png similarity index 100% rename from analysis/demo2_v4_selfheal_verified_20260810.png rename to analysis/preview/demo2_v4_selfheal_verified_20260810.png diff --git a/analysis/demo2_v5_nuc_verified_20260810.png b/analysis/preview/demo2_v5_nuc_verified_20260810.png similarity index 100% rename from analysis/demo2_v5_nuc_verified_20260810.png rename to analysis/preview/demo2_v5_nuc_verified_20260810.png diff --git a/analysis/demo2_v6_nuc_final_20260810.png b/analysis/preview/demo2_v6_nuc_final_20260810.png similarity index 100% rename from analysis/demo2_v6_nuc_final_20260810.png rename to analysis/preview/demo2_v6_nuc_final_20260810.png diff --git a/analysis/demo2_v7_official_look_20260810.png b/analysis/preview/demo2_v7_official_look_20260810.png similarity index 100% rename from analysis/demo2_v7_official_look_20260810.png rename to analysis/preview/demo2_v7_official_look_20260810.png diff --git a/analysis/ida/export/ghidra_dump/all_functions_decomp_libcoresdk_arm64.so_00100000.txt b/analysis/sdk_re/android_app/all_functions_decomp_libcoresdk_arm64.so_00100000.txt similarity index 100% rename from analysis/ida/export/ghidra_dump/all_functions_decomp_libcoresdk_arm64.so_00100000.txt rename to analysis/sdk_re/android_app/all_functions_decomp_libcoresdk_arm64.so_00100000.txt diff --git a/analysis/ida/export/ghidra_dump/all_functions_libcoresdk_arm64.so_00100000.txt b/analysis/sdk_re/android_app/all_functions_libcoresdk_arm64.so_00100000.txt similarity index 100% rename from analysis/ida/export/ghidra_dump/all_functions_libcoresdk_arm64.so_00100000.txt rename to analysis/sdk_re/android_app/all_functions_libcoresdk_arm64.so_00100000.txt diff --git a/analysis/disasm/coresdk_arm64_defined.txt b/analysis/sdk_re/android_app/coresdk_arm64_defined.txt similarity index 100% rename from analysis/disasm/coresdk_arm64_defined.txt rename to analysis/sdk_re/android_app/coresdk_arm64_defined.txt diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/AboutAboutActivity.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/AboutAboutActivity.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/AboutAboutActivity.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/AboutAboutActivity.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/AboutProductActivity.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/AboutProductActivity.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/AboutProductActivity.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/AboutProductActivity.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/BuildConfig.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/BuildConfig.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/BuildConfig.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/BuildConfig.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentMediaInfo.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentMediaInfo.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentMediaInfo.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentMediaInfo.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentMode.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentMode.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentMode.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentMode.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentPalette.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentPalette.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentPalette.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentPalette.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentSetting.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentSetting.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentSetting.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/DialogFragmentSetting.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/DialogOption.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/DialogOption.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/DialogOption.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/DialogOption.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainBottom.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainBottom.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainBottom.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainBottom.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainCenter.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainCenter.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainCenter.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainCenter.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainTop.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainTop.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainTop.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentMainTop.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentMedia.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentMedia.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentMedia.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentMedia.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentSetting.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentSetting.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentSetting.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentSetting.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupport.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupport.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupport.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupport.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupportAbout.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupportAbout.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupportAbout.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupportAbout.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupportHelp.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupportHelp.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupportHelp.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/FragmentSupportHelp.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/ImageViewer.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/ImageViewer.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/ImageViewer.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/ImageViewer.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/ImageViewerVisible.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/ImageViewerVisible.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/ImageViewerVisible.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/ImageViewerVisible.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/MagApplication.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MagApplication.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/MagApplication.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MagApplication.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/MainActivity.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MainActivity.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/MainActivity.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MainActivity.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/MediaActivity.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MediaActivity.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/MediaActivity.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MediaActivity.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/MediaGridViewAdapter.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MediaGridViewAdapter.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/MediaGridViewAdapter.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MediaGridViewAdapter.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/MediaImageView.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MediaImageView.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/MediaImageView.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MediaImageView.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/MediaSingleActivity.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MediaSingleActivity.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/MediaSingleActivity.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/MediaSingleActivity.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/QueryDialogFragment.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/QueryDialogFragment.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/QueryDialogFragment.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/QueryDialogFragment.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/R.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/R.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/R.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/R.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/ROIInfo.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/ROIInfo.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/ROIInfo.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/ROIInfo.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/SettingActivity.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/SettingActivity.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/SettingActivity.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/SettingActivity.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/StoreActivity.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/StoreActivity.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/StoreActivity.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/StoreActivity.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/SupportActivity.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/SupportActivity.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/SupportActivity.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/SupportActivity.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/log/Logging.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/log/Logging.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/log/Logging.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/log/Logging.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/AsyncLoadImage.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/AsyncLoadImage.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/AsyncLoadImage.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/AsyncLoadImage.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/BasePara1.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/BasePara1.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/BasePara1.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/BasePara1.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/BasePara2.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/BasePara2.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/BasePara2.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/BasePara2.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/BitmapUtilities.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/BitmapUtilities.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/BitmapUtilities.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/BitmapUtilities.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/CaliInfo.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/CaliInfo.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/CaliInfo.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/CaliInfo.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/D2PCmd.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/D2PCmd.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/D2PCmd.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/D2PCmd.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateDeviceConnected.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateDeviceConnected.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateDeviceConnected.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateDeviceConnected.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateMedia.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateMedia.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateMedia.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateMedia.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateMediaStatusChanged.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateMediaStatusChanged.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateMediaStatusChanged.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateMediaStatusChanged.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateOptionSelected.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateOptionSelected.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateOptionSelected.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/DelegateOptionSelected.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/DeviceController.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/DeviceController.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/DeviceController.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/DeviceController.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/ExtPara.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/ExtPara.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/ExtPara.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/ExtPara.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/GlobalFunc.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/GlobalFunc.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/GlobalFunc.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/GlobalFunc.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/ImgHeader.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/ImgHeader.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/ImgHeader.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/ImgHeader.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/ImgTail.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/ImgTail.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/ImgTail.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/ImgTail.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/LruCacheManager.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/LruCacheManager.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/LruCacheManager.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/LruCacheManager.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/MagParameter.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/MagParameter.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/MagParameter.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/MagParameter.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/MsgBus.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/MsgBus.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/MsgBus.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/MsgBus.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/Observable.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/Observable.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/Observable.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/Observable.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/P2DCmd.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/P2DCmd.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/P2DCmd.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/P2DCmd.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/SharedPreferencesManager.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/SharedPreferencesManager.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/SharedPreferencesManager.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/SharedPreferencesManager.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/State.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/State.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/State.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/State.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/TimerHelper.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/TimerHelper.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/TimerHelper.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/TimerHelper.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/UsbCommunication.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/UsbCommunication.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/UsbCommunication.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/UsbCommunication.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/UsbConnection.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/UsbConnection.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/UsbConnection.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/UsbConnection.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/VisibleCamera.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/VisibleCamera.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/VisibleCamera.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/VisibleCamera.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/VisibleCameraHelper.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/VisibleCameraHelper.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/VisibleCameraHelper.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/VisibleCameraHelper.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/WaitCondition.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/WaitCondition.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/sdk/WaitCondition.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/sdk/WaitCondition.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/upgrade/CheckVersionTask.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/upgrade/CheckVersionTask.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/upgrade/CheckVersionTask.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/upgrade/CheckVersionTask.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/upgrade/HttpHelper.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/upgrade/HttpHelper.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/upgrade/HttpHelper.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/upgrade/HttpHelper.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/upgrade/UpgradeInfo.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/upgrade/UpgradeInfo.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/upgrade/UpgradeInfo.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/upgrade/UpgradeInfo.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/upgrade/UpgradeManager.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/upgrade/UpgradeManager.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/upgrade/UpgradeManager.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/upgrade/UpgradeManager.java diff --git a/analysis/jadx_magcx/cn/com/magnity/magnitycx/util/ActivityUtils.java b/analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/util/ActivityUtils.java similarity index 100% rename from analysis/jadx_magcx/cn/com/magnity/magnitycx/util/ActivityUtils.java rename to analysis/sdk_re/android_app/jadx_magcx/cn/com/magnity/magnitycx/util/ActivityUtils.java diff --git a/analysis/ida/export/ghidra_dump/libcxsdk_decomp.txt b/analysis/sdk_re/android_app/libcxsdk_decomp.txt similarity index 100% rename from analysis/ida/export/ghidra_dump/libcxsdk_decomp.txt rename to analysis/sdk_re/android_app/libcxsdk_decomp.txt diff --git a/analysis/ida/export/ghidra_dump/all_functions_decomp_libmagcore.so_00100000.txt b/analysis/sdk_re/linux_libmagcore/all_functions_decomp_libmagcore.so_00100000.txt similarity index 100% rename from analysis/ida/export/ghidra_dump/all_functions_decomp_libmagcore.so_00100000.txt rename to analysis/sdk_re/linux_libmagcore/all_functions_decomp_libmagcore.so_00100000.txt diff --git a/analysis/ida/export/ghidra_dump/all_functions_libmagcore.so_00100000.txt b/analysis/sdk_re/linux_libmagcore/all_functions_libmagcore.so_00100000.txt similarity index 100% rename from analysis/ida/export/ghidra_dump/all_functions_libmagcore.so_00100000.txt rename to analysis/sdk_re/linux_libmagcore/all_functions_libmagcore.so_00100000.txt diff --git a/analysis/disasm/disasm_18f40.txt b/analysis/sdk_re/linux_libmagcore/disasm_18f40.txt similarity index 100% rename from analysis/disasm/disasm_18f40.txt rename to analysis/sdk_re/linux_libmagcore/disasm_18f40.txt diff --git a/analysis/disasm/disasm_191a0.txt b/analysis/sdk_re/linux_libmagcore/disasm_191a0.txt similarity index 100% rename from analysis/disasm/disasm_191a0.txt rename to analysis/sdk_re/linux_libmagcore/disasm_191a0.txt diff --git a/analysis/disasm/disasm_19990.txt b/analysis/sdk_re/linux_libmagcore/disasm_19990.txt similarity index 100% rename from analysis/disasm/disasm_19990.txt rename to analysis/sdk_re/linux_libmagcore/disasm_19990.txt diff --git a/analysis/disasm/disasm_19e00.txt b/analysis/sdk_re/linux_libmagcore/disasm_19e00.txt similarity index 100% rename from analysis/disasm/disasm_19e00.txt rename to analysis/sdk_re/linux_libmagcore/disasm_19e00.txt diff --git a/analysis/disasm/disasm_5cc10.txt b/analysis/sdk_re/linux_libmagcore/disasm_5cc10.txt similarity index 100% rename from analysis/disasm/disasm_5cc10.txt rename to analysis/sdk_re/linux_libmagcore/disasm_5cc10.txt diff --git a/analysis/disasm/disasm_5f900.txt b/analysis/sdk_re/linux_libmagcore/disasm_5f900.txt similarity index 100% rename from analysis/disasm/disasm_5f900.txt rename to analysis/sdk_re/linux_libmagcore/disasm_5f900.txt diff --git a/analysis/disasm/disasm_60770_5e320.txt b/analysis/sdk_re/linux_libmagcore/disasm_60770_5e320.txt similarity index 100% rename from analysis/disasm/disasm_60770_5e320.txt rename to analysis/sdk_re/linux_libmagcore/disasm_60770_5e320.txt diff --git a/analysis/disasm/disasm_66bcde.txt b/analysis/sdk_re/linux_libmagcore/disasm_66bcde.txt similarity index 100% rename from analysis/disasm/disasm_66bcde.txt rename to analysis/sdk_re/linux_libmagcore/disasm_66bcde.txt diff --git a/analysis/disasm/disasm_AccumulatorPushFrame.txt b/analysis/sdk_re/linux_libmagcore/disasm_AccumulatorPushFrame.txt similarity index 100% rename from analysis/disasm/disasm_AccumulatorPushFrame.txt rename to analysis/sdk_re/linux_libmagcore/disasm_AccumulatorPushFrame.txt diff --git a/analysis/disasm/disasm_ConvertResponse2Temp.txt b/analysis/sdk_re/linux_libmagcore/disasm_ConvertResponse2Temp.txt similarity index 100% rename from analysis/disasm/disasm_ConvertResponse2Temp.txt rename to analysis/sdk_re/linux_libmagcore/disasm_ConvertResponse2Temp.txt diff --git a/analysis/disasm/disasm_GetTemperature.txt b/analysis/sdk_re/linux_libmagcore/disasm_GetTemperature.txt similarity index 100% rename from analysis/disasm/disasm_GetTemperature.txt rename to analysis/sdk_re/linux_libmagcore/disasm_GetTemperature.txt diff --git a/analysis/disasm/disasm_LinkCameraEx.txt b/analysis/sdk_re/linux_libmagcore/disasm_LinkCameraEx.txt similarity index 100% rename from analysis/disasm/disasm_LinkCameraEx.txt rename to analysis/sdk_re/linux_libmagcore/disasm_LinkCameraEx.txt diff --git a/analysis/disasm/disasm_Raw2Temperature.txt b/analysis/sdk_re/linux_libmagcore/disasm_Raw2Temperature.txt similarity index 100% rename from analysis/disasm/disasm_Raw2Temperature.txt rename to analysis/sdk_re/linux_libmagcore/disasm_Raw2Temperature.txt diff --git a/analysis/disasm/disasm_Raw2Temperature_2.txt b/analysis/sdk_re/linux_libmagcore/disasm_Raw2Temperature_2.txt similarity index 100% rename from analysis/disasm/disasm_Raw2Temperature_2.txt rename to analysis/sdk_re/linux_libmagcore/disasm_Raw2Temperature_2.txt diff --git a/analysis/disasm/disasm_Revise2.txt b/analysis/sdk_re/linux_libmagcore/disasm_Revise2.txt similarity index 100% rename from analysis/disasm/disasm_Revise2.txt rename to analysis/sdk_re/linux_libmagcore/disasm_Revise2.txt diff --git a/analysis/disasm/disasm_ReviseTemperature.txt b/analysis/sdk_re/linux_libmagcore/disasm_ReviseTemperature.txt similarity index 100% rename from analysis/disasm/disasm_ReviseTemperature.txt rename to analysis/sdk_re/linux_libmagcore/disasm_ReviseTemperature.txt diff --git a/analysis/disasm/disasm_StartProcessImage.txt b/analysis/sdk_re/linux_libmagcore/disasm_StartProcessImage.txt similarity index 100% rename from analysis/disasm/disasm_StartProcessImage.txt rename to analysis/sdk_re/linux_libmagcore/disasm_StartProcessImage.txt diff --git a/analysis/disasm/disasm_cmdfuncs.txt b/analysis/sdk_re/linux_libmagcore/disasm_cmdfuncs.txt similarity index 100% rename from analysis/disasm/disasm_cmdfuncs.txt rename to analysis/sdk_re/linux_libmagcore/disasm_cmdfuncs.txt diff --git a/analysis/disasm/disasm_correct_blind.txt b/analysis/sdk_re/linux_libmagcore/disasm_correct_blind.txt similarity index 100% rename from analysis/disasm/disasm_correct_blind.txt rename to analysis/sdk_re/linux_libmagcore/disasm_correct_blind.txt diff --git a/analysis/disasm/disasm_ffc.txt b/analysis/sdk_re/linux_libmagcore/disasm_ffc.txt similarity index 100% rename from analysis/disasm/disasm_ffc.txt rename to analysis/sdk_re/linux_libmagcore/disasm_ffc.txt diff --git a/analysis/disasm/disasm_frameParse.txt b/analysis/sdk_re/linux_libmagcore/disasm_frameParse.txt similarity index 100% rename from analysis/disasm/disasm_frameParse.txt rename to analysis/sdk_re/linux_libmagcore/disasm_frameParse.txt diff --git a/analysis/disasm/disasm_init.txt b/analysis/sdk_re/linux_libmagcore/disasm_init.txt similarity index 100% rename from analysis/disasm/disasm_init.txt rename to analysis/sdk_re/linux_libmagcore/disasm_init.txt diff --git a/analysis/disasm/disasm_linkCore.txt b/analysis/sdk_re/linux_libmagcore/disasm_linkCore.txt similarity index 100% rename from analysis/disasm/disasm_linkCore.txt rename to analysis/sdk_re/linux_libmagcore/disasm_linkCore.txt diff --git a/analysis/disasm/disasm_misc.txt b/analysis/sdk_re/linux_libmagcore/disasm_misc.txt similarity index 100% rename from analysis/disasm/disasm_misc.txt rename to analysis/sdk_re/linux_libmagcore/disasm_misc.txt diff --git a/analysis/disasm/disasm_realLink.txt b/analysis/sdk_re/linux_libmagcore/disasm_realLink.txt similarity index 100% rename from analysis/disasm/disasm_realLink.txt rename to analysis/sdk_re/linux_libmagcore/disasm_realLink.txt diff --git a/analysis/disasm/disasm_region15000.txt b/analysis/sdk_re/linux_libmagcore/disasm_region15000.txt similarity index 100% rename from analysis/disasm/disasm_region15000.txt rename to analysis/sdk_re/linux_libmagcore/disasm_region15000.txt diff --git a/analysis/disasm/disasm_region15100.txt b/analysis/sdk_re/linux_libmagcore/disasm_region15100.txt similarity index 100% rename from analysis/disasm/disasm_region15100.txt rename to analysis/sdk_re/linux_libmagcore/disasm_region15100.txt diff --git a/analysis/disasm/disasm_startcore.txt b/analysis/sdk_re/linux_libmagcore/disasm_startcore.txt similarity index 100% rename from analysis/disasm/disasm_startcore.txt rename to analysis/sdk_re/linux_libmagcore/disasm_startcore.txt diff --git a/analysis/disasm/disasm_thread2.txt b/analysis/sdk_re/linux_libmagcore/disasm_thread2.txt similarity index 100% rename from analysis/disasm/disasm_thread2.txt rename to analysis/sdk_re/linux_libmagcore/disasm_thread2.txt diff --git a/analysis/disasm/disasm_val2temp.txt b/analysis/sdk_re/linux_libmagcore/disasm_val2temp.txt similarity index 100% rename from analysis/disasm/disasm_val2temp.txt rename to analysis/sdk_re/linux_libmagcore/disasm_val2temp.txt diff --git a/analysis/disasm/magcore_defined.txt b/analysis/sdk_re/linux_libmagcore/magcore_defined.txt similarity index 100% rename from analysis/disasm/magcore_defined.txt rename to analysis/sdk_re/linux_libmagcore/magcore_defined.txt diff --git a/analysis/disasm/magcore_disasm.txt b/analysis/sdk_re/linux_libmagcore/magcore_disasm.txt similarity index 100% rename from analysis/disasm/magcore_disasm.txt rename to analysis/sdk_re/linux_libmagcore/magcore_disasm.txt diff --git a/analysis/disasm/magcore_dynsyms.txt b/analysis/sdk_re/linux_libmagcore/magcore_dynsyms.txt similarity index 100% rename from analysis/disasm/magcore_dynsyms.txt rename to analysis/sdk_re/linux_libmagcore/magcore_dynsyms.txt diff --git a/analysis/disasm/magcore_relocs.txt b/analysis/sdk_re/linux_libmagcore/magcore_relocs.txt similarity index 100% rename from analysis/disasm/magcore_relocs.txt rename to analysis/sdk_re/linux_libmagcore/magcore_relocs.txt diff --git a/analysis/ida/export/ghidra_dump/callers_decomp_CoreSDKLib.dll.txt b/analysis/sdk_re/windows_sdk/callers_decomp_CoreSDKLib.dll.txt similarity index 100% rename from analysis/ida/export/ghidra_dump/callers_decomp_CoreSDKLib.dll.txt rename to analysis/sdk_re/windows_sdk/callers_decomp_CoreSDKLib.dll.txt diff --git a/analysis/ida/export/coresdk_keyfuncs_disasm.txt b/analysis/sdk_re/windows_sdk/coresdk_keyfuncs_disasm.txt similarity index 100% rename from analysis/ida/export/coresdk_keyfuncs_disasm.txt rename to analysis/sdk_re/windows_sdk/coresdk_keyfuncs_disasm.txt diff --git a/analysis/disasm/coresdk_windows_disasm.txt b/analysis/sdk_re/windows_sdk/coresdk_windows_disasm.txt similarity index 100% rename from analysis/disasm/coresdk_windows_disasm.txt rename to analysis/sdk_re/windows_sdk/coresdk_windows_disasm.txt diff --git a/analysis/ida/export/ghidra_dump/exports_decomp_CoreSDKLib.dll.txt b/analysis/sdk_re/windows_sdk/exports_decomp_CoreSDKLib.dll.txt similarity index 100% rename from analysis/ida/export/ghidra_dump/exports_decomp_CoreSDKLib.dll.txt rename to analysis/sdk_re/windows_sdk/exports_decomp_CoreSDKLib.dll.txt diff --git a/analysis/ida/export/ghidra_dump/exports_decomp_ThermalSDK.dll.txt b/analysis/sdk_re/windows_sdk/exports_decomp_ThermalSDK.dll.txt similarity index 100% rename from analysis/ida/export/ghidra_dump/exports_decomp_ThermalSDK.dll.txt rename to analysis/sdk_re/windows_sdk/exports_decomp_ThermalSDK.dll.txt diff --git a/analysis/ida/export/ghidra_dump/keyfuncs_decomp_CoreSDKLib.dll.txt b/analysis/sdk_re/windows_sdk/keyfuncs_decomp_CoreSDKLib.dll.txt similarity index 100% rename from analysis/ida/export/ghidra_dump/keyfuncs_decomp_CoreSDKLib.dll.txt rename to analysis/sdk_re/windows_sdk/keyfuncs_decomp_CoreSDKLib.dll.txt diff --git a/analysis/ida/export/ghidra_dump/refs_CoreSDKLib.dll.txt b/analysis/sdk_re/windows_sdk/refs_CoreSDKLib.dll.txt similarity index 100% rename from analysis/ida/export/ghidra_dump/refs_CoreSDKLib.dll.txt rename to analysis/sdk_re/windows_sdk/refs_CoreSDKLib.dll.txt diff --git a/analysis/ida/export/thermalsdk_dll/all_functions.txt b/analysis/sdk_re/windows_sdk/thermalsdk_dll/all_functions.txt similarity index 100% rename from analysis/ida/export/thermalsdk_dll/all_functions.txt rename to analysis/sdk_re/windows_sdk/thermalsdk_dll/all_functions.txt diff --git a/analysis/ida/export/thermalsdk_dll/all_functions_disasm.txt b/analysis/sdk_re/windows_sdk/thermalsdk_dll/all_functions_disasm.txt similarity index 100% rename from analysis/ida/export/thermalsdk_dll/all_functions_disasm.txt rename to analysis/sdk_re/windows_sdk/thermalsdk_dll/all_functions_disasm.txt diff --git a/analysis/ida/export/thermalsdk_so/all_functions.txt b/analysis/sdk_re/windows_sdk/thermalsdk_so/all_functions.txt similarity index 100% rename from analysis/ida/export/thermalsdk_so/all_functions.txt rename to analysis/sdk_re/windows_sdk/thermalsdk_so/all_functions.txt diff --git a/analysis/ida/export/thermalsdk_so/all_functions_disasm.txt b/analysis/sdk_re/windows_sdk/thermalsdk_so/all_functions_disasm.txt similarity index 100% rename from analysis/ida/export/thermalsdk_so/all_functions_disasm.txt rename to analysis/sdk_re/windows_sdk/thermalsdk_so/all_functions_disasm.txt diff --git a/docs/android_app/HANDOFF_DEVELOPMENT.md b/docs/android_app/HANDOFF_DEVELOPMENT.md index 141a5e4..454b6bc 100644 --- a/docs/android_app/HANDOFF_DEVELOPMENT.md +++ b/docs/android_app/HANDOFF_DEVELOPMENT.md @@ -102,9 +102,9 @@ res/drawable/*.xml 自绘矢量图标(双弧圆等可靠几何图形 - 验证方式:`android/app/src/test/.../RenderPipelineTest.kt`(JVM 差分测试,参照 `analysis/render_offline.c` 的 C 输出,60帧序列与官方DDT)。 ### 4.2 USB 协议(权威版:analysis/magcx_official_flow.md) -- **2026-09-10 已反编译官方普通版全量源码**(jadx:`analysis/jadx_magcx/`, +- **2026-09-10 已反编译官方普通版全量源码**(jadx:`analysis/sdk_re/android_app/jadx_magcx/`, UsbCommunication.java 是 USB 层真身;Ghidra:libcxsdk 全量伪代码 - `analysis/ida/export/ghidra_dump/libcxsdk_decomp.txt`,1290 函数)。 + `analysis/sdk_re/android_app/libcxsdk_decomp.txt`,1290 函数)。 - 协议要点:命令 4 字节**小端**;超时全线 800ms;序列 GetParameter1(66b)→GetParameter2(66c)→GetCaliInfo(66f)→[缓存缺失] GetCaliFile(670)+EP 0x84 拉 16KB 块→StartTransferImg(673);FFC=672(帧驱动)。 @@ -173,8 +173,8 @@ git -C C:\Project\MAG160C commit -m "android: ..." 4. **写代码要谨慎**:本会话多次因急于成稿写出语法错误/残留死代码。每写一个文件后立即编译。 5. **ByteBuffer.putInt 默认大端**:USB 命令必须小端(官方 intToByteArray)。 16 轮黑屏调试的根因就是它(66b 回文数掩盖了字节反转),MagProtocolTest 已锁死。 -6. **官方 App 源码已入库,先读它再写协议代码**:analysis/jadx_magcx/(Java)、 - analysis/ida/export/ghidra_dump/libcxsdk_decomp.txt(native)、 +6. **官方 App 源码已入库,先读它再写协议代码**:analysis/sdk_re/android_app/jadx_magcx/(Java)、 + analysis/sdk_re/android_app/libcxsdk_decomp.txt(native)、 analysis/magcx_official_flow.md(权威结论)。不要凭旧文档猜协议。 ## 7. 当前状态与待办 diff --git a/docs/android_app/session_state.md b/docs/android_app/session_state.md index 09b01e5..81e4f8b 100644 --- a/docs/android_app/session_state.md +++ b/docs/android_app/session_state.md @@ -366,8 +366,8 @@ GetParameter2/StartTransferImg/SetShutterState 的线缆字节序。 - [x] 构建+单测全过;APK 已更新。提交 623d62b。 - [x] **按用户要求完成全量解包复核**(产物入库 analysis/): - - `analysis/jadx_magcx/`:官方普通版全量 Java 源码(64 文件); - - `analysis/ida/export/ghidra_dump/libcxsdk_decomp.txt`:Ghidra 11.3.2 全量 + - `analysis/sdk_re/android_app/jadx_magcx/`:官方普通版全量 Java 源码(64 文件); + - `analysis/sdk_re/android_app/libcxsdk_decomp.txt`:Ghidra 11.3.2 全量 反编译 libcxsdk.so(1290 函数); - `analysis/magcx_official_flow.md`:权威协议结论(命令表/BasePara/CaliInfo/ 连接序列/FFC 逻辑/工具重跑命令)。