【问题标题】:netcat gcc compile option so that IDA pro can show function namenetcat gcc 编译选项,以便 IDA pro 可以显示函数名称
【发布时间】:2013-07-22 08:33:46
【问题描述】:

我希望 IDApro 显示函数名称和变量,例如:_readwrite_dolisten,但它只在函数窗口中显示 sub_40xxxx

如何编辑编译选项来实现它?

原来的Makefile是:

CC=gcc

CFLAGS=-DNDEBUG -DWIN32 -D_CONSOLE -DTELNET -DGAPING_SECURITY_HOLE
LDFLAGS=-s -lkernel32 -luser32 -lwsock32 -lwinmm

all: nc.exe

nc.exe: getopt.c doexec.c netcat.c
    $(CC) $(CFLAGS) getopt.c doexec.c netcat.c $(LDFLAGS) -o nc.exe

【问题讨论】:

  • 呃,默认应该可以的。如果不能,那么原因可能是您stripped 可执行文件。
  • 剥离了可执行文件?它是什么?
  • 我发现 nc 可以显示函数名的文件大小比我的大 2.5 倍,也许它添加了额外的调试器信息?

标签: c gcc compiler-construction


【解决方案1】:

您可能在 Windows 上使用mingw。所以,LDFLAGS 中的-s 选项意味着最终的二进制文件将被剥离。只需删除此选项即可。

此外,您可以尝试添加更多调试信息,以帮助 IDAPro 尽可能从程序中恢复,方法是将 -g3 添加到 CFLAGS 并将 -DNDEBUG 替换为 -DDEBUG(它将也可能从软件中添加更多有见地的信息)。

最后你应该有这样的东西:

CFLAGS=-g3 -DDEBUG -DWIN32 -D_CONSOLE -DTELNET -DGAPING_SECURITY_HOLE
LDFLAGS=-lkernel32 -luser32 -lwsock32 -lwinmm

顺便说一句,RE 上有关 IDAPro 的问题可能会更有效地回答您。

【讨论】:

  • 谢谢,我试过-g和删除-DNDEBUG,但没有解决问题。
  • 如果将-DNDEBUG 替换为-DDEBUG 会怎样?
  • 我知道!其实你用的是mingw,那么只要把LDFLAGS中的-s去掉就行了。添加-g3 并将-DNDEBUG 替换为-DDEBUG 只会为您提供更精确的信息(无论如何它对IDAPro 来说可能非常有用)。
  • 有效!!但是 -g3 使可执行文件超级大,我使用 -g; -s:省略输出文件中的所有符号信息。
  • 事实上,-g 选项可以带有一个数字来指示您希望在二进制文件中嵌入的信息级别。默认为-g2-g3 添加您可能想要在二进制文件中跟踪的所有内容。如果你想要一个轻量级的调试二进制文件,只需使用-g1
猜你喜欢
  • 2022-08-04
  • 2014-12-04
  • 2011-05-16
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 2011-05-26
  • 2018-01-05
  • 1970-01-01
相关资源
最近更新 更多