Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
在启用 NX (DEP) 和 ASLR 的 x86-64 上利用基于字符串的溢出
考虑以下易受攻击的代码 程序 include
Linux
x8664
bufferoverflow
aslr
dep
在启用 NX (DEP) 和 ASLR 的 x86-64 上利用基于字符串的溢出
考虑以下易受攻击的代码 程序 include
Linux
x8664
bufferoverflow
aslr
dep
使用 AVX 但不使用 AVX2 分别计算多个 64 位位掩码上的每个位位置
有关的 如何在 Sandy Bridge 上将一系列整数中的位快速计数到单独的容器中 https stackoverflow com questions 7793997 how to quickly count bits into sepa
c
Optimization
x86
x8664
SIMD
ld 链接器错误 - 架构 x86_64 的未定义符号
我正在尝试链接一个单模块汇编语言程序yasm我收到以下错误ld Undefined symbols for architecture x86 64 start referenced from implicit entry start for
MacOS
Assembly
Linker
x86
x8664
从 64 位地址加载到 rax 以外的其他寄存器
在 x64 上 可以通过以下方式从 64 位绝对地址加载 即取消引用 64 位立即数 movabs addr64 rax 但是 当目标寄存器不是rax汇编器给出一条错误消息 operand size mismatch for movabs
Assembly
x8664
修改字符数组,修改部分向后显示
我刚刚开始学习汇编 我正在尝试修改字符数组 这是我的汇编代码 data data byte Five 0 code Asm proc lea rax data mov dword ptr rax Four ret Asm endp end
string
Assembly
64bit
x8664
MASM
如何在 Linux 64 位上用 C 编写简单的内联 asm 指令?
我正在编写一个简单的 C 程序 我的要求是从程序的某些函数中打印 RIP 指令指针 我不想使用 ptrace 我用内联汇编尝试的一件事是 asm movl rip 0 r val 这应该将我的 rip 寄存器值复制到变量 val 但我收到编
Assembly
x86
x8664
cpuregisters
编译器在这里做了什么,允许通过很少的实际比较来完成许多值的比较?
我的问题是编译器在这种情况下正在做什么 它对代码的优化程度超出了我的想象 鉴于此枚举 enum MyEnum Entry1 Entry2 Entry3 27 are the same omitted for size Entry28 Ent
c
Assembly
Optimization
x8664
microoptimization
在Windows 64位上将mod_wsgi模块加载到apache中的问题
我正在尝试安装 mod wsgi 模块操作说明 http code google com p modwsgi wiki InstallationOnWindows 我从以下位置下载了 mod wsgi so这个来源 http www lfd
python
Windows
apache2
modwsgi
x8664
如何检查 x86_64 程序集中的寄存器是否为零 [重复]
这个问题在这里已经有答案了 我正在尝试检查 x86 64 汇编代码中的值是否为零 我知道这通常包括cmp变体后跟一个jmp变体 但我不确定确切的使用说明 如果您之前刚刚使用过修改 ZF 的指令 只需检查该标志并使用JZ or JE 例如 a
Assembly
x8664
在汇编中初始化字符串数组
我想创建一个数据数组 在初始化数据部分保存 5 个字符串 每个字符串正好有 4 个字符 每个字符串都有一些初始数据 例如第一个字符串的 abcd 第二个字符串的 efgh 等等 无效的 0任何字符串都不需要字符 如何用汇编语言初始化字符串数
Arrays
Assembly
nasm
x8664
使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS
我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
Linux
Assembly
x8664
nasm
buserror
从 64 位 nasm 代码接收 32 位寄存器
我正在学习 64 位 nasm 我通过执行以下操作来汇编 nasm 文件 该文件仅包含 64 位寄存器 nasm f elf64 HelloWorld nasm o HelloWorld o 并链接它执行以下操作 ld HelloWorld
Assembly
nasm
x8664
cpuregisters
我们可以使用 x86_64 CPU 原子在 PCI Express 上生成复合原子操作吗?
如您所知 从2 0版本开始 PCI Express支持复合原子操作 FetchAdd Swap CAS https pcisig com sites default files specification documents ECN Ato
Multithreading
Driver
linuxdevicedriver
x8664
PCIe
在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用
无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
Linux
Assembly
printf
x8664
glibc
该程序如何知道该字符串存储的确切位置?
我用 Radare2 反汇编了一个 C 程序 在这个程序中有很多调用scanf像下面这样 0x000011fe 488d4594 lea rax var 6ch 0x00001202 4889c6 mov rsi rax 0x0000120
c
Assembly
x8664
memoryaddress
尝试理解 printf() 的 gcc 汇编输出
我正在尝试学习如何理解汇编代码 因此我一直在研究 GCC 的汇编输出以获取一些愚蠢的程序 其中之一只不过是int i 0 我现在或多或少完全理解了其中的代码 最大的困难是理解散布的 GAS 指令 无论如何 我向前迈了一步并添加了printf
c
Assembly
x8664
段寄存器如何参与内存地址转换?
到目前为止我所学到的有关细分的知识 虚拟地址包含段选择器和偏移量 段选择器与GDTR配合使用 查找段描述符的线性地址 段描述符保存有关所选段的信息 包括其线性地址 所以 我的问题是 根据我所读到的内容 虚拟地址被加载到段寄存器中 然后以某种
x86
x8664
memoryaddress
cpuregisters
memorysegmentation
为什么 x86-64 上的 GCC 在函数内插入 NOP?
给定以下 C 函数 void go char data char name 64 strcpy name data x86 64 上的 GCC 5 和 6 编译 普通gcc c g o其次是objdump 这到 00000000000000
gcc
Assembly
x8664
noop
Mac OS X 上的 64 位程序集运行时错误:“dyld:无可写段”和“Trace/BPT trap”
当尝试运行以下汇编程序时 globl start start pushq 0x0 movq 0x1 rax subq 0x8 rsp int 0x80 我收到以下错误 dyld no writable segment Trace BPT t
MacOS
Assembly
x8664
32bit64bit
att
1
2
3
4
5
6
...23
»