Linux 调试ELF文件

Linux 调试ELF文件,linux,debugging,reverse-engineering,remote-debugging,elf,Linux,Debugging,Reverse Engineering,Remote Debugging,Elf,我有这个EFL文件,需要调试/逐步完成。这是一场逆向工程竞赛。我所需要做的就是找出寄存器在特定时间点和特定位置的值。我使用Hopper反汇编程序查找感兴趣的地址 问题出在这里。我不知道如何调试ELF文件。这是我第一次在Linux环境中调试。学习如何执行ELF文件本身花了我一段时间。我使用 ld linux.so.2./[EFLFILE][arguments] 是否有一种方法可以至少将调试器附加到proess上?我甚至用ps命令都找不到它。另外,我听说可以使用远程调试器;在windows计算机上运

我有这个EFL文件,需要调试/逐步完成。这是一场逆向工程竞赛。我所需要做的就是找出寄存器在特定时间点和特定位置的值。我使用Hopper反汇编程序查找感兴趣的地址

问题出在这里。我不知道如何调试ELF文件。这是我第一次在Linux环境中调试。学习如何执行ELF文件本身花了我一段时间。我使用
ld linux.so.2./[EFLFILE][arguments]

是否有一种方法可以至少将调试器附加到proess上?我甚至用ps命令都找不到它。另外,我听说可以使用远程调试器;在windows计算机上运行调试器,并在linux上运行要检查的二进制文件


有人能帮我实现这些吗?

通常可以按如下方式执行ELF文件:

$ /path/to/elffile [arguments]
要使用调试,可以执行以下操作:

$ gdb /path/to/elffile
或传递论点:

$ gdb --args /path/to/elffile arguments...
就你而言:

$ gdb --args ./[EFLFILE] [arguments]
然后键入
run
或simly
r
并按。 键入
help
以获取有关gdb命令的帮助


注意:如果您的程序需要一些外部lib,在运行它之前,您应该在包含这些lib的文件夹上定义LD_LIBRARY_PATH(
export LD_LIBRARY_PATH=/the/PATH/to/libs

通常可以按如下方式执行ELF文件:

$ /path/to/elffile [arguments]
要使用调试,可以执行以下操作:

$ gdb /path/to/elffile
或传递论点:

$ gdb --args /path/to/elffile arguments...
就你而言:

$ gdb --args ./[EFLFILE] [arguments]
然后键入
run
或simly
r
并按。 键入
help
以获取有关gdb命令的帮助


注意:如果您的程序需要一些外部lib,在运行它之前,您应该在包含这些lib的文件夹上定义LD_LIBRARY_PATH(
export LD_LIBRARY_PATH=/the/PATH/to/libs

您可以用来调试linux下的程序无论我做什么,当我尝试使用您建议的gdb时(在“in your case”一行),我一直收到消息“no command[filename]found”,即使在使用sudo之后,我也被拒绝了权限。我使用的是最新的ubuntu。我想这是因为它是一个32位的ELF,安装在64位的ubuntu上。我将运行一个32位系统,并将尝试相同的方法。@hexinx如果您被拒绝权限,请确保您的文件具有执行权限
$chmod+x elffile
,但是如果您无法在独立二进制文件中运行,gdb将不起作用无论我做什么,您都可以使用
$file elffile
检查您的程序是哪种二进制文件(32/64位),当我尝试使用您建议的gdb时(在“in your case”一行),我一直收到消息“no command[filename]found”,即使在使用sudo之后,我也被拒绝了权限。我使用的是最新的ubuntu。我想这是因为它是一个32位的ELF,安装在64位的ubuntu上。我将运行一个32位系统,并将尝试相同的方法。@hexinx如果您被拒绝权限,请确保您的文件具有执行权限
$chmod+x elffile
,但是如果您无法在独立二进制文件中运行,gdb将不起作用。您可以使用
$file elffile
检查您的程序是哪种二进制文件(32/64位)