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

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

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

Re[3]: メモリ上の操作


(過去ログ 16 を表示中)

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

■5696 / inTopicNo.1)  メモリ上の操作
  
□投稿者/ 黒 (1回)-(2007/07/20(Fri) 19:33:35)

分類:[C#] 

現在C#で自作でSLGゲームを作成しております。
ゲーム自体はほぼできています。

そして今回作成したいのは、デバッグ用の外部アプリです。
例えて言うなら、市販ゲームによくある改造プログラムみたいなものでしょうか。
リアルタイムでメモリ上のデータを書き換えていくやつです。
三国志で兵士数を増やすとか金を増やすとかですね。

ゲームのデバッグ作業用にそういったパラメータを自由に変えつつテストしたいのでそういう外部アプリを作りたいのですが
特定のメモリ上のデータをどうやって弄ればいいのかわかりません。
ゲーム自体にデバッグモードでも組み込めば早いと思われるでしょうが
デバッグモードが存在するという事自体がどうも好きではないので、完全に外部にしたいと思っています。
コンシューマのゲームでも改造コードでデバッグモード出現とかありますが・・・
汎用のメモリエディタでもできますが、デバッグの手間を考えて専用ツールを作りたいです。
汎用のだと自分自身でアドレスを探してどうこうが必要ですが、ゲーム専用なら最初から○○項目を変更
みたいな入力ボックスでできますので。

それでいざ作成しようと思ったんですが、他アプリが使用しているメモリ領域へのアクセス及び改変方法がさっぱりわかりません。
C#でそういうことは簡単に実装できるでしょうか?
C++でないとアクティブなメモリ操作は無理でしょうか?
自作ゲームですが、そもそもどうメモリに展開されるかすらよくわかりません。
自分自身のプログラムからならメモリアドレスなんて気にせずに変数でアクセスすればいいので簡単なんですが
外部アプリから値を変更したい場合一体どうやって見つけ出し、値を書き込むんでしょう?

引用返信 編集キー/
■5698 / inTopicNo.2)  Re[1]: メモリ上の操作
□投稿者/ 中博俊 (1125回)-(2007/07/20(Fri) 19:37:56)
中博俊 さんの Web サイト
難しいですね。
基本的に外部プロセスのメモリにアクセスするとAccessViorationです。
ただのこだわりなら捨てちゃえば軽くならないですか?

#デバッグ系のAPIを調べてください。
引用返信 編集キー/
■5699 / inTopicNo.3)  Re[1]: メモリ上の操作
□投稿者/ れい (10回)-(2007/07/20(Fri) 19:56:57)
No5696 (黒 さん) に返信
> C#でそういうことは簡単に実装できるでしょうか?
> C++でないとアクティブなメモリ操作は無理でしょうか?

どういうレベルでできるか、という問題になりますが、
インターフェースはC#でもC++でもなんでもできはしますが
簡単にはできませんよ。

> 外部アプリから値を変更したい場合一体どうやって見つけ出し、値を書き込むんでしょう?

それが簡単にできてしまうと
ライセンス違反が簡単にできてしまうってことになりますよね?

>ただのこだわりなら捨てちゃえば軽くならないですか?

同意です。
デバッグするためのデバッグコード。デバッグモード。

どうしてもやりたいなら
DLL Injectionが楽ですね。
ネットにたくさん情報があります。

引用返信 編集キー/
■5702 / inTopicNo.4)  Re[1]: メモリ上の操作
□投稿者/ とっちゃん (173回)-(2007/07/20(Fri) 20:07:21)
とっちゃん さんの Web サイト
No5696 (黒 さん) に返信

> ゲームのデバッグ作業用にそういったパラメータを自由に変えつつテストしたいのでそういう外部アプリを作りたいのですが
> 特定のメモリ上のデータをどうやって弄ればいいのかわかりません。
普通に考えれば、デバッガを作るということになるかと。
C#で、汎用的なもので有名なのは、VisualStudioとか、SharpDevelopと言うあたりでしょうか。

実現は可能だと思いますよ。
どれくらいの工数がかかるかは全く想像できませんけどw

とりあえずは、Debug系のAPIの調査からでしょうか。

引用返信 編集キー/
■5723 / inTopicNo.5)  Re[2]: メモリ上の操作
□投稿者/ 黒 (2回)-(2007/07/21(Sat) 16:32:27)
皆さんのお話からするとなんか難しくて敷居が高そうですね・・・
勉強するにしてもそうそうすぐ習熟できるようなものではなさそうなので
今回はとりあえず内部組み込みでやってみようと思います。

平行しつつメモリ関連の勉強をして、将来はできるようになりたいところです。
皆さんありがとうございました。
解決済み
引用返信 編集キー/
■5736 / inTopicNo.6)  Re[3]: メモリ上の操作
□投稿者/ 渋木宏明(ひどり) (282回)-(2007/07/22(Sun) 05:50:54)
渋木宏明(ひどり) さんの Web サイト
実用的かつ汎用的なものを作ろうとすると、いわゆる「デバッガ」になってしまうので、これはとても敷居が高いです。
.NET 限定なら、ネイティブもしくはミックスドなものを作るよりは多少楽かもしれませんが。

# 偶然ですが、ターゲットへの組み込み前提でリフレクションベースの簡易デバッグツール作ってたりして>じぶん

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -