草庐IT

IDA汇编

全部标签

汇编中的 Linux 64 命令行参数

此描述适用于Linux32位:当Linux程序开始时,所有指向命令行参数的指针都存储在堆栈中。参数个数存放在0(%ebp),程序名存放在4(%ebp),参数从8(%ebp)开始存放。我需要64位的相同信息。编辑:我有显示如何使用argc、argv[0]和argv[1]的工作代码示例:http://cubbi.com/fibonacci/asm.html.globl_start_start:popq%rcx#thisisargc,mustbe2foroneargumentcmpq$2,%rcxjneusage_exitaddq$8,%rsp#skipargv[0]popq%rsi#get

c - 从 C 语言转换为汇编语言时,以 null 结尾的字符串在哪里?

我做了两个程序输出两个字符串,一个用汇编,一个用C。这是汇编程序:.section.datastring1:.ascii"Hola\0"string2:.ascii"Adios\0".section.text.globl_start_start:pushl$string1callputsaddl$4,%esppushl$string2callputsaddl$4,%espmovl$1,%eaxmovl$0,%ebxint$0x80我用构建程序astest.s-otest.old-dynamic-linker/lib/ld-linux.so.2-otesttest.o-lc输出符合预期H

c - 从 C 语言转换为汇编语言时,以 null 结尾的字符串在哪里?

我做了两个程序输出两个字符串,一个用汇编,一个用C。这是汇编程序:.section.datastring1:.ascii"Hola\0"string2:.ascii"Adios\0".section.text.globl_start_start:pushl$string1callputsaddl$4,%esppushl$string2callputsaddl$4,%espmovl$1,%eaxmovl$0,%ebxint$0x80我用构建程序astest.s-otest.old-dynamic-linker/lib/ld-linux.so.2-otesttest.o-lc输出符合预期H

linux - 64 位 linux,汇编语言,问题?

我目前正在学习汇编语言。我正在使用Gas在LinuxMint(32位)。使用本书:ProgrammingfromtheGroundUp.我使用的机器有一个AMDTurion64bit处理器,但我仅限于2GB的RAM。我正在考虑将我的Linux安装升级到64位版本的LinuxMint,但我担心因为本书针对的是32位x86架构,所以代码示例无法运行。所以两个问题:代码示例是否可能存在任何问题?这里有没有人注意到使用64位Linux比使用32位Linux总体上有什么好处(我在StackOverflow上看到过一些与此有关的帖子,但它们主要与WindowsVista和WindowsXP相关。)

linux - 64 位 linux,汇编语言,问题?

我目前正在学习汇编语言。我正在使用Gas在LinuxMint(32位)。使用本书:ProgrammingfromtheGroundUp.我使用的机器有一个AMDTurion64bit处理器,但我仅限于2GB的RAM。我正在考虑将我的Linux安装升级到64位版本的LinuxMint,但我担心因为本书针对的是32位x86架构,所以代码示例无法运行。所以两个问题:代码示例是否可能存在任何问题?这里有没有人注意到使用64位Linux比使用32位Linux总体上有什么好处(我在StackOverflow上看到过一些与此有关的帖子,但它们主要与WindowsVista和WindowsXP相关。)

linux - at&t汇编中的 'push'和 'pushq'有什么区别

我最近开始寻求更深入地了解我的计算机的工作原理。我的问题是关于push和pushq之间的区别。我知道push向堆栈写入一个值,我的假设是pushq做类似的事情。q在那里的事实让我认为应该存在细微的差异,但我似乎无法理解差异。我声明在使用gdb和命令“layoutasm”调试文件/lib/udev/iphone-set-info时思考这个问题。有问题的代码是:pushq$0x0push%r9我知道$0x0是NULL的十六进制,而%r9是通用寄存器之一。这是否仅仅意味着将Nullus写入堆栈并在其上方写入寄存器%r9? 最佳答案 我不确

linux - at&t汇编中的 'push'和 'pushq'有什么区别

我最近开始寻求更深入地了解我的计算机的工作原理。我的问题是关于push和pushq之间的区别。我知道push向堆栈写入一个值,我的假设是pushq做类似的事情。q在那里的事实让我认为应该存在细微的差异,但我似乎无法理解差异。我声明在使用gdb和命令“layoutasm”调试文件/lib/udev/iphone-set-info时思考这个问题。有问题的代码是:pushq$0x0push%r9我知道$0x0是NULL的十六进制,而%r9是通用寄存器之一。这是否仅仅意味着将Nullus写入堆栈并在其上方写入寄存器%r9? 最佳答案 我不确

linux - 从汇编文件中读取

我正在尝试学习汇编——Linux环境中的x86。我能找到的最有用的教程是WritingAUsefulProgramWithNASM.我给自己设定的任务很简单:读取文件并将其写入标准输出。这是我的:section.text;declaringour.textsegmentglobal_start;tellingwhereprogramexecutionshouldstart_start:;thisiswherecodestartsgettingexec'ed;getthefilenameinebxpopebx;argcpopebx;argv[0]popebx;thefirstrealar

linux - 从汇编文件中读取

我正在尝试学习汇编——Linux环境中的x86。我能找到的最有用的教程是WritingAUsefulProgramWithNASM.我给自己设定的任务很简单:读取文件并将其写入标准输出。这是我的:section.text;declaringour.textsegmentglobal_start;tellingwhereprogramexecutionshouldstart_start:;thisiswherecodestartsgettingexec'ed;getthefilenameinebxpopebx;argcpopebx;argv[0]popebx;thefirstrealar

c++ - 反汇编 C++ 可执行文件的最佳 Linux 工具

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。哪个工具最适合反汇编C++可执行文件?我正在寻找类似OllyDbg但适用于Linux的东西。编辑:抱歉,忘了告诉我我也希望能够调试,而不仅仅是查看asm代码。EDIT2:我所说的“最佳”是指-“最适合Windows的是OllyDbg-可以查看asm代码并可以调试,它对用户友好且非常强大。哪个最适合Linux”。