1

私はいくつかのデータを表示するアプリケーションを持っています。このアプリのプロセスにアタッチし、メモリ内で必要なデータ (実際には 1 つの数字) を見つけて、どこかに保存する必要があります。このアプリケーションは標準の Windows コントロールを使用していないようです。そのため、AutoIt などを使用してコントロール データを読み取るほど単純ではありません。

現在、私は自己学習型のデータベース担当者であり、Windows アプリのデバッグについて非常に浅い知識しか持っていません。質問を十分に正しく行ったかどうかさえわかりません。

では、最初に何を読むべきか、また、取り組むべき一般的な指示について、いくつかのスターター ガイドラインを教えていただけますか?

ありがとう。

4

5 に答える 5

8

他のアプリケーションのメモリを読み取るには、少なくともアクセス権を持つOpenProcessに関してプロセスを開き、 ReadProcessMemoryを使用してプロセスからメモリ アドレスを読み取る必要があります。あなたが管理者であるか、デバッグ権限を持っている場合は、最大のアクセス権でプロセスを開くことができます。事前に有効にするだけで済みます (たとえばhttp://support.microsoft.com/kb/131065を参照)。PROCESS_VM_READSeDebugPrivilege

宛先プロセスのメモリについてよくわからない場合は、VirtualQueryExに関してメモリ ブロックを列挙するだけでかまいません (プログラム コードを調べる例として、VirtualAllocEx を使用してコードの洞窟を作成する方法を参照してください)。 . 同じ方法で調べることができるプログラム データ)。

私が見る最も実際的な問題は、あなたがあまりにも一般的な方法で質問をすることです. 探しているデータの種類を詳しく説明していただければ、より良い方法を提案できると思います。たとえば、どこかでデータを確認できた場合、対応するウィンドウとコントロールを Spy++ (Visual Studio Tools の一部) に関して調べることができます。最も重要なのは、ウィンドウ (またはコントロール) のクラスと、最も興味深いウィンドウが表示されたときに送信されるメッセージです。また、 Process Monitorを使用して、興味深い情報を含むウィンドウが表示されたときに、すべてのファイルおよびレジストリ アクセスを追跡することもできます。少なくとも最初は、プロセスのメモリをReadProcessMemoryで調べる必要があります探しているデータがウィンドウに表示された瞬間。

調査がうまくいかない場合は、質問にさらに情報を挿入することをお勧めします。

于 2010-09-19T19:51:16.183 に答える
5

私の主なアドバイスは次のとおりです。これ以外の統合方法を見つけてみてください。成功したとしても、ターゲット プロセスや、場合によっては Windows O/S のあらゆる種類の変更の人質になります。あなたが説明しているのは、ほとんどのウイルス スキャナーがフラグを立てて妨害するべき動作です。

そうは言っても、 DLL インジェクションを見ることができます。しかし、逆アセンブル レベルでターゲット プロセスを完全にデバッグする必要があるように思えます。

于 2010-09-19T16:09:44.023 に答える
0

このソフトウェアの使用目的の性質上、これが一般的な答えではないことはわかっていますが、CheatEngineArtMoneyなどのプログラムを使用すると、プロセスによって予約されたすべてのメモリを特定の値で検索し、結果を絞り込むことができます。探している値のアドレスが見つかります。

私は最初、ゲームのトレーナーに出会った後、ゲームをより適切に保護する方法を学ぼうとしていたときにこれを学びましたが、デバッグ時にこの手法が役立つことがあることがわかりました.

上記のテクニックの使用例を次に示します: https://www.youtube.com/watch?v=Nv04gYx2jMw&t=265

于 2015-03-05T12:06:31.457 に答える
0

以前は Windows デバッグ API を知っていましたが、長い間メモリを失っていました。ollydbg の使用について:

http://www.ollydbg.de/

ollydbg スクリプトと autoit の両方でそれを制御しますか?

于 2010-09-19T16:08:51.953 に答える
0

面白そうですが…とても難しいです。これは「一過性」だと言うので、代わりにこのようなものはどうですか?

  • このアプリケーションのスクリーンショットを撮ります。
  • OCR プログラムでスクリーンショットを実行する
  • 探しているテキストを予測可能な方法で読むことができれば、道半ばです!

したがって、アプリケーションの OCR されたスクリーンショットを読み取ることができれば、次のことを行うプログラムを作成するだけで済みます。

  • 画面上のデータを取得する手順をスクリプト化します
  • 問題のデータのスクリーンショットを作成します
  • Microsoft Office Document Imagingなどの OCR プログラムを介して実行します
  • 関連するテキストを抽出し、それに対して「何でも」行います。

私は以前にこのようなことをしてかなり良い結果を得ましたが、それは脆弱な解決策だと思います. アプリケーションが変更されると、動作しなくなります。OCR がテキストを読み取ることができない場合、機能しなくなります。OCR が間違ったテキストを読み取った場合、動作を停止するよりも悪い結果になる可能性があります...

他の投稿者が言っているように、メモリに到達してデータを引き出すことはかなり高度なトピックです...それを行う方法を見つけられたら、あなたに称賛を!

于 2010-09-19T16:44:32.020 に答える