初めて投稿させていただきます、よろしくお願いします。
Visual Studio2013
Windows8.1
Dxライブラリを使いつつなので#using?とかいうのが使えません。
昔自分で作ったゲームの隠しステータスをモニターしたいのですが、そのゲームのプロジェクトは既に削除していたので外部からReadProcessMemoryを使用して覗こうと考えました。
まず始めに:
VB.NETでProcessクラスを使用してメインモジュールのエントリーポイントアドレスを取得したやり方では正常に機能しました。エントリーポイントアドレス+MHSで探したアドレスを元に計算したオフセットを使用したのです。
そして、今度はC++とDxライブラリを使用して、文字ではなく画像で、ゲームの一部として作ろうと思ったのですが、Processクラスは使えず(使えるようにする#usingとやらはコンパイルできなくなる(DxライブラリとMTなんとかが競合?するので)、ReadProcessMemoryが使えてもメインモジュールのエントリーポイントアドレスが取得できないという状況です。
こちらのサイト
http://riosu.hateblo.jp/entry/2013/09/06/001208
を参考にして、まずはコピペして見ると、NtQueryInformationProcessPtrが定義されていないと出ます。
以上が状況です。
目的であるエントリーポイントアドレスを取得する方法を教えて頂きたいです。よろしくお願いします。
他プロセスのメインモジュールのエントリーポイントアドレスを取得したい。
Re: 他プロセスのメインモジュールのエントリーポイントアドレスを取得したい。
>Dxライブラリを使いつつなので#using?とかいうのが使えません。
何を言ってるのか”意味不明”自分でも”おかしいと思いませんか?①誰が、何が”Dxライブラリを使っているのか”主語がない。②”なので#using?とかいうのが使えません。”全く常識では考えられない言葉。自分でもわかる!?。
>昔自分で作ったゲームの隠しステータスをモニターしたいのですが、そのゲームのプロジェクトは既に削除していたので外部から
>ReadProcessMemoryを使用して覗こうと考えました。
何のこと?ゲーム見てて解らない。(隠しコマンドを見ないとわからないの?)
>まず始めに:
>VB.NETでProcessクラスを使用してメインモジュールのエントリーポイントアドレスを取得したやり方では正常に機能しました。エントリーポイ>ントアドレス+MHSで探したアドレスを元に計算したオフセッ・・・・・・
exeを逆アセブラすれば一発でわかると思うけど?
>そして、今度はC++とDxライブラリを使用して、文字ではなく画像で、ゲームの一部として作ろうと思ったのですが、Processクラスは使えず>(使えるようにする#usingとやらはコンパイルできなくなる(DxライブラリとMTなんとかが競合?するので)、ReadProcessMemoryが使えてもメ>インモジュールのエントリーポイントアドレスが取得できないという状況です。
訳が分かりませよ。他人が聞いて分かると思いますか...?。
>こちらのサイト
>http://riosu.hateblo.jp/entry/2013/09/06/001208
>を参考にして、まずはコピペして見ると、NtQueryInformationProcessPtrが定義されていないと出ます。
VBは一番自信のある言語なのでコピペしたコードとエラーを載せてくださいね!
>以上が状況です。
>目的であるエントリーポイントアドレスを取得する方法を教えて頂きたいです。よろしくお願いします。
これについてはC++の機能で逆アセンブルすれば一発で分かると思うけど?
何を言ってるのか”意味不明”自分でも”おかしいと思いませんか?①誰が、何が”Dxライブラリを使っているのか”主語がない。②”なので#using?とかいうのが使えません。”全く常識では考えられない言葉。自分でもわかる!?。
>昔自分で作ったゲームの隠しステータスをモニターしたいのですが、そのゲームのプロジェクトは既に削除していたので外部から
>ReadProcessMemoryを使用して覗こうと考えました。
何のこと?ゲーム見てて解らない。(隠しコマンドを見ないとわからないの?)
>まず始めに:
>VB.NETでProcessクラスを使用してメインモジュールのエントリーポイントアドレスを取得したやり方では正常に機能しました。エントリーポイ>ントアドレス+MHSで探したアドレスを元に計算したオフセッ・・・・・・
exeを逆アセブラすれば一発でわかると思うけど?
>そして、今度はC++とDxライブラリを使用して、文字ではなく画像で、ゲームの一部として作ろうと思ったのですが、Processクラスは使えず>(使えるようにする#usingとやらはコンパイルできなくなる(DxライブラリとMTなんとかが競合?するので)、ReadProcessMemoryが使えてもメ>インモジュールのエントリーポイントアドレスが取得できないという状況です。
訳が分かりませよ。他人が聞いて分かると思いますか...?。
>こちらのサイト
>http://riosu.hateblo.jp/entry/2013/09/06/001208
>を参考にして、まずはコピペして見ると、NtQueryInformationProcessPtrが定義されていないと出ます。
VBは一番自信のある言語なのでコピペしたコードとエラーを載せてくださいね!
>以上が状況です。
>目的であるエントリーポイントアドレスを取得する方法を教えて頂きたいです。よろしくお願いします。
これについてはC++の機能で逆アセンブルすれば一発で分かると思うけど?
Re: 他プロセスのメインモジュールのエントリーポイントアドレスを取得したい。
提示されたサイトMath さんが書きました: >以上が状況です。
>目的であるエントリーポイントアドレスを取得する方法を教えて頂きたいです。よろしくお願いします。
これについてはC++の機能で逆アセンブルすれば一発で分かると思うけど?
他プロセスのメモリを読む(C++編) - # vim /etc/blog
の最初に
と書いてあります。メモリの読み込み自体はWin32APIのReadProcessMemoryを使えば良い。
ただし、WindowsVista以降ではASLR(Address space layout randomization)機能により、実行ファイルなどの配置アドレスがランダムになっている。そのため、まずはその実行ファイルのメインモジュールの先頭アドレスを取得し、そこからの相対位置指定でメモリを読むことにする。
Windows8.1はWinows Vista以降です。
それでも逆アセンブルだけでわかると思いますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 他プロセスのメインモジュールのエントリーポイントアドレスを取得したい。
>Mathさん
最初の部分に関してはもう貴方が読解力ないんじゃないですかね……誰がDxライブラリを使ったか?そしたら開発環境も全てに私が使ってますと書けってことですかね
別に私は喧嘩したいわけじゃないんで、そうやって嫌な言い方をする人にコメントして欲しくないです。まあこれは誰でもそうだと思いますけどね。
わからなくて、貴方みたいに質問の前提とか完璧じゃないんでこうやって書いててわかりづらくなったりするのは認めます。でもそれでわざわざ常識だとか言い始める貴方は単純に能力がないこちらを見下したいだけじゃないですか。
ゲーム見ててわからない隠しだって書いてあるのに「見てわからないの?」とか言ってるあたり、もう答える気無くて馬鹿にしたいだけですよね?答える気も失せる質問なら答えなくて良いです。わざわざこっちをイライラさせないで下さい。
質問についてはC#で作る事にしたので解決しました。
最初の部分に関してはもう貴方が読解力ないんじゃないですかね……誰がDxライブラリを使ったか?そしたら開発環境も全てに私が使ってますと書けってことですかね
別に私は喧嘩したいわけじゃないんで、そうやって嫌な言い方をする人にコメントして欲しくないです。まあこれは誰でもそうだと思いますけどね。
わからなくて、貴方みたいに質問の前提とか完璧じゃないんでこうやって書いててわかりづらくなったりするのは認めます。でもそれでわざわざ常識だとか言い始める貴方は単純に能力がないこちらを見下したいだけじゃないですか。
ゲーム見ててわからない隠しだって書いてあるのに「見てわからないの?」とか言ってるあたり、もう答える気無くて馬鹿にしたいだけですよね?答える気も失せる質問なら答えなくて良いです。わざわざこっちをイライラさせないで下さい。
質問についてはC#で作る事にしたので解決しました。
Re: 他プロセスのメインモジュールのエントリーポイントアドレスを取得したい。
なぜかこのサイトでは欠けているようですが、参考サイトの1つまろん さんが書きました: こちらのサイト
http://riosu.hateblo.jp/entry/2013/09/06/001208
を参考にして、まずはコピペして見ると、NtQueryInformationProcessPtrが定義されていないと出ます。
リモートプロセスのコマンドラインパラメータを取得する - espresso3389の日記
での定義
が使えるかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 他プロセスのメインモジュールのエントリーポイントアドレスを取得したい。
みけCAT さんが書きました:なぜかこのサイトでは欠けているようですが、参考サイトの1つまろん さんが書きました: こちらのサイト
http://riosu.hateblo.jp/entry/2013/09/06/001208
を参考にして、まずはコピペして見ると、NtQueryInformationProcessPtrが定義されていないと出ます。
リモートプロセスのコマンドラインパラメータを取得する - espresso3389の日記
での定義が使えるかもしれません。
本当にありがとうございます!!
試させて頂きます!
Re: 他プロセスのメインモジュールのエントリーポイントアドレスを取得したい。
"Microsoft COFF Binary File Dumper (DUMPBIN.EXE) は、COFF (Common Object File Format) 形式のバイナリ ファイルに関する情報を出力します。 DUMPBIN を使うと、COFF オブジェクト ファイル、COFF オブジェクトの標準ライブラリ、実行可能ファイル、およびダイナミック リンク ライブラリ (DLL) の内容を確認できます"
とMSDNにあるようにDUMBIN(逆アセンブラ)のオプションから必要なの情報はすべてえられるはず。
サンプルもサイトにあったはず。(メモリーマッピングが分かるのように書いたページがあったのですが)
とMSDNにあるようにDUMBIN(逆アセンブラ)のオプションから必要なの情報はすべてえられるはず。
サンプルもサイトにあったはず。(メモリーマッピングが分かるのように書いたページがあったのですが)
Re: 他プロセスのメインモジュールのエントリーポイントアドレスを取得したい。
何か勘違いしているようだけど「VB.NETでProcessクラスを使用したのを援用する」というからC++ではおかしいでしょう...。
Vistahttps://ja.wikipedia.org/wiki/Microsoft_Windows_VistaはOSに.NetFrameWorkhttps://ja.wikipedia.org/wiki/.NET_Frameworkを採用した最初の機種だからC++でプログラムするならC++/CLIだしアンマネージなプログラムとのインターフェイス(例えばエクセル)は
System.Runtime.InteropServices 名前空間にあるマーシャリング機能を使用することになるでしょう。
VBとC#は相互にソースを交換可能だし、C#とC++/CLIほとんど同じだから ”C#" で作るのが一番でしょう。
(C++/CLI は実質開発は停止しC#に取って代わられた状態です。C++/CLIでゲームを作る本があるけど(図書館などに!「実はそれで勉強した!」)
(ただしExcelは ClosedXML か NPOI を使いCOMを使わない方がいいでしょう。いまだGoogleではCOMが上位だけれど。)
Vistahttps://ja.wikipedia.org/wiki/Microsoft_Windows_VistaはOSに.NetFrameWorkhttps://ja.wikipedia.org/wiki/.NET_Frameworkを採用した最初の機種だからC++でプログラムするならC++/CLIだしアンマネージなプログラムとのインターフェイス(例えばエクセル)は
System.Runtime.InteropServices 名前空間にあるマーシャリング機能を使用することになるでしょう。
VBとC#は相互にソースを交換可能だし、C#とC++/CLIほとんど同じだから ”C#" で作るのが一番でしょう。
(C++/CLI は実質開発は停止しC#に取って代わられた状態です。C++/CLIでゲームを作る本があるけど(図書館などに!「実はそれで勉強した!」)
(ただしExcelは ClosedXML か NPOI を使いCOMを使わない方がいいでしょう。いまだGoogleではCOMが上位だけれど。)