問題タブ [readprocessmemory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1005 参照

winapi - プロセスがプロセスのメモリを読み取るときに関数を呼び出す方法 - Win32 API

最近は、関数へのフックとコールバック関数の作成について研究しています。テクニック全体を完全には理解していませんが、Windows API の ReadProcessMemory() 関数をフックして、何かがメモリを読み取るたびにプロセスに関数を呼び出させるようなことができるはずです。興味本位でやってみたかったのですが、Windowsの機能にフックすることで、オンラインゲームのハッキング防止に非常に役立ちそうです。

残念ながら、このテーマに関するチュートリアルや記事などが大幅に不足しています。私は多くのインジェクション コードに目を通しましたが、理解の欠如が私を妨げています。私がやりたいことは可能ですか?誰かが私を正しい方向に向けることができますか?

オブジェクト指向プログラミングから喜んで踏み出すのはこれが初めてなので、これが意味をなさない場合は申し訳ありません。

0 投票する
1 に答える
2465 参照

c# - Cheat Engineを使用したc#readprocessmemory

チート エンジンを使用して見つけたアドレスから文字列値を取得しようとしています。たとえば 0x01742A38 が見つかりました。これは私のプログラムの主要部分です (通常の Windows フォーム アプリケーション)。

0 投票する
1 に答える
319 参照

c# - メモリー スキャナーで結果が見つからない

メモリ内のポインタを見つけるための小さなメモリ スキャナ アプリケーションを作成しています。
しかし、期待した結果が得られていないようです。

次のコードがあります。

このようにメソッドを呼び出すと:

プロセスの読み取り値が1234の整数であることは知っていますが、結果は得られません。他の値をスキャンすると、結果が得られることがあります。

baseAddressありprocess.MainModule.BaseAddress

lastAddressありbaseAddress + process.MainModule.ModuleMemorySize

ここで何か不足していますか?

0 投票する
1 に答える
1090 参照

c++ - C++ ReadProcessMemory から char * への代替

外部で使用されていたプロセスが現在内部で使用されています。このプログラムは ReadProcessMemory を使用してメモリからデータを Char * にコピーします。以下はコードです。

私は現在、プログラム内からこれを行っています。私の目的は、RPM を使用せずにその情報を同じ配列に読み込むことです。

memcpy を試みましたが、プログラムがクラッシュするようですが、大量のメモリを読み込んでいるため、なぜこれが起こっているのかを発見するのは困難です。

RPM を使用するこのプログラムの代替手段には問題がなく、データを正確にスキャンできるため、memcpy が間違っているとしか思えません。

編集: 新しいコードはプロセス内で DLL としてロードされています。これにより、内部で値を読み取ることができるようになります。

更新コードを編集します。

0 投票する
2 に答える
1730 参照

c++ - ReadProcessMemoryと同等のc ++ポインター操作

別のアプリケーションからプログラムのメモリを読み取る必要があります。プロセス全体とアプリケーションの「接続」が整っています。

開かれたプロセスのメモリ内のパターンを検索する関数があり、署名のおかげで、関心のある関数への有効なエントリ ポイントが返されます。

問題は、データに導くアセンブリ命令 (オフセットや署名では見つけられない) は次のとおりです。

私は周りを検索して、これが私の目的に役立つ可能性があることを発見しました:

しかし、問題は、「注入」を使用すると上記の行が機能することであり、許可されていないため、ReadProcessMemory を使用しています。

それで、誰かが「翻訳」を手伝ってくれませんか

アセンブリ命令を考慮して、ReadProcessMemory呼び出しへのポインタ操作?別のアプリケーションから開いていることを考えると、ReadProcessMemory (他の操作のために定期的に呼び出すことができます) を使用しないと、H5Calc メモリ領域にアクセスできません。

どんな助けでも感謝します。

ありがとう。

0 投票する
2 に答える
2811 参照

python - Python - バイトアドレス(ReadProcessMemoryから)を文字列に変換していますか?

更新 1:

を使用して、以下の解決策を試しましたbuffer.value.decode()。これは正しい方向への一歩ですが、これを に戻し(#たいです9000。Cheat Engine を使用してアドレス値を に変更すると2000、同じ方法でエラーが発生しますUnicodeDecodeError: 'utf-8' can't decode byte 0xd0 in position 0: invalid continuation byte。だから私は間違ったエンコーディングを持っていると推測しています。私はそれで何をすべきかについて何か提案はありますか?

元の質問:

ctypes から ReadProcessMemory を使用して、プロセス内のアドレスから値を取得しようとしています。バイトデータは問題なく取得できているようですが、適切な形式に変換するのに苦労しています。チート エンジンを使用してサード パーティの方法でデータを検査し、それを使用してアドレスのデータを変更しています。スクリプトから正しいアドレスが出力されていると確信しています。返されると予想される値は 9000 です。使用している完全なコードは以下のとおりですが、(ctypes から) c_char_p 型のバッファーにメモリを読み込んでいます。値を文字列に変換して出力する方法をいくつか試しました。を使用するとstr(buffer)、期待どおり、バイト表現が として返されc_char_p(b'(#')ます。str(int.from_bytes(buffer, sys.byteorder))I get backを使用してデータを変換しようとすると、43586512. を使用してバイトから変換する機能を他の場所で見ましたbuffer.decode()が、c_char_p にはデコード メソッドがないため、これは ctypes バージョン用ではないようです (これは、ctypes 以外のプロセス アドレス値を取得するために別のアプローチを取る必要があることを示唆している可能性があります)。探している形式でこのアドレスの値を正しく取得するために何をする必要があるかを誰かが指摘できますか? どうもありがとう!

コード: