|
分類:[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);
}
一部省略していますが ソースを組むとエラーは出ませんが反映していません。
属性保護も保護解除も試してみましたがどちらとも反映せずです。
もちろんアドレス先もハンドルもしっかり取得できています。
初心者なのでエラーがでないだけにどこが間違っているのかさっぱりわかりません。
良ければ教えていただけると幸いです。
|