5.10 名称
下面的函数处理有 IDA 或用户所设置的函数(sub_*),位置(loc_*) 和变量(arg_*,var_*) 的名称。定义在 name.hpp。而寄存器名称不能被这些函数识别。
5.10.1 get_name
定义 | idaman char *ida_export get_name(ea_t from,ea_t ea,char *buf,size_t bufsize) |
含义 | 用 ea 的非着色名称填充*buf,长度限定为 bufsize。如果 ea 有一个名称,就返回*buf 指针,否则返回 NULL。如果您在一个名称后面是一个函数的位置,from 也应该位于同样的函数内,或者它不可见。如果您不是在一个位置名称后面,from 应该为 BADADDR。 |
示例 | #include <name.hpp> char name[MAXSTR]; // Get the name of the entry point, should be start // in most cases. char *res = get_name(BADADDR, inf.startIP, // Entry point name, sizeof(name)-1); if (res != NULL) msg("Name: %s\n", name); else msg("No name for %a\n", inf.startIP); |
5.10.2 get_name_ea
定义 | idaman ea_t ida_export get_name_ea(ea_t from, const char *name) |
含义 | 返回由定义的*name 指定的名称的地址。如果您在一个函数的位置名称之后,from 应该也在同一个函数内,或者是不可见的。如果您不是在一个位置名称之后,from 应该为 BADADDR。 |
示例 | #include <kernwin.hpp> // For askstr and get_screen_ea #include <name.hpp> // Get the cursor address ea_t addr = get_screen_ea(); // Ask the user for a string (see kernwin.hpp), which // will be the name we search for. char *name = askstr(HIST_IDENT, // History identifier "start", // Default value "Please enter a name"); // Prompt // Display the address that the name represents. You will // get FFFFFFFF for stack variables and nonexistent // names. msg("Address: %a\n", get_name_ea(addr, name)); |
5.10.3 get_name_value
定义 | idaman int ida_export get_name_value(ea_t from, const char *name, uval_t *value) |
含义 | 返回一个值到*value,它表示对应于地址 from 的名称*name。*value 将包含义个栈偏移或线性地址。 如果您在一个函数的位置名称之后,from 应该也位于同一函数内,或者是不可见的。如果您不在一个位置名称后,from 应该为 BADADDR。返回值是如下的其中之一,表示名称的类型。摘自 name.hpp: #define NT_NONE 0 // name doesn't exist or has no value #define NT_BYTE 1 // name is byte name (regular name) #define NT_LOCAL 2 // name is local label #define NT_STKVAR 3 // name is stack variable name #define NT_ENUM 4 // name is symbolic constant #define NT_ABS 5 // name is absolute symbol // (SEG_ABSSYM) #define NT_SEG 6 // name is segment or segment register // name #define NT_STROFF 7 // name is structure member #define NT_BMASK 8 // name is a bit group mask name |
示例 | #define NT_NONE 0 // name doesn't exist or has no value #define NT_BYTE 1 // name is byte name (regular name) #define NT_LOCAL 2 // name is local label #define NT_STKVAR 3 // name is stack variable name #define NT_ENUM 4 // name is symbolic constant #define NT_ABS 5 // name is absolute symbol // (SEG_ABSSYM) #define NT_SEG 6 // name is segment or segment register // name #define NT_STROFF 7 // name is structure member #define NT_BMASK 8 // name is a bit group mask name |
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论