草庐IT

IDA汇编

全部标签

linux - 反汇编为 Intel 语法的 x86 ELF 反汇编程序

是否有在Linux上运行的反汇编程序能够将x86ELF可执行文件反汇编为Intel语法中的汇编代码(即操作目标寄存器、源寄存器;等)?输出反汇编器最好与NASM语法相当接近。objdump-d工作得很好,但输出的AT&T语法有时我觉得很难理解,而ndiasm仅反汇编我所知的二进制文件。 最佳答案 您可以告诉objdump使用Intel语法:objdump-Mintel-d 关于linux-反汇编为Intel语法的x86ELF反汇编程序,我们在StackOverflow上找到一个类似的问题

linux - 从 Linux 的核心转储中找到崩溃的汇编指令

如果我将崩溃程序和核心转储加载到gdb中,它会显示堆栈跟踪和崩溃点,如下所示。Corewasgeneratedby`./cut--output-d=:-b1,1234567890-/dev/fd/63'.ProgramterminatedwithsignalSIGSEGV,Segmentationfault.#0is_printable_field(i=1234567890)atsrc/cut.c:266266return(printable_field[n]>>(i%CHAR_BIT))&1;(gdb)bt#0is_printable_field(i=1234567890)atsrc

linux - 在适用于 Linux 的 Windows 子系统上的 Ubuntu 上使用 INT 0x80 汇编编译的可执行文件不产生输出

我一直在看汇编教程,我正在尝试运行一个helloworld程序。我在Windows上的Ubuntu上使用Bash。程序集如下:section.textglobal_start;mustbedeclaredforlinker(ld)_start:;tellslinkerentrypointmovedx,len;messagelengthmovecx,msg;messagetowritemovebx,1;filedescriptor(stdout)moveax,4;systemcallnumber(sys_write)int0x80;callkernelmoveax,1;systemcal

linux - 如何从汇编语言生成可执行文件?(在 emacs 中)

有人能告诉我如何从汇编语言生成可执行文件吗?我的环境是Ubuntu+Emacs+GCC为了学习的目的,我写了一些C代码(hello.c)并将其转换为汇编(hello.s)我想从一个汇编文件中生成一个可执行文件。我试过了M-xcompilegcchello.c-S从C代码编译和M-xcompileashello.s生成可执行文件但是只有一个.out文件,无法执行所以我试过了ashello.s-oaaa但是文件“aaa”不可执行 最佳答案 as的输出是一个目标文件。要使其可执行,您需要将其与ld链接,但您还需要链接它所依赖的任何对象,如

linux - 汇编子例程被调用两次,甚至没有从主程序中调用

我正在尝试定义一些在其中调用printf的子例程。一个非常简单的例子如下:externprintfLINUXequ80HEXITequ60section.dataintfmt:db"%ld",10,0segment.textglobalmainmain:callos_return;returntooperatingsystemos_return:movrax,EXIT;Linuxsystemcall60i.e.exit()movrdi,0;Errorcode0i.e.noerrorsintLINUX;InterruptLinuxkerneltest:pushrdipushrsimovr

linux - 为什么这里的 Solaris 汇编器生成的机器码与 GNU 汇编器不同?

我为amd64编写了这个小汇编文件。代码的作用对于这个问题并不重要。.globlfibfib:mov%edi,%ecxxor%eax,%eaxjrcxz1flea1(%rax),%ebx0:add%rbx,%raxxchg%rax,%rbxloop0b1:ret然后我开始在Solaris和Linux上组装然后反汇编它。太阳系$as-oy.o-xarch=amd64-Vy.sas:SunCompilerCommon12.1SunOS_i386Patch141858-042009/12/08$disy.odisassemblyfory.osection.text0x0:8bcfmovl%e

在 gcc 内联汇编中调用函数

比如说,我想在gcc的内联汇编中调用具有以下签名的函数。我该怎么做?intsome_function(void*arg); 最佳答案 通常你会想做类似的事情void*x;asm("..codethatwritestoregister%0":"=r"(x):...intr=some_function(x);asm("..codethatusestheresult...":...:"r"(r),...也就是说,您根本不想在内联汇编中进行函数调用。这样您就不必担心调用约定或堆栈框架管理的细节。

linux - 汇编:为什么跳转到通过 ret 返回的标签会导致段错误?

LinuxAssemblyTutorial状态:thereisoneveryimportantthingtoremember:Ifyouareplanningtoreturnfromaprocedure(withtheRETinstruction),don'tjumptoit!Asin"never!"DoingthatwillcauseasegmentationfaultonLinux(whichisOK–allyourprogramdoesisterminate),butinDOSitmayblowupinyourfacewithvariousdegreesofterriblenes

linux - QEMU 是否适合学习 ARM 和 PowerPC 的汇编程序编程?

我想学习PowerPC和ARM的汇编程序编程,但我无法为此购买真正的硬件。我正在考虑为此使用QEMU。但是我不确定它是否足够好地模拟这两种架构,我是否会在其上使用native汇编程序编译和运行我的程序? 最佳答案 QEMU可以很好地测试程序校正(即代码是否可以在实际的ARM或PowerPC上正确运行)但它不适用于测试程序效率:仿真不是周期精确的,并且使用QEMU测量的速度不能可靠地(甚至不可靠地)与真实硬件上的速度相关联。此外,QEMU不会捕获未对齐的内存访问,这对于PowerPC仿真不是问题(PowerPC容忍未对齐的访问)但可能

c++ - 将源代码与 C++ 程序的汇编列表相关联

在零售构建中分析核心转储通常需要关联任何特定模块的objdump和源代码。如果函数非常复杂,通常将程序集转储与源代码关联起来会很痛苦。今天,我尝试创建一个特定模块的程序集列表(使用编译选项-S),希望我会看到一个带有程序集或某种相关性的交错源代码。不幸的是,该列表不够友好,无法关联,所以我想知道给定一个核心转储,我可以从中确定崩溃位置objdump通过重新编译失败的模块汇编列表带有-S选项的模块。是否可以与源做一一对应?例如,我将程序集列表视为.LBE7923:.loc248630movq%rdi,%r14movl%esi,%r12dmovl696(%rsp),%r15dmovq704