Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
指令解码器如何区分前缀和主操作码?
我正在尝试了解 x86 指令编码格式 我读过的所有资料仍然让这个主题令人困惑 我开始有点了解它 但我无法理解的一件事是 CPU 指令解码器如何区分操作码前缀和操作码 我知道指令的整个格式基本上取决于操作码 当然还有操作码中定义的额外位字段
Assembly
x86
cpuarchitecture
machinecode
instructionencoding
汇编指令“Intel 组”类别源自何处?
在开发 86 DOS 应用程序的分支期间 lDebug https pushbx org ecm web projects ldebug 我遇到了称为 英特尔组 的指令类别 具体来说 组是指与使用相同 1 或 2 个操作码字节的一组指令相关
Assembly
x86
intel
x8616
machinecode
一个操作码字节如何根据“寄存器/操作码”字段解码为不同的指令?那是什么? [复制]
这个问题在这里已经有答案了 如何确定字节数组将转换成机器代码 我知道如果我在开头看到 0f 它是一个 2 字节指令 但我看到其他前缀 并且在 x64 调试器中的一些反汇编中我看到奇怪的交互 例如 48 83 C4 38 并且我可以在操作码参
Assembly
x8664
disassembly
machinecode
汇编代码可以跨平台吗?
0x042444FF inc dword ptr esp 4 0x042444FF是机器码 而inc dword ptr esp 4 是汇编代码 我知道 机器代码不是跨平台的 因为它取决于许多因素 汇编代码呢 它取决于CPU吗 汇编代码不是
Assembly
machinecode
Intel 在哪里记录了 ModR/M 字节中扩展寄存器 (R8-R15) 的编码?
我用的是官方最新的 英特尔 64 和 IA 32 架构软件开发人员手册合并卷 1 2A 2B 2C 2D 3A 3B 3C 3D 和 4 作为了解x86 64 ISA的机器级编码的参考 第 2 卷第 2 1 3 节中提供的 ModR M 和
Assembly
x8664
intel
machinecode
instructionencoding
GAS 汇编器不使用 2 字节相对 JMP 位移编码(仅 1 字节或 4 字节)
我正在尝试为不允许 0x00 字节的 CTF 挑战编写 shellcode 它将被解释为终止符 由于挑战的限制 我必须这样做 shellcode bulk 0x514 sizeof shellcode bulk filler bytes f
Assembly
x86
gnuassembler
Shellcode
machinecode
如何将 Intel 80386 机器代码转换为汇编语言?
我被赋予以下任务 考虑以下十六进制值序列 55 89 E5 83 EC 08 83 E4 F0 31 C9 BA 01 00 00 00 B8 0D 00 00 00 01 D1 01 CA 48 79 F9 31 C0 C9 C3 该字节
Assembly
x86
intel
disassembly
machinecode
"rep; nop;" 是什么意思?在 x86 汇编中意味着什么?它与“暂停”指令相同吗?
什么是rep nop mean 是不是一样pause操作说明 是不是一样rep nop 没有分号 和简单的有什么区别nop操作说明 它在 AMD 和 Intel 处理器上的表现是否不同 奖励 这些说明的官方文档在哪里 这个问题的动机 经过评
Assembly
x86
x8664
CPU
machinecode
x64 指令编码和 ModRM 字节
的编码为 call qword ptr rax call qword ptr rcx is FF 10 FF 11 我可以看到最后一个数字 0 1 来自哪里 寄存器编号 但我试图找出倒数第二个数字 1 来自哪里 根据AMD64 架构程序员手
Assembly
x86
x8664
machinecode
opcode
如何将十六进制序列毫无歧义地转换为汇编语言?
8B EC 56 8B F4 68 00 70 40 00 FF 15 BC 82 40 像上面这样的序列可以通过多种方式进行分段 每个段都可以翻译为相应的汇编指令 但是每个二进制可执行文件都有其唯一的确定的汇编 避免歧义的数学原理是什么
Assembly
x86
disassembly
machinecode
设计一个指令序列,以便在使用偏移量解码时执行其他操作
这个问题是后续问题那个问题 要设置此问题的上下文 请考虑无空编程 这是一种将指令序列 shellcode 伪装成字符串的技术 在C编程语言中 字节0标志着字符串的结束 因此指令序列必须设计为不包含任何此类字节 否则它将被滥用的字符串操作函数
Assembly
x86
obfuscation
machinecode
Antivirus
我们如何使用这些指令在汇编中使用跳转?
据我所知 组装中的跳跃基本上是从一个位置到另一个位置 说我们有 804828f 74 05 je XXXXXXX 8048291 e8 1e 00 00 00 call 80482b4 根据这本书 我真正要做的就是将 0x05 添加到 80
Assembly
x86
machinecode
攻击实验室中操作码末尾的 c3
我正在开发攻击实验室的一个版本 对于阶段 4 和 5 在农场操作中 我有几个以 c3 结尾的操作 但后面还有一个单独的操作retq c3 指令如下 0000000000401a6e
Assembly
x8664
exploit
machinecode
opcode
X86 编码近调用相对偏移量
假设我有以下一组说明 00E79E00 E8 AE580000 CALL someprocess 00E7F6B3 00E79E05 85C0 TEST EAX EAX output taken from OllyDbg 如何对近调用 0x
Assembly
x86
disassembly
machinecode
8086指令集:MODR/M字节
当提到 MODR M 字节时 8086 文档站点似乎有点模糊 并且很难理解它是什么和做什么 MODR M 字节中所有位的用途是什么以及可能的选项是什么 我找到的一些文档 https www scs stanford edu 05au cs2
Assembly
x8616
machinecode
operands
instructionencoding
x86-64 (AMD64) 架构中是否有默认操作数大小?
这是关于 x86 64 AMD64 架构中操作数大小覆盖前缀的问题 这是一堆汇编指令 nasm 及其编码 经过new我的意思是 r8 r15 寄存器 67 address size override prefix 4x operand si
Assembly
x8664
machinecode
prefixes
FF /4 中的 /4 是什么意思?
我发现的一个网站通常指的是x86 文档有一些带有斜杠和数字的指令代码 例如 jmp接近绝对间接给出FF 4 然而jmp远绝对间接给出FF 5 做什么的 4 and 5 mean 为了运行一个快速的小测试 我附加了一个 32 位进程 分配了一
Assembly
x86
machinecode
opcode
实际的机器代码在各个方面是什么样子的? [关闭]
很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 关于机器代码到底是什么似乎有很多观点 我听有人说它是汇编 二进制或十六进制 机器代码本质
Assembly
Hex
machinecode
machineinstruction
x86-64 REX 前缀中的“REX”代表什么?
From 英特尔的SDM 第 2 2 1 节指定 REX 前缀用于 指定 GPR 和 SSE 寄存器 指定 64 位操作数大小 指定扩展控制寄存器 但缩写词中的字母 REX 代表什么 这个2002年热门薯条演示AMD 扩展了幻灯片 10 上
Assembly
x86
x8664
intel
machinecode
与调用函数相比,goto 语句是否高效? [关闭]
就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我这里有以下 C 代码 i
c
Assembly
goto
machinecode
«
1
2
3
»