...换句话说,x86-64 是否是一个独特的可解码代码,无论我从哪里开始解码,最终总是会产生正确的反汇编代码? 假设这(基本事实)是 ELF 文件的一部分。 第一条指令有六个字节长,从 0x5de5a2 到 0x5de5a7: 如果我执行objdump -d --start-address=0 ...
...换句话说,x86-64 是否是一个独特的可解码代码,无论我从哪里开始解码,最终总是会产生正确的反汇编代码? 假设这(基本事实)是 ELF 文件的一部分。 第一条指令有六个字节长,从 0x5de5a2 到 0x5de5a7: 如果我执行objdump -d --start-address=0 ...
Th nm source.o给出未知符号: 我想知道 $d 和 $t 符号的含义。 那是什么? 解释这些的参考是什么? 这是从 eclipse 编译的 C 源码(STM32cubeIDE on Windows 10 64-bit)。 从 eclipse 控制台复制的可能重要的构建命令: 这是来源: ...
测试.S 我通过这样做得到了反汇编代码文件 测试文件.txt 我的问题我想知道为什么我得到这样的代码mov %eax,%ds ,它不适合我原来的汇编代码? 为什么 objdump output 矛盾的结果我的期待我希望mov %eax,%ds应该是mov %ax,%ds ,我认为%eax (32 ...
我正在玩 RISC-V。 我有一个 .img 文件,我想将它反汇编成一个 .asm 文件,所以我运行了以下命令: 但是,我遇到了这个问题: 我该如何解决? 我不知道如何处理这个问题。 ...
我正在尝试获取我的 Arduino 程序的汇编代码(此问题中的评论之一解释了为什么我需要汇编代码)。 我已经看到很多关于在终端上使用“objdump”或“gcc”命令的问题的答案,但是每当我尝试在我的计算机上运行这些命令时,它都会告诉我“{command} 不被识别为内部或外部命令”。 然后我继续 ...
我目前正在完成一个 CTF 练习,我必须尝试通过缓冲区溢出覆盖堆栈上的 function 指针,代码如下: 代码将使用易受攻击gets() function 获取输入,并将其存储在名为buffer的缓冲区中。 由于buffer是结构中最大的变量,它允许我在堆栈上覆盖它下面的变量。 下一个变量是名为 ...
所以我试图比较两个 ELF 文件 original/gen_twiddle_fft16x16_imre.oe674 和 new/gen_twiddle_fft16x16_imre.oe674 看看它们是否相同。 我有预感他们是,但是,我不能确切地说。 我不能只比较代码大小并希望最好,因为它们的大小只 ...
我写boot.asm kernel.asm main.c三个文件。 kernel.asm和main.c编译成kernel文件。 boot.asm加载器 kernel 进入0x10000 。 问题是kernel文件,代码0f 01 15 22 00 00 00 ,在 objdump 上显示lgdt ...
这更多是出于好奇而不是生产需求,但我一直在问自己是否可以提取二进制文件的 C++ 源,以便可以重新编译它以生成二进制文件的工作克隆。 如果尝试过: 使用“-g -Og”编译二进制文件以包含矮人信息, 使用带有“-S”和“--source-comment”的objdump将源交错到转储中找出所有注释的 ...
我正在尝试一些 cpp 二进制反汇编。 我写了这个非常简单的代码: 然后我用 g++ 编译它,使用类似的东西: 然后我跑了一个: 这是我提取的内容: 我现在正在尝试使用以下内容来解释它: 我怎样才能修复汇编代码,以便尝试使用 NASM 编译它(它已经是我从objdump获得的经过 ...
方括号内的数字是符号表中条目的编号,sec 数字是节号,fl 值是符号的标志位,ty 数字是符号的类型,scl 数字是符号的存储类nx 值是与符号关联的辅助条目的数量。 最后两个字段是符号的值及其名称。 我想知道是否有办法找出哪个是本地符号,哪个是全局符号? 与使用nm命令时从标志的小 ...
例如我有以下 c++ 源文件// define global variables here int Label = 1234; char Hash[] = "0x11231abc"; 将其编译为 *.o 文件,稍后可能会链接到可执行二进制文件。 是否可以通过使用一些现有工具(如 readelf、 ...
我正在对 ELF 32 位可执行文件进行一些逆向工程。 这是 .text 部分的代码: 但我不知道这条线应该做什么: 我知道此时,EAX 获取 <.text> 部分的地址和 ECX = 0 但我不知道取消引用指向该地址的指针的点在哪里:它给了我 ECX = 0xcc 你能给我解 ...
我想阅读 systemd efi 存根的 .cmdline 部分(插入了 initramfs、内核和 cmdline)。 我认为第一个选项是最优雅的选项,但遗憾的是它修改了原始文件,从而破坏了安全启动。 第二个选项创建一个不需要的输出文件。 使用 /dev/null 作为文件中断 /dev/nu ...
我想一目了然地看到 memory 中哪些变量彼此相邻放置。如果我使用objdump -t生成符号表,我会得到符号表,但看似随机排序。 有没有办法让它以向上计数的方式按地址(第一列)排序? 如果有一个开关可以添加到objdump -t以获得所需的 output,那就太好了。我查看了文档并没有找到类似 ...
我正在拆解和检查(主要是为了娱乐和学习)为 ESP8266 (Xtensa ISA) 生成的 Arduino 代码。 到目前为止,我一直在毫无问题地遵循代码,直到主 function 中的大括号(位置4010f4c2 ): 我之前看到过这个,但直到代码到达位置4010f4af并带有指向4010f4c ...
我在 C 中实现了一个卷积神经网络,并一直在研究它的哪些部分具有最长的延迟。 根据我的研究,CNN 所需的大量矩阵乘法使得它们在 CPU 甚至 GPU 上运行时效率非常低。 然而,当我实际剖析我的代码(在未优化的构建上)时,我发现除了乘法本身之外的其他东西是实现的瓶颈。 开启优化后( -O3 -ma ...
现在我正在尝试了解 RISC-V ISA,但我对机器代码和汇编有一个不清楚的地方。 我写了一个 C 这样的代码:int main() { return 42; } 然后,我通过这个命令生成了 .s 文件: $ /opt/riscv/bin/riscv64-unknown-linux-gn ...
我用过 Ubuntu 20.04.3,当我运行 我得到了奇怪的调试文件名,同时期待类似 cp.debug 的东西 这是Ubuntu原图,完全没有修改。 这有什么理由吗? ...
假设我有以下程序( a.c ): 有了a.out ,我如何找出main()的定义位置? 我的意思是,在一个大项目中, main()的来源并不总是很清楚。 ...