CHDK_DE Vorschauversion
Trunk Rev. 6014
|
#include <inttypes.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <capstone.h>
#include "stubs_load.h"
#include "firmware_load_ng.h"
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
#define | MATCH_SIMPLE_FUNC_NONE 0x0 |
#define | MATCH_SIMPLE_FUNC_NULLSUB 0x1 |
#define | MATCH_SIMPLE_FUNC_IMM 0x2 |
#define | MATCH_SIMPLE_FUNC_ANY 0x3 |
Variablen | |
const insn_match_t | match_b [] |
const insn_match_t | match_bl [] |
const insn_match_t | match_b_bl [] |
const insn_match_t | match_b_bl_blximm [] |
const insn_match_t | match_bl_blximm [] |
const insn_match_t | match_bxlr [] |
const insn_match_t | match_bxreg [] |
const insn_match_t | match_blxreg [] |
const insn_match_t | match_ldr_pc [] |
static const arm_reg | reg_order [] |
#define MATCH_SIMPLE_FUNC_ANY 0x3 |
Definiert in Zeile 1727 der Datei firmware_load_ng.c.
#define MATCH_SIMPLE_FUNC_IMM 0x2 |
Definiert in Zeile 1724 der Datei firmware_load_ng.c.
#define MATCH_SIMPLE_FUNC_NONE 0x0 |
Definiert in Zeile 1720 der Datei firmware_load_ng.c.
#define MATCH_SIMPLE_FUNC_NULLSUB 0x1 |
Definiert in Zeile 1722 der Datei firmware_load_ng.c.
|
static |
uint32_t ADR2adr | ( | __attribute__((unused)) firmware * | fw, |
cs_insn * | insn | ||
) |
Definiert in Zeile 733 der Datei firmware_load_ng.c.
Definiert in Zeile 278 der Datei firmware_load_ng.c.
Definiert in Zeile 293 der Datei firmware_load_ng.c.
adr_range_t* adr_get_range | ( | firmware * | fw, |
uint32_t | adr | ||
) |
Definiert in Zeile 249 der Datei firmware_load_ng.c.
Definiert in Zeile 263 der Datei firmware_load_ng.c.
void adr_hist_add | ( | adr_hist_t * | ah, |
uint32_t | adr | ||
) |
Definiert in Zeile 456 der Datei firmware_load_ng.c.
uint32_t adr_hist_get | ( | adr_hist_t * | ah, |
int | i | ||
) |
Definiert in Zeile 467 der Datei firmware_load_ng.c.
int adr_hist_index | ( | adr_hist_t * | ah, |
int | i | ||
) |
Definiert in Zeile 446 der Datei firmware_load_ng.c.
void adr_hist_reset | ( | adr_hist_t * | ah) |
Definiert in Zeile 437 der Datei firmware_load_ng.c.
Definiert in Zeile 355 der Datei firmware_load_ng.c.
Definiert in Zeile 349 der Datei firmware_load_ng.c.
const char* adr_range_desc_str | ( | adr_range_t * | r) |
Definiert in Zeile 327 der Datei firmware_load_ng.c.
const char* adr_range_type_str | ( | int | type) |
Definiert in Zeile 310 der Datei firmware_load_ng.c.
uint32_t ADRx2adr | ( | __attribute__((unused)) firmware * | fw, |
cs_insn * | insn | ||
) |
Definiert in Zeile 709 der Datei firmware_load_ng.c.
uint32_t B_BL_BLXimm_target | ( | __attribute__((unused)) firmware * | fw, |
cs_insn * | insn | ||
) |
Definiert in Zeile 822 der Datei firmware_load_ng.c.
uint32_t B_BL_target | ( | __attribute__((unused)) firmware * | fw, |
cs_insn * | insn | ||
) |
Definiert in Zeile 812 der Datei firmware_load_ng.c.
uint32_t B_target | ( | __attribute__((unused)) firmware * | fw, |
cs_insn * | insn | ||
) |
Definiert in Zeile 774 der Datei firmware_load_ng.c.
uint32_t BL_target | ( | __attribute__((unused)) firmware * | fw, |
cs_insn * | insn | ||
) |
Definiert in Zeile 803 der Datei firmware_load_ng.c.
uint32_t BLXimm_target | ( | __attribute__((unused)) firmware * | fw, |
cs_insn * | insn | ||
) |
Definiert in Zeile 793 der Datei firmware_load_ng.c.
uint32_t BX_PC_target | ( | __attribute__((unused)) firmware * | fw, |
cs_insn * | insn | ||
) |
Definiert in Zeile 833 der Datei firmware_load_ng.c.
uint32_t CBx_target | ( | __attribute__((unused)) firmware * | fw, |
cs_insn * | insn | ||
) |
Definiert in Zeile 784 der Datei firmware_load_ng.c.
int check_simple_func | ( | firmware * | fw, |
uint32_t | adr, | ||
int | match_ftype, | ||
simple_func_desc_t * | info | ||
) |
Definiert in Zeile 1728 der Datei firmware_load_ng.c.
int disasm_iter | ( | __attribute__((unused)) firmware * | fw, |
iter_state_t * | is | ||
) |
Definiert in Zeile 1018 der Datei firmware_load_ng.c.
void disasm_iter_free | ( | iter_state_t * | is) |
Definiert in Zeile 963 der Datei firmware_load_ng.c.
int disasm_iter_init | ( | __attribute__((unused)) firmware * | fw, |
iter_state_t * | is, | ||
uint32_t | adr | ||
) |
Definiert in Zeile 1009 der Datei firmware_load_ng.c.
iter_state_t* disasm_iter_new | ( | firmware * | fw, |
uint32_t | adr | ||
) |
Definiert in Zeile 952 der Datei firmware_load_ng.c.
int disasm_iter_set | ( | firmware * | fw, |
iter_state_t * | is, | ||
uint32_t | adr | ||
) |
Definiert in Zeile 972 der Datei firmware_load_ng.c.
int do_blx_check | ( | firmware * | fw) |
Definiert in Zeile 2351 der Datei firmware_load_ng.c.
int find_and_get_var_ldr | ( | firmware * | fw, |
iter_state_t * | is, | ||
int | max_search_insns, | ||
int | max_seq_insns, | ||
arm_reg | match_val_reg, | ||
var_ldr_desc_t * | result | ||
) |
int find_bytes_all | ( | firmware * | fw, |
const void * | bytes, | ||
size_t | len, | ||
uint32_t | adr, | ||
uint32_t * | result, | ||
int | max | ||
) |
Definiert in Zeile 174 der Datei firmware_load_ng.c.
int find_const_ref_call | ( | firmware * | fw, |
iter_state_t * | is, | ||
int | max_search_bytes, | ||
int | max_gap_insns, | ||
arm_reg | match_reg, | ||
uint32_t | val | ||
) |
Definiert in Zeile 1701 der Datei firmware_load_ng.c.
int find_const_ref_match | ( | firmware * | fw, |
iter_state_t * | is, | ||
int | max_search_bytes, | ||
int | max_gap_insns, | ||
arm_reg | match_reg, | ||
uint32_t | val, | ||
const insn_match_t * | match, | ||
int | match_type | ||
) |
Definiert in Zeile 1644 der Datei firmware_load_ng.c.
void find_dryos_vers | ( | firmware * | fw) |
Definiert in Zeile 2203 der Datei firmware_load_ng.c.
void find_exception_vec | ( | firmware * | fw, |
iter_state_t * | is | ||
) |
Definiert in Zeile 2472 der Datei firmware_load_ng.c.
uint32_t find_last_call_from_func | ( | firmware * | fw, |
iter_state_t * | is, | ||
int | min_insns, | ||
int | max_insns | ||
) |
Definiert in Zeile 1787 der Datei firmware_load_ng.c.
uint32_t find_next_bytes_range | ( | firmware * | fw, |
const void * | bytes, | ||
size_t | len, | ||
uint32_t | start_adr, | ||
uint32_t | max_adr | ||
) |
Definiert in Zeile 132 der Datei firmware_load_ng.c.
Definiert in Zeile 215 der Datei firmware_load_ng.c.
Definiert in Zeile 196 der Datei firmware_load_ng.c.
uint32_t find_next_str_bytes_range | ( | firmware * | fw, |
const char * | str, | ||
uint32_t | adr, | ||
uint32_t | max_adr | ||
) |
Definiert in Zeile 190 der Datei firmware_load_ng.c.
Definiert in Zeile 183 der Datei firmware_load_ng.c.
int find_Nth_str | ( | firmware * | fw, |
char * | str, | ||
int | N | ||
) |
Definiert in Zeile 99 der Datei firmware_load_ng.c.
int find_startup_copy | ( | firmware * | fw, |
iter_state_t * | is, | ||
int | max_search, | ||
uint32_t * | src_start, | ||
uint32_t * | dst_start, | ||
uint32_t * | dst_end | ||
) |
Definiert in Zeile 2421 der Datei firmware_load_ng.c.
int find_str | ( | firmware * | fw, |
char * | str | ||
) |
Definiert in Zeile 123 der Datei firmware_load_ng.c.
Definiert in Zeile 223 der Datei firmware_load_ng.c.
Definiert in Zeile 210 der Datei firmware_load_ng.c.
Definiert in Zeile 405 der Datei firmware_load_ng.c.
Definiert in Zeile 373 der Datei firmware_load_ng.c.
|
static |
Definiert in Zeile 32 der Datei firmware_load_ng.c.
int firmware_init_capstone | ( | firmware * | fw) |
Definiert in Zeile 2396 der Datei firmware_load_ng.c.
void firmware_init_data_ranges | ( | firmware * | fw) |
highest known first copied ram code 0x01900000
Definiert in Zeile 2553 der Datei firmware_load_ng.c.
Definiert in Zeile 2267 der Datei firmware_load_ng.c.
void firmware_unload | ( | firmware * | fw) |
Definiert in Zeile 2689 der Datei firmware_load_ng.c.
void fw_add_adr_range | ( | firmware * | fw, |
uint32_t | start, | ||
uint32_t | end, | ||
uint32_t | src_start, | ||
int | type, | ||
int | flags | ||
) |
Definiert in Zeile 2164 der Datei firmware_load_ng.c.
int fw_disasm_iter | ( | firmware * | fw) |
Definiert in Zeile 1055 der Datei firmware_load_ng.c.
Definiert in Zeile 1062 der Datei firmware_load_ng.c.
Definiert in Zeile 1049 der Datei firmware_load_ng.c.
int fw_search_bytes | ( | firmware * | fw, |
search_bytes_fn | func | ||
) |
uint32_t fw_search_insn | ( | firmware * | fw, |
iter_state_t * | is, | ||
search_insn_fn | f, | ||
uint32_t | v1, | ||
void * | udata, | ||
uint32_t | adr_end | ||
) |
Definiert in Zeile 1096 der Datei firmware_load_ng.c.
Definiert in Zeile 411 der Datei firmware_load_ng.c.
uint32_t get_branch_call_insn_target | ( | firmware * | fw, |
iter_state_t * | is | ||
) |
Definiert in Zeile 1502 der Datei firmware_load_ng.c.
int get_call_const_args | ( | firmware * | fw, |
iter_state_t * | is_init, | ||
int | max_backtrack, | ||
uint32_t * | res | ||
) |
Definiert in Zeile 1315 der Datei firmware_load_ng.c.
uint32_t get_direct_jump_target | ( | firmware * | fw, |
iter_state_t * | is_init | ||
) |
Definiert in Zeile 1441 der Datei firmware_load_ng.c.
int get_TBx_PC_info | ( | firmware * | fw, |
iter_state_t * | is, | ||
tbx_info_t * | ti | ||
) |
Definiert in Zeile 855 der Datei firmware_load_ng.c.
int insn_match | ( | cs_insn * | insn, |
const insn_match_t * | match | ||
) |
int insn_match_any | ( | cs_insn * | insn, |
const insn_match_t * | match | ||
) |
Definiert in Zeile 2060 der Datei firmware_load_ng.c.
int insn_match_find_next | ( | firmware * | fw, |
iter_state_t * | is, | ||
int | max_insns, | ||
const insn_match_t * | match | ||
) |
Definiert in Zeile 2073 der Datei firmware_load_ng.c.
int insn_match_find_next_seq | ( | firmware * | fw, |
iter_state_t * | is, | ||
int | max_insns, | ||
const insn_match_t * | match | ||
) |
Definiert in Zeile 2120 der Datei firmware_load_ng.c.
int insn_match_find_nth | ( | firmware * | fw, |
iter_state_t * | is, | ||
int | max_insns, | ||
int | num_to_match, | ||
const insn_match_t * | match | ||
) |
Definiert in Zeile 2092 der Datei firmware_load_ng.c.
int insn_match_seq | ( | firmware * | fw, |
iter_state_t * | is, | ||
const insn_match_t * | match | ||
) |
Definiert in Zeile 1927 der Datei firmware_load_ng.c.
int isADD_PC | ( | cs_insn * | insn) |
Definiert in Zeile 538 der Datei firmware_load_ng.c.
int isADDW_PC | ( | cs_insn * | insn) |
Definiert in Zeile 526 der Datei firmware_load_ng.c.
int isADDx_imm | ( | cs_insn * | insn) |
Definiert in Zeile 642 der Datei firmware_load_ng.c.
int isADRx | ( | cs_insn * | insn) |
int isARM | ( | cs_insn * | insn) |
Definiert in Zeile 478 der Datei firmware_load_ng.c.
Definiert in Zeile 228 der Datei firmware_load_ng.c.
int isLDR_PC | ( | cs_insn * | insn) |
Definiert in Zeile 492 der Datei firmware_load_ng.c.
int isLDR_PC_PC | ( | cs_insn * | insn) |
Definiert in Zeile 505 der Datei firmware_load_ng.c.
int isPOP_LR | ( | cs_insn * | insn) |
Definiert in Zeile 610 der Datei firmware_load_ng.c.
int isPOP_PC | ( | cs_insn * | insn) |
Definiert in Zeile 626 der Datei firmware_load_ng.c.
int isPUSH_LR | ( | cs_insn * | insn) |
Definiert in Zeile 594 der Datei firmware_load_ng.c.
int isRETx | ( | cs_insn * | insn) |
Definiert in Zeile 560 der Datei firmware_load_ng.c.
int isSUB_PC | ( | cs_insn * | insn) |
Definiert in Zeile 549 der Datei firmware_load_ng.c.
int isSUBW_PC | ( | cs_insn * | insn) |
Definiert in Zeile 514 der Datei firmware_load_ng.c.
int isSUBx_imm | ( | cs_insn * | insn) |
Definiert in Zeile 647 der Datei firmware_load_ng.c.
uint32_t LDR_PC2adr | ( | __attribute__((unused)) firmware * | fw, |
cs_insn * | insn | ||
) |
Definiert in Zeile 696 der Datei firmware_load_ng.c.
Definiert in Zeile 755 der Datei firmware_load_ng.c.
Definiert in Zeile 686 der Datei firmware_load_ng.c.
Definiert in Zeile 674 der Datei firmware_load_ng.c.
Definiert in Zeile 662 der Datei firmware_load_ng.c.
Definiert in Zeile 765 der Datei firmware_load_ng.c.
Definiert in Zeile 272 der Datei firmware_load_ng.c.
int reg_in_range | ( | arm_reg | r, |
arm_reg | min_reg, | ||
arm_reg | max_reg | ||
) |
Definiert in Zeile 1957 der Datei firmware_load_ng.c.
int search_calls_multi_end | ( | __attribute__((unused)) firmware * | fw, |
__attribute__((unused)) iter_state_t * | is, | ||
__attribute__((unused)) uint32_t | adr | ||
) |
Definiert in Zeile 1256 der Datei firmware_load_ng.c.
uint32_t search_disasm_calls | ( | firmware * | fw, |
iter_state_t * | is, | ||
uint32_t | val, | ||
__attribute__((unused)) void * | unused | ||
) |
Definiert in Zeile 1243 der Datei firmware_load_ng.c.
uint32_t search_disasm_calls_multi | ( | firmware * | fw, |
iter_state_t * | is, | ||
__attribute__((unused)) uint32_t | unused, | ||
void * | userdata | ||
) |
Definiert in Zeile 1264 der Datei firmware_load_ng.c.
uint32_t search_disasm_calls_veneer_multi | ( | firmware * | fw, |
iter_state_t * | is, | ||
__attribute__((unused)) uint32_t | unused, | ||
void * | userdata | ||
) |
Definiert in Zeile 1280 der Datei firmware_load_ng.c.
uint32_t search_disasm_const_ref | ( | firmware * | fw, |
iter_state_t * | is, | ||
uint32_t | val, | ||
__attribute__((unused)) void * | unused | ||
) |
Definiert in Zeile 1194 der Datei firmware_load_ng.c.
uint32_t search_disasm_str_ref | ( | firmware * | fw, |
iter_state_t * | is, | ||
__attribute__((unused)) uint32_t | val, | ||
void * | udata | ||
) |
Definiert in Zeile 1216 der Datei firmware_load_ng.c.
const insn_match_t match_b[] |
Definiert in Zeile 1879 der Datei firmware_load_ng.c.
const insn_match_t match_b_bl[] |
Definiert in Zeile 1887 der Datei firmware_load_ng.c.
const insn_match_t match_b_bl_blximm[] |
Definiert in Zeile 1893 der Datei firmware_load_ng.c.
const insn_match_t match_bl[] |
Definiert in Zeile 1883 der Datei firmware_load_ng.c.
const insn_match_t match_bl_blximm[] |
Definiert in Zeile 1900 der Datei firmware_load_ng.c.
const insn_match_t match_blxreg[] |
Definiert in Zeile 1916 der Datei firmware_load_ng.c.
const insn_match_t match_bxlr[] |
Definiert in Zeile 1906 der Datei firmware_load_ng.c.
const insn_match_t match_bxreg[] |
Definiert in Zeile 1911 der Datei firmware_load_ng.c.
const insn_match_t match_ldr_pc[] |
Definiert in Zeile 1921 der Datei firmware_load_ng.c.
|
static |
Definiert in Zeile 1938 der Datei firmware_load_ng.c.