Files
MAG160C/analysis/ida
ZXCLI df6c6dd444 移植官方附加环节全部路径:帧差/隔行平滑/gray覆盖/Nx升采样(编译开关+按键测试)
- OFF_IMPL_230: 帧差调整 0x175a0 逐行移植(0x278 官方 NULL 时 no-op)
- OFF_IMPL_41FE8: 隔行平滑 0x184f0(2x)/0x18660(4x) 逐行翻译(4相位加权插值)
- OFF_IMPL_30: gray 覆盖路径——0x17c40 manual 逐行翻译(8x8窗口4x4采样
  对比度增强累积→gray);0x17770 auto 双边滤波结构移植(官方空间权重表
  在 .data 被裁剪无法提取,用标准高斯核近似,文档注明)
- OFF_IMPL_UPSCALE: Nx 升采样 4x/8x(2x 已验证模式推广,线性插值+边缘外推)
- 运行时按键切换:0=41fe8 模式、8=0x230、9=0x30 模式
- 验证:默认版无回归;全开版运行正常,41fe8=1 平滑生效(nuc std 250→95)
- 文档:csdk/README 开关说明、csdk/README 验证状态更新
2026-08-14 16:52:52 +08:00
..

IDA / Ghidra 逆向工具链(2026-08-13 部署)

已安装工具

工具 位置 用途
IDA Free 8.4 C:\Program Files\IDA Freeware 8.4\ida64.exe x86/x64 交互分析,F5 反编译(GUI 内),不支持批处理
Ghidra 12.1.2 C:\Tools\ghidra_12.1.2_PUBLIC ARM64/任意架构批处理反编译,headless 自动建库
Java C:\Program Files\Zulu\zulu-21 Ghidra 需要,不在 PATH,需设 JAVA_HOME

限制说明

  • IDA Free 8.4 只支持 x86/x64(官方页面确认),不支持 ARM;不支持批处理模式(-A 直接报 "does not support the batch mode")。
  • IDA Free 的 IDC 是半残的:get_func/get_first_func/decompile() 文本导出不可用(decompile 返回不透明对象,无法转文本)。可用的迭代 API 是 get_next_func(ea) / get_prev_func(ea),配 get_func_attr(ea, FUNCATTR_START/END)
  • IDA Free 反编译器(hexx64/hexarm64)已注册,但只能在 GUI 里按 F5 查看,无法脚本导出伪代码。伪代码批量导出请用 Ghidra。

目录内容

  • CoreSDKLib.dll.i64 / ThermalSDK.dll.i64 / libthermalSDK.so.i64IDA 数据库(GUI 打开 .i64 即可,分析已跑完)。
  • export/coresdk_keyfuncs_disasm.txtCoreSDKLib.dll 12 个关键函数反汇编 + xrefsNUC 0x180017200、盲元 0x180017330、温度端点 0x180016ae0、阈值插值 0x180016dd0、gain/off 插值 0x180016f10、表重建 0x18000c760、ref 推送 0x18000c620、平滑器 0x1800011a0、temporal 0x18001e920、FFC 0x18000a1d2/0x180002f50、温度 0x180010780)。
  • export/thermalsdk_dll/ThermalSDK.dll 全量(368 函数)。
  • export/thermalsdk_so/libthermalSDK.so 全量(5150 函数,带完整符号:MAG_InitializeMAG_NewChannelThermalController::* 等)。
  • export/ghidra_dump/Ghidra 伪代码全量导出。
    • all_functions_decomp_libcoresdk_arm64.so_00100000.txt21.6MB7117 函数):ARM64 全量 C 伪代码,含 JNIJava_cn_com_magnity_coresdk_MagDevice_*)和温度函数(ConvertInnerTemp2mCGetTemperatureProbeGetLineTemperatureInfo 等)。
    • all_functions_decomp_libmagcore.so_00100000.txt937KB841 函数)。

使用方式

IDA GUI(交互分析 x86/x64

Start-Process "C:\Program Files\IDA Freeware 8.4\ida64.exe" -ArgumentList '"C:\Project\MAG160C\analysis\ida\CoreSDKLib.dll.i64"'

打开 .i64 后:F5 看伪代码,按地址跳转 G,交叉引用 X。 要重新对某个函数导出反汇编文本:Alt+F7 运行 export_core_disasm.idc(会重写 export/coresdk_keyfuncs_disasm.txt)。 新 DLL 建库:File→Open 选 .dll,默认选项,等 Idle 后 Alt+F7 运行 export_all.idc(全量导出到 export/),Ctrl+W 保存。

Ghidra headless(批处理任意架构)

$env:JAVA_HOME = "C:\Program Files\Zulu\zulu-21"
& "C:\Tools\ghidra_12.1.2_PUBLIC\support\analyzeHeadless.bat" "C:\Tools\ghidra_proj" mag160c -import "文件路径" -overwrite
& "C:\Tools\ghidra_12.1.2_PUBLIC\support\analyzeHeadless.bat" "C:\Tools\ghidra_proj" mag160c -process "文件名" -noanalysis -scriptPath "C:\Tools\ghidra_12.1.2_PUBLIC\scripts" -postScript ExportAllDecomp

导出脚本:C:\Tools\ghidra_12.1.2_PUBLIC\scripts\ExportAllDecomp.java(全函数伪代码 + 函数表,按程序名+基址命名输出到 export/ghidra_dump/)。

与旧 objdump 反汇编的关系

analysis/disasm/ 下旧的 coresdk_windows_disasm.txt193k 行 objdump 输出)仍有效,与本目录 IDA 导出相互印证。地址基址一致:Windows DLL 0x180000000ARM64 .so 0x100000。