問題タブ [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.
f# - F# で別のプロセス メモリ モナドを読み書きする
シングルプレイヤーゲームのチートに取り組んでいます。私は関数合成、不変性、ボイラープレートのないコードが好きなので、チートを F# で書くことにしました。私はうまくいくものを完成させました。コードが完璧とはほど遠いことは承知していますが、今日、私は F# を使って旅を始めました。
コードから何らかの形で副作用を取り除く方法があるのだろうか。これを達成する方法を教えてください。
ありがとう、
ラファル
c# - プロセスのメイン エントリの取得 C#
現在、C# を使用してメモリ スキャナーを作成しています。0x400000
したがって、プロセスのメイン メモリ エントリ ポイント (多くの場合)を特定したいと考えていますx32
。私はすでにすべてのアクセスで を開きましたpHandle
。スキャンする開始アドレスを取得するにはどうすればよいですか?
c# - C# ReadProcessMemory: 64 ビット メモリ アドレスを読み取る方法は?
アプリケーションメモリの読み取りを開始しています。CheatEngine を使用してメモリ アドレスを取得し、その値を返そうとしています。ただし、CheatEngine は 64 ビット メモリ アドレスを返しているように見えるため、ReadProcessMemory 関数は、アドレスを入力するたびに「long」を「int」に変換できないと通知し続けます。私が見つけたすべてのチュートリアルは、00AB5678 のようなメモリ アドレスに基づいているようですが、取得しているものは D3569227FC に似ています。
私の質問は、ReadProcessMemory をより大きなメモリ アドレスで使用するにはどうすればよいかということです。
これが私のコードです:
編集: VS2012 --> Project --> ApplicationName Properties --> Build --> Platform Target --> Change to "x64" に移動して、C# アプリケーションを 64 ビット アプリケーションに変換しました。コードを変更して 64 ビット アドレスを読み取る方法。
c++ - C++ ReadProcessMemory バッファーに常に 0 が表示される
私の &pTemp
そのため、私はこれをよく理解していないと思います。私が間違っていなければ、ポインター値は pTemp に格納されているはずですよね? では、ベース ポインタが 0x00001A の場合、pTemp は同じものを表示するべきではないでしょうか? 私は C++ に本当に慣れていないので、助けていただければ幸いです。
python - ctypes ReadProcessMemory Python、値が 00 で終わると読み取りを停止します
一部のメモリ アドレスの読み取りに問題があります。"1C1F3400" のように "00" で終わる場合を除いて、ほとんどは問題なく動作します。
読み取り機能自体のコードは次のとおりです。¨
次に、時々失敗する部分のこのコードがあります。これは、プリセットポインターの配列を取り、それらすべてを通過した後に正しいアドレスを見つけます。モジュール アドレスは以前に検出され、クラス変数にあります。
これは、最後のアドレスから読み取った値の最後に 00 がない場合の動作です。
そして、この値は期待される結果 (この場合は整数) を保持します。
しかし、時々私はこれを得る:
Cheat Engine を使用して手動で値を読み取ると、1C1F3400 と等しくなるはずです。そして、そこからポインターチェーンをたどると、正常に機能し、最終結果は正しい値になります。ReadProcessMemory 関数はエラーを返しませんが (1 を返します)、rPM によって読み取られた値が 0 であるため、アンパックは失敗します。
失敗したアドレスには常に最後に 00 があるため、読み取りが早期に停止すると推測していますか? これを回避する方法や、私が犯している明らかな間違いはありますか? あるいは、私の仮定が間違っているかもしれません。
他にも間違いがあるかもしれません。バイトを解凍すると混乱します。私は他の多くの質問を読みましたが、それらのほとんどは、間違ったハンドルまたはrPM関数によって返された別のエラーが原因でメモリ読み取りが失敗したことに関するものです。この場合、成功すると表示されますが、出力は0です(戻り値ではありません) 「theValue」を出力すると、それが0になることがわかります(したがって、アンパックは失敗します)。また、これらの値を除いて正しく機能します。
確認するためにテストしましたが、値 0x1B334D00、0x04DA8300 および 00 で終わる他の値を見つけることにも失敗しました。3 バイトを読み取って最後に 00 を追加するようなことはできますか? ? それ以外に、「theValue」の型が間違っているか、struct.unpack 引数が間違っている可能性があります。
私はたくさん検索しましたが、途中でいくつかの明らかな答えを見落としている可能性があります。
編集:私がしているのは、正しいメモリアドレスに到達するためにポインター値を読み取ることです。オフセットと初期アドレス、および探している各アドレスのモジュール アドレスが格納されています。失敗する人は毎回違います。したがって、読み取りごとにポインターアドレスが返されるはずです。次に、それにオフセットを追加して、次のアドレスを取得します。しかし、特にポインターが 00 で終わる 16 進アドレスを持っている場合は、途中で失敗することがあります。その後、ReadProcessMemory はアドレスの代わりに何も返しません (エラーではなく、何も返しません)。他のツールを使用すると表示されるため、アドレスがそこにあることは知っていますが、ここで使用されている方法では、アドレスの代わりに何も返されず、理由がわかりません。構造体の使用法は問題ないはずです。問題は ReadProcessMemory にあると思います。
構造体エラーには、「unpack には長さ 4 の文字列引数が必要です」と書かれています。これは、ReadProcessMemory が何も返さなかったためだと思います。値が 0 のアドレスを読み取って struct.unpack を使用すると、同じエラーが発生します。これは正常だと思いました。
c# - C# - Read Write Process Memory , Pointers and Offsets Gamer Server Management Tool
ゲームのサーバー マネージャーをコーディングしていて、C# のポインターとオフセットに行き詰まりました。古いサーバー マネージャーは vb6 で書かれており、何らかの理由で私の Windows では動作しないため、C# でいくつかの基本的な機能をコーディングすることにしました。
私はすべてのプレイヤー名を取得するためだけに書いているので、必要なすべてのポインターとオフセットの値を持っています。
プレイヤー ポインター = 96C290 プレイヤー名 オフセット = +20
+668のオフセットは、次のプレイヤー ポインターを提供し、次のプレイヤーに+20を追加すると、次のプレイヤー名などを提供する必要があります。
最初のプレイヤー名の読み方
プレイヤー名を取得できません。VB6で書かれたスクリプトが動作します。私はWin8.1 64 ビットを使用しており、ゲームは非常に古い 32 ビット アプリケーションです。
何が問題なのですか? 値を手動で表示するためにチート エンジンを使用しましたが、何も表示されません。ポインターとオフセットの値は正しいです。
さまざまなオフセット値を使用しましたが、どれも正しい値を返しません。
質問は**コーディングの最後で何か間違ったことをしている場合は? またはそれはOS 64ビットの問題です。**