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

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

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

Re[3]: C# VirtualProtectについて


(過去ログ 126 を表示中)

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

■75043 / inTopicNo.1)  C# VirtualProtectについて
  
□投稿者/ Form1 (1回)-(2015/02/23(Mon) 01:08:42)

分類:[C#] 

const uint PAGE_NOACCESS = 0x200;
        [DllImport("kernel32.dll")]
        public static extern bool VirtualProtect(IntPtr lpAddress, uint dwSize, uint flNewProtect, out uint lpflOldProtect); 

private void button4_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process process = System.Diagnostics.Process.GetProcessById(num11);
            System.Diagnostics.ProcessModule m = ModuleHandleByName(process, " .dll"); //DLL指定
            if (m != null)
            {
                IntPtr sso = m.BaseAddress; ///ベースアドレス取得
                int ij = (int)sso;
                ProcessID = num11;
                ProcessHandle = OpenProcess(0x001F0FFF, false, ProcessID); 
                int num16 = Convert.ToInt32("25FF", 16); // ベースアドレス下四桁   

                IntPtr Addr = new IntPtr((int)sso.ToInt32() + num16);/// ベースアドレス + 下四桁
                MessageBox.Show(Addr.ToString("X")); //アドレス確認
                uint lpflOldProtect;
                VirtualProtect(Addr, 0x1000, 0x200, out lpflOldProtect);
            }

一部省略していますが ソースを組むとエラーは出ませんが反映していません。
属性保護も保護解除も試してみましたがどちらとも反映せずです。
もちろんアドレス先もハンドルもしっかり取得できています。

初心者なのでエラーがでないだけにどこが間違っているのかさっぱりわかりません。
良ければ教えていただけると幸いです。

引用返信 編集キー/
■75044 / inTopicNo.2)  Re[1]: C# VirtualProtectについて
□投稿者/ Azulean (439回)-(2015/02/23(Mon) 06:19:36)
やりたいことは別プロセスのメモリ空間へのアクセスなんでしょうか?
そうであれば、VirtualProtectEx を使う必要があります。
引用返信 編集キー/
■75045 / inTopicNo.3)  Re[2]: C# VirtualProtectについて
□投稿者/ 774RR (221回)-(2015/02/23(Mon) 10:27:26)
http://www.pinvoke.net/default.aspx/kernel32.VirtualProtect
VirtualProtect (および Ex) は SetLastError 属性で OK

エラーは出ません・・・ってチェックしてないからエラーに見えないだけだと思われる。
きっちり失敗しているはず。
権限/昇格とかまったく考慮されていないとか
x64 対応できていないあたりももったいない感じがするが・・・

こういう分野ってマネージの出番では無いっていうか。
俺なら他プロセス(特にアンマネージなプロセス)に対する操作はアンマネージで書くけど。
# 少なくとも初心者を自称する人がやるべきではない内容だと思う。

「なぜ」こんなことをしたいのか、その辺から始めると代替案も出てきそうな気がする

引用返信 編集キー/
■75051 / inTopicNo.4)  Re[3]: C# VirtualProtectについて
□投稿者/ From1 (1回)-(2015/02/23(Mon) 15:21:06)
ありがとうございました!
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -