#ifndef _FW_ANALYZER_H_ #define _FW_ANALYZER_H_ #include #include "gsp_rpc_client.h" /* Firmware addresses discovered from analysis */ struct fw_addresses { u64 rpc_dispatch_primary; u64 rpc_jump_table; u64 alloc_main; u64 schedule_main; u64 bar_trap_handler; u64 wpr_handler1; u64 wpr_handler2; u64 migration_table1; u64 migration_table2; u64 entry_point; }; /* Analysis result */ struct fw_analysis_result { char version[32]; size_t fw_size; u32 crc32; u8 sha256[32]; struct fw_addresses addresses; bool matched; }; /* Public API */ int fw_analyzer_analyze(const u8 *fw_data, size_t fw_len, struct fw_analysis_result *result); int fw_analyzer_load_and_analyze(const char *fw_path, struct fw_analysis_result *result); void fw_analyzer_print_result(const struct fw_analysis_result *result); #endif /* _FW_ANALYZER_H_ */