C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: リング0?


(過去ログ 26 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■11845 / inTopicNo.1)  リング0?
  
□投稿者/ Delta (1回)-(2007/12/21(Fri) 23:31:32)

分類:[C#] 

他アプリのメモリを読み取るプログラムをどうやって作るのかを調べていたところ
リング0なる方式?があるのを知りました。
ただそこはC++前提で、それもWin32APIを叩いて取得するというものでした。
具体的にはメモリを読み取りたいアプリのハンドルを取得し、ReadProcessMemoryでハンドルを指定して読み取るという物です。

これをC#で実現したいのですが、可能なんでしょうか?
DLLimportすればAPI自体は使えそうではありますが、折角Managedなので標準関数で実現できないでしょうか?
仮にDLLimportしてAPI自体を使えたところで、型とかはC++の物なのでポインタとかが出てくる為どうやってC#で扱うのかもわからず・・・
LPCVOIDとかどうするのだろうとか。

このAPIが本来デバッグ用とかそういうのは分かった上での事です。
引用返信 編集キー/
■11850 / inTopicNo.2)  Re[1]: リング0?
□投稿者/ Hongliang (220回)-(2007/12/22(Sat) 09:26:51)
Hongliang さんの Web サイト
他のプロセスのメモリ空間はマネージできないので。
頑張って Win32API を駆使してください。
ヘルプの「アンマネージ コードとの相互運用」以下を熟読しておきましょう。
引用返信 編集キー/
■11868 / inTopicNo.3)  Re[2]: リング0?
□投稿者/ Delta (2回)-(2007/12/22(Sat) 19:28:10)
No11850 (Hongliang さん) に返信
> 他のプロセスのメモリ空間はマネージできないので。
> 頑張って Win32API を駆使してください。
> ヘルプの「アンマネージ コードとの相互運用」以下を熟読しておきましょう。
できないですか・・・
MSDNと格闘しつつ頑張ってみます。

ところでそうなるとドンドンManaged化が進んだらそういったソフトの作成は無理になるんですかね。
Win32APIもいつまでも残っていかないでしょうし、次の次のOS出る頃にはWin32APIなんて無くなってそうですし。
それとも延々残していって、そういう部分は非ManagedのC++とかでしか普通に弄れないようにって嫌な仕様になるのかなぁ。
普通にManaged環境でも、他プロセスのメモリ空間を読み取る関数ぐらいあってもいいと思うんですが
技術的に難しい物なんですかね。
引用返信 編集キー/
■11869 / inTopicNo.4)  Re[3]: リング0?
□投稿者/ も (12回)-(2007/12/22(Sat) 19:40:48)
> ところでそうなるとドンドンManaged化が進んだらそういったソフトの作成は無理になるんですかね。
> Win32APIもいつまでも残っていかないでしょうし、次の次のOS出る頃にはWin32APIなんて無くなってそうですし。
> それとも延々残していって、そういう部分は非ManagedのC++とかでしか普通に弄れないようにって嫌な仕様になるのかなぁ。
> 普通にManaged環境でも、他プロセスのメモリ空間を読み取る関数ぐらいあってもいいと思うんですが
> 技術的に難しい物なんですかね。
念のため書いておきますと
.NETフレームワークはWindows専用のものではありません(M$的に)
それを考慮すると,「Windows的なプロセスメモリ」はかな〜りローカルな話になります.
引用返信 編集キー/
■11870 / inTopicNo.5)  Re[3]: リング0?
□投稿者/ 渋木宏明(ひどり) (610回)-(2007/12/22(Sat) 20:04:29)
渋木宏明(ひどり) さんの Web サイト
> ところでそうなるとドンドンManaged化が進んだらそういったソフトの作成は無理になるんですかね。

無理つか、問題領域が違うのです。
元々そういう領域は「マネージ」が相手するとこじゃないですから。

雰囲気に流されて「なんでもマネージ」と騒ぐ前に、何が「マネージ」で何が「アンマネージ」なのかについてよく考えてみてください。

「マネージ」は「アンマネージ」な事物の上に構築されています。
将来的に割合は変わるかもしれませんが、この構図が完全に覆されることは当分無いでしょう。

> Win32APIもいつまでも残っていかないでしょうし、次の次のOS出る頃にはWin32APIなんて無くなってそうですし。

次の次ってことは10年くらいですよね?
希望的観測も含めて、Win32 API の使用率は激減していると思いますが、それでも完全に無用になることはまずないと思いますよ。

特に Windows に関しては、過去のバージョンとの互換性を確保しなければならない関係もあって、部分的な改良しか加えることができません。
「新規案件で Win32 API を使用しなくてもよくなる」率は上がると思いますが、それと「Win32 API が無くなる」のとは別なことだと思います。

引用返信 編集キー/
■11909 / inTopicNo.6)  Re[1]: リング0?
□投稿者/ シャノン (240回)-(2007/12/24(Mon) 20:01:30)
No11845 (Delta さん) に返信
> 具体的にはメモリを読み取りたいアプリのハンドルを取得し、ReadProcessMemoryでハンドルを指定して読み取るという物です。

それはリング0方式とは言いません。
強いて言うならリング3方式かもしれませんが、そんな呼び名は聞いたことがありません。

リング0ってのは、アンマネージ領域の中でも、デバイスドライバが扱う領域です。
普通にプログラミングしている限り、リング0領域にアクセスする必要はないでしょう。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -