問題タブ [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.
c# - C#の別のプロセスメモリで特定の文字列(またはバイト配列)を検索する高速な方法は?
別のプロセスメモリで文字列を検索し、見つかった場合は一致のオフセットを取得する方法の実際のソースコードの例 (またはリンク) を投稿してください。ReadProcessMemory を使用してゲーム メモリ内の値を検索するゲーム チート ユーティリティで同様の方法が行われます。
vb.net - ReadProcessMemory が 0 を返し続ける
私は現在、VB.NET を介して G15 キーボードのゲームに健康情報を表示する小さな趣味のプロジェクトを開発しています。
API 呼び出しを介して ReadProcessMemory を使用すると、0 が返され続けます。MSDN のドキュメントでは、Marshal.GetLastWin32Error() 呼び出しを使用して何が問題なのかを調べるように指示されており、1400: INVALID WINDOW HANDLE が返されます。
関数の最初の引数がウィンドウ ハンドルまたはプロセス ID のどちらを必要としているかについて混乱しています。とにかく、アプリケーションの実行中にFindWindowとプロセスIDのハードコーディングの両方を試しました(タスクマネージャーから取得します)。
私は 3 つの異なるゲーム、Urban Terror、Grand Theft Auto: SA、Windows 用の 3D ピンボールを試し、Cheat Engine と呼ばれるアプリケーションからメモリ アドレスを取得しました。それらはすべて失敗しているようです。
これを行うために使用しているコードは次のとおりです。
API 呼び出し:
方法:
誰かがなぜそれが機能しないのか説明してもらえますか? 前もって感謝します。
vb6 - ReadProcessMemory の出力から文字列を取得する方法
これは私のコードのスニペットです。
WideCharToMultiByte の呼び出し中に '94 null' エラーが発生しました。しかし、バイトは空ではないと確信しています。
これは、この出力を文字列に変換する正確な手順ですか?
python - Windows で別のプロセスのメモリを変更する Perl、Python、または Ruby プログラムを作成する方法は?
Perl、Python、または Ruby を使用して、別のプロセスのメモリ (おそらくデータとコード データの両方のヒープ) で 0x12345678 を探し、見つかった場合は変更するようにプログラムを作成できるかどうか疑問に思います。 0x00000000? これは、Windows でそのようなことを行うことができるCheat Engineに似たものです。
c - ReadProcessMemory はより大きなバッファーを返します (C、windows)
次のコードを使用してプロセス メモリを読み取ろうとしています。
これで、WriteProcessMemory を使用したため、phandle と paddress がわかりました。そこからの価値観を持っています。データサイズも知られています。
以下を除いて、機能は正常に動作します。ReadProcessMemory() は dataread = 41 を返します (これは正しいです。datasize に 41 を渡しました) が、実際のバフの長さは 49 です。バフを出力すると、文字列とガベージが得られます。
私は何を間違っていますか?
コードは大歓迎です。
ありがとう!
java - JNI の専門家向け、JNI を使用して ReadProcessMemory を呼び出すにはどうすればよいですか? (Windows アプリケーションからメモリを読み取る)
Java から C++ メソッドを呼び出す可能性があるかどうかを知りたいです。
Javaからメモリプロセスを読み込めるようにしたいと思っています。
私はC++を知っていますが、Javaのようなより高いレベルを使用したいのですが、それでもプロセスメモリにハックすることができます.
手がかりはありますか?
[]の
python - Python Ctypes Read / WriteProcessMemory()-エラー5/998ヘルプ!
怖がらないでください。ただし、次のコードは、ctypesまたはCに精通している場合は、読みやすいはずです。
私はReadProcessMemory()関数とWriteProcessMemory()関数を長い間機能させようとしてきましたが、正しいものを除いてほとんどすべての可能性を試しました。
ターゲットプログラムを起動し、そのPIDを返し、問題なく処理します。しかし、私は常に5のエラーコードを受け取ります--ERROR_ACCESS_DENIED。読み取り関数を実行すると(今は書き込みを忘れてください)。私はこのプログラムを、PROCESS_ALL_ACCESSまたはCREATE_PRESERVE_CODE_AUTHZ_LEVELを使用したCHILDプロセスであると信じているものとして起動しています。
ハンドルを開いたときに、PROCESS_ALL_ACCESSとPROCESS_VM_READも試しました。
また、CheatEngineを使用して実行中のプログラムで見つけることができるため、有効なメモリの場所であるとも言えます。
VirtualQuery()に関しては、998のエラーコードが表示されます-ERROR_NOACCESSは、セキュリティ/特権の問題であるという私の疑いをさらに確認します。
どんな助けやアイデアも大歓迎です。繰り返しになりますが、これはこれまでの私のプログラム全体です。あなたを怖がらせないでください=P。
ありがとう!
datagridview - GridView にメモリを XML として割り当てる方法
TL;DR: ManagedSpy を使用してプログラムの DataGridView コントロールのプロパティを参照すると、そのプログラムは DataGridView データを XML としてメモリに割り当てます。私のプログラムから同じことを起こすにはどうすればよいですか? (これは完全な DataGridView ではありません。コントロールは Infragistics.Win.UltraWinGrid.UltraGrid と呼ばれます)
完全なストーリー:
私は ManagedSpy ( http://msdn.microsoft.com/en-us/magazine/cc163617.aspx ) を使用して、DataProgram と呼ばれるプログラムをスパイしています。ManagedSpy のスクリーンショットについては、そのページの図 2 を参照してください。
DataProgram には、必要な情報が満載の DataGridView っぽいものがあります。また、その情報を Excel ファイルにエクスポートするオプションもあります。それをCSVにエクスポートしてクリップボードに入れるオプションがあればいいのにと思います。
ManagedSpy のツリービューで DataProgram のコントロールを確認すると、情報が必要な正確な DataGridView を見つけることができます。右クリックして「ウィンドウを表示」を選択すると、コントロールの周りにボックスが点滅するので、それが正しいことを知っています。
奇妙な点は次のとおりです。ManagedSpy のウィンドウの右側にプロパティを表示するために左クリックすると、魔法のようなことが起こります。テーブル全体が DataProgram のメモリ内に XML として割り当てられるため、メモリ スキャナの助けを借りて、テーブル全体が目の前にあることを確認できます...その後、ガベージ コレクタがそれを取り除きます。しかし、それは30秒ほどそこにありました(もちろん、GCが非決定論的であるため、変化します)。ちなみに、コントロール クラスは Infragistics.Win.UltraWinGrid.UltraGrid で、強化された DataGridView のようなものです (私は想像します)。
これが私の質問です。ご覧のとおり、XML テーブルが割り当てられている正確なポイントで DataProgram のメモリを読み取りたいと考えています。私はすでにメモリを読み取る方法を知っています(ReadProcessMemoryを使用)。ManagedSpy と同じように、DataProgram をトリガーしてプログラムから XML テーブルを割り当てる方法を知りたいです。ManagedSpy のソース コードは Web サイトから入手できますが、管理者としてのみ実行され、何らかの理由で実行できないため、デバッグできません。プログラムから DataProgram を呼び出してその XML 情報を作成し、メモリから読み取ることができるようにする方法を知る必要があります。
ruby - Rubyで、外部プロセスからメモリ値を読み取るにはどうすればよいですか?
したがって、私がやりたいのは、別のプロセスの仮想メモリ内の既知のメモリアドレスからいくつかの値を読み取るRubyプログラムを作成することだけです。メモリ内で実行中のプロセスのx86アセンブリを16進数で編集するという私の調査と基本的な知識を通じて、必要なメモリ内の値のベースアドレスとオフセットを見つけました。私はそれらを変更したくありません。読みたいだけです。私は、メモリエディタの開発者に、この言語の要約にアプローチし、Windowsプラットフォームを想定する方法を尋ねました。彼は、OpenProcess、CreateProcess、ReadProcessMemory、およびWriteProcessMemoryのWin32API呼び出しが、CまたはC++のいずれかを使用する方法であると私に言いました。Win32APIクラスを使用し、その2つのインスタンスをマッピングするだけでよいと思います。ユーザーがすでにプロセスを実行しているかどうかに応じて、OpenProcessまたはCreateProcessのいずれかに1つ。別のインスタンスがReadProcessMemoryにマップされます。実行中のプロセスのリストを取得するための関数を見つける必要があるので、すでに実行中の場合、どの実行中のプロセスが必要かがわかります。
これをすべてまとめるには多少の作業が必要ですが、コーディングするのにそれほど悪くはないと思います。私は高水準言語(とにかくCよりも高水準)からこの低水準で作業したことがないので、これは私にとってプログラミングの新しい領域にすぎません。私はこれにアプローチする方法を考えています。たくさんのWin32API呼び出しを使用することもできますが、それは、システムに依存する一連の文字列と配列のパックとアンパックを処理する必要があることを意味します。私が読んでいるプロセスは複数のプラットフォームビルドを持つ実行可能ファイル(メモリアドレスがシステムごとに変わることはわかっています。Rubyプログラムが現在のプラットフォーム環境を一致するメモリマッピングに一致させることができるように、すべてのメモリマッピングを含むフラットファイルを作成するというアイデアです。
私が知っている限りでは、私が見つけていないこれらすべてを処理するRubygemがすでに存在している可能性があります。また、ビルドごとに実行可能ファイルを編集して、読み取りたいメモリ値がプロセスによって書き込まれるたびに、新しい値のコピーを共有メモリ内のスペースに書き込むようにすることもできます。 Rubyは、その共有メモリアドレスへの内部ポインタであるクラスのインスタンスを作成し、値が更新されて再ロードする必要があることをRubyプログラムに何らかの形で通知します。基本的には割り込みベースのシステムがいいのですが、これらの値を読み取る目的は中央サーバーからブロードキャストされたスコアボードに送信することだけなので、一定の時間間隔で更新を送信するポーリングベースのシステムに固執することができます。また、Rubyを完全に放棄して、CまたはC ++に移行することもできますが、それらについてはほとんどわかりません。私は実際にはC++よりも多くのx86を知っており、システムに依存しないANSI CまではCしか知らず、これまで共有システムライブラリを扱ったことがありません。
それで、すでにこれを行っている宝石またはあまり知られていないモジュールが利用可能ですか?そうでない場合は、これを実現する方法に関する追加情報があれば便利です。簡単に言えば、これをすべて行うにはどうすればよいでしょうか。
よろしくお願いします、Grg
PS:また、これらのWin32API呼び出しがkernel32.dllライブラリを対象とする必要があることを確認するとよいでしょう。
delphi - Delphiの他のプロセスのStackWalk?
Delphi で別のプロセス スタックを読み取る方法を知っていますか??