特定の変数のすべてのメモリを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; dr セグメンテーションフォールトの取得中にメモリを読み込もうとしました。どうすればそれらを避けることができますか?その他の選択肢は何ですか? (好ましくは管理者権限を必要とせずに)
追加情報:
- OS:勝利10 Proの64ビット
- CPU:インテル(R)Core(TM)[email protected] 2個のコア、4つのスレッド
- RAM:8ギガバイトDDR3
最初のいずれかの答えを
Windowsのユーザーモードプログラムからすべての物理メモリをスキャンすることはできません。実際にスキャンしているものは仮想メモリであり、プロセスに割り当てられたメモリだけが表示されます。割り当てられていない仮想アドレス空間のどの領域もマップされず、アクセスしようとするとセグメント化障害が発生します。 –
@RossRidgeありがとう^^。それを回避する方法はありますか?それとも、トピックについて読むために私をリンクすることができますか? – Ayren
あなたはプロセスを開いてそのメモリを読むことができます。それはそれが意図のようです – harold