在C程序(Lib ELF)中检索被调用函数的名称

时间:2019-04-17 11:16:15

标签: c elf

我正在尝试获取C程序中被调用函数的名称。

例如,这是我的代码:

void toto(void)
{
    printf("toto\n");
}

void tutu(void)
{
    printf("tutu\n");
}

void mdr(void)
{
    printf("tutu\n");
    printf("tutu\n");
    printf("tutu\n");
    printf("tutu\n");
}

int main(int ac, char **av)
{
    toto();
    tutu();
    mdr();
}

我只想了解结果:Main(),toto(),tutu()和mdr()。 但是问题是,当我使用Libelf时,我在Symbol Table上检索了一些信息,但是它给了我调用的函数以及更多信息,例如以下示例:

...
    57: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __libc_start_main@@GLIBC_
    58: 0000000000401148    47 FUNC    GLOBAL DEFAULT   13 mdr
    59: 0000000000401126    17 FUNC    GLOBAL DEFAULT   13 toto
    60: 0000000000404020     0 NOTYPE  GLOBAL DEFAULT   23 __data_start
    61: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
    62: 0000000000402008     0 OBJECT  GLOBAL HIDDEN    15 __dso_handle
    63: 0000000000401137    17 FUNC    GLOBAL DEFAULT   13 tutu
    64: 0000000000402000     4 OBJECT  GLOBAL DEFAULT   15 _IO_stdin_used
    65: 00000000004011a0   101 FUNC    GLOBAL DEFAULT   13 __libc_csu_init
    66: 0000000000404028     0 NOTYPE  GLOBAL DEFAULT   24 _end
    67: 0000000000401070     5 FUNC    GLOBAL HIDDEN    13 _dl_relocate_static_pie
    68: 0000000000401040    47 FUNC    GLOBAL DEFAULT   13 _start
    69: 0000000000404024     0 NOTYPE  GLOBAL DEFAULT   24 __bss_start
    70: 0000000000401177    37 FUNC    GLOBAL DEFAULT   13 main
    71: 0000000000404028     0 OBJECT  GLOBAL HIDDEN    23 __TMC_END__
    72: 0000000000401000     0 FUNC    GLOBAL HIDDEN    11 _init

那么我怎么只能检索我的被调用函数?再次感谢您的帮助

0 个答案:

没有答案