【发布时间】:2016-10-18 16:25:07
【问题描述】:
我正在尝试通过 nasm 扫描我的所有内存以查找特定变量。 我当前的代码看起来有点像这样:
%include "io64.inc"
%define VAR 1234
section .text
global main
main:
mov rax, 0x0
nxt:
mov rbx, [rax]
cmp rbx, VAR
je end
inc rax
jmp nxt
end:
PRINT_HEX 8,rax
ret
我的问题是这迟早会产生分段错误(取决于起始地址,它可能会运行几个周期然后失败)。在搜索如何做到这一点时,我没有找到关于该主题的任何答案。我怀疑 cs 和 ss 寄存器可能需要对它做些什么,但我不知道到底是怎么回事。 我知道作弊引擎能够做到这一点,所以必须有办法做到这一点。
tl;博士 尝试读取内存,出现分段错误;我该如何避免它们?还有哪些其他选择? (最好不需要管理员权限)
附加信息:
- 操作系统:Win 10 Pro 64bit
- CPU:Intel(R) Core(TM) i5-4210M@2.60GHz 2 核 4 线程
- 内存:8gb DDR3
感谢您的任何回答
【问题讨论】:
-
您无法从 Windows 下的用户模式程序扫描所有物理内存。您实际扫描的是虚拟内存,您只看到专门为该进程分配的内存。任何未分配的虚拟地址空间区域都不会被映射,尝试访问它会导致分段错误。
-
@RossRidge 谢谢^^。有什么办法绕过它?或者您可以链接我以阅读有关该主题的任何内容?
-
你可以打开一个进程并读取它的内存,看起来就是这个意图
标签: windows assembly nasm x86-64