2009-06-06 11 views
13

このジレンマを手伝ってもらえれば幸いです。さて、私はC \ C++を知っています、私はasmを知っています、私はdllの注入について知っています、私は仮想メモリのアドレッシングについて知っていますが、私はちょうどどのようにCheatEngineのようなソフトウェア のソフトウェアは、プロセス。他のプロセスのメモリ空間の値を変更する方法

第三者のチートエンジンツールは、プログラムのメモリ空間の値をスキャンし、変数の場所を特定の値で特定して変更することができます。

私の質問は、どうやってですか?

もし私がCコードを書いていたら、無効なアドレスエラーを出さずに別のプロセスに属するそのアドレスの値をどうすれば変更できますか?

ありがとうございました。

答えて

12

私はこれらのプログラムがデバッガであると確信しています。 Windowsでは、DebugActiveProcess()から始め、そこから移動します。

ああ、と非常に便利な探してReadProcessMemory()関数(とWriteProcessMemory())。

+0

ありがとう、これは私が探していたものです、素晴らしい作品です。 (このソリューションを読んでいる他の人は、完了したらDebugActiveProcessStopを必ず使用してください) –

+0

デバッグ中のプロセスがデバッグを終了した後に終了しないようにするには、必ずDebugSetProcessKillOnExit()を呼び出してください。 – mrduclaw

3

標準CまたはC++ではこれを実行できません。オペレーティングシステム固有の機能を使用する必要があります。ですから、あなたが興味を持っているどのOSを教えする必要が

+0

申し訳ありませんが、私はWindowsに興味がありますが、Linuxはすばらしいと思います。私もそこに試してみたいと思います –

4

UNIX上:。のptrace()

+0

ptraceは他のプロセスのメモリも変更できますか? – Matthew

+0

どのプロセスとは対照的に? – Thomas

2

またDetoursに興味がある可能性があり:Win32およびアプリケーションAPIを迂回するためにパッケージ化さ

ソフトウェア。

+1

迂回http://www.codingthewheel.com/archives/how-i-built-a-working-online-poker-bot-7をお読みいただきありがとうございます。楽しい実験ASCII \落書きの爆弾。それは64ビットのために自由に\簡単に利用可能ではない –

関連する問題