2012-01-06 4 views
1

私は最近、プログラミングのバックアップを選びました。私は他のプログラムのメモリを読むことに不思議でした。プログラムが起動するたびに同じもののメモリアドレスを見つける方法は?

最初に、私は純粋に教育目的のためだけにこれをやっていて、それができるかどうか疑問に思っていました。つまり、どのゲームでも何らかの優位性を達成することは決してできません。

はとにかく、私は(のはティミーを言わせて)メモリに私のキャラクターの名前を探していました。(さんがそれをgenericmmorpg呼びましょう)ゲームをロードして、ログイン。

だから私はチートエンジン(私はそれで動作するように知っていた唯一のメモリ・アナライザ)をアップロードし、私の名前が格納されたアドレスを見つけました。しかし、ゲームクライアントが開くたびに、自分の名前が格納されているメモリアドレスが変更されます。今では、ゲームの外であなたのキャラクターの名前を自動的に読み取るプログラムがたくさんあるので、それができることがわかっています。また、特定のメモリアドレスを対象とするシングルプレイヤーゲーム用のトレーナーがあることも知っています。

私は正しいアプローチ(メモリを検索)を取っていて、私のメソッドに変更を加える必要があるのか​​、あるいはこれらのプログラムで文字の名前を取得する可能性が高いのだろうかと思っていました。

+0

チートエンジンの場合は、プログラムに付属のチュートリアルに従ってください。起動時から起動時に変化するもののベースポインタを見つける方法について説明します。 –

答えて

1

1)最新のOSは、「仮想メモリ」を使用しています。実行中のプログラムはすべて論理アドレスです。あなたが実行している三つのプロセスを持っている場合、各プロセスは、(例えば)自分のアドレス0xe00ff002を持つことになりますし、そのアドレスの各プロセスの実際値は異なるになります。

これは、仮想メモリのOSで、一つのプロセスが別のプロセスのメモリを読み取ることができない、というの長い道のりです。

2)はい、確かにテキスト文字列を検索できます。いずれかのプロセスのメモリに。またはプロセスが実行されているバイナリ.exeファイル。

3)これは、各プロセスが、まったく同じメモリアドレスを使用して、それをロードするたびにまったく同じロードするかどうか、OS上で、プログラムに依存します。ほとんどのOS上で実行されているほとんどのプログラムで

、答えは「いいえ:異なる事が一般的に異なる時間に異なる場所にロードします。」ではありません