Tag: 反汇编

如何反汇编,修改,然后重新组装一个Linux可执行文件?

反正有这个可以做的吗? 我已经使用objdump,但是不会产生汇编输出,我知道任何汇编程序都会接受这个汇编输出。 我希望能够更改可执行文件中的指令,然后再进行testing。

使用objdump反汇编一个函数

我已经在我的系统上安装了一个二进制文件,并希望查看给定函数的反汇编。 最好使用objdump ,但其他解决scheme也是可以接受的。 从这个问题我知道,如果我只知道边界地址,我可能能够反汇编代码的一部分。 从这个答案我已经学会了如何将我的拆分debugging符号恢复成单个文件。 但即使在单个文件上运行,甚至可以反汇编所有的代码(即没有启动或停止地址,但objdump普通的-d参数),我仍然没有看到任何地方的符号。 这是有道理的,因为所讨论的function是静态的,所以不会被导出。 不过, valgrind会报告函数名,所以它必须存储在某个地方。 看看debugging部分的细节,我发现在.debug_str部分提到的名称,但我不知道一个工具,可以把它变成一个地址范围。

我该如何强制GDB进行反汇编?

我试图反汇编一个程序来查看系统调用汇编指令(INT指令,我相信)和GDB的处理程序,并已经写了一个小程序(见下文)打开和closures文件。 我可以跟着电话打到GDB,直到执行了一个电话。 当我试图告诉GDB“反汇编0x …”(调用地址)时,它以“无function包含指定地址”作为响应。 是否有可能强制GDB反汇编(或汇编器尽可能好地显示)该内存地址? 如果是这样,怎么样? #include <stdio.h> #include <stdlib.h> int main() { FILE* f; f = fopen("main.c", "r"); if (!f) { perror("open"); return -1; } fclose(f); return 0; }

如何写一个反汇编?

我有兴趣编写一个x86拆信器作为一个教育项目。 我发现唯一真正的资源是Spiral Space的“ 如何编写反汇编程序 ”。 虽然这给出了反汇编器各个组件的高级描述,但我对一些更详细的资源感兴趣。 我也快速浏览了NASM的源代码,但是这是一个重量级的学习。 我意识到这个项目的主要挑战之一是我将不得不处理的相当大的x86指令集。 我也感兴趣的基本结构,基本的反汇编链接等。 任何人都可以指出我写的x86反汇编程序的任何详细的资源?

GCC如何优化一个在循环内部递增的未使用的variables?

我写了这个简单的C程序: int main() { int i; int count = 0; for(i = 0; i < 2000000000; i++){ count = count + 1; } } 我想看看gcc编译器如何优化这个循环(显然加120亿次应该是“新增20亿次”)。 所以: gcc test.c然后在a.out给出: real 0m7.717s user 0m7.710s sys 0m0.000s $ gcc -O2 test.c然后time on a.out time on执行time on : real 0m0.003s user 0m0.000s sys 0m0.000s 然后我用gcc -S拆卸了两个。 第一个看起来很清楚: .file "test.c" […]

我怎样才能看到C ++程序的汇编代码?

我怎样才能看到C ++程序的汇编代码? 什么是stream行的工具来做到这一点?

将机器代码翻译成LLVM IR(将X86_64.X86.ARM反汇编/重组成LLVM位代码)

我想将X86_64,x86,ARM可执行文件翻译成LLVM IR(反汇编)。 你build议什么解决scheme?