问题描述
各位大大好,小弟最近剛好試到讀寫程序的記憶體,就是使用A程序去讀寫B程序,然後暫以踩地雷當作B程序我用了三個方法(1)引入可以寫入Assembly的DLL,然後寫入匯編(2)用了WriteProcessMemory,ReadProcessMomery(3)注入了非託管DLL在目標進程啟動CLR,再加載託管的DLL(C#編寫的,帶有form),然後在DLL的程序中直接用指針讀寫問題出在(3)讀取記憶體沒問題---------------------------------------------------------------int*vaule=(int*)Int32.Parse(textBox_ReadAddress.Text,System.Globalization.NumberStyles.HexNumber);textBox_Value.Text=(*vaule).ToString();---------------------------------------------------------------讀值沒問題↑但是我要寫入就會發生DLL的窗口直接跳掉,但是B程序(踩地雷)安然無恙,以下是程式碼,用for迴圈一次寫入一個byte---------------------------------------------------------------byte[]bytes=textBox_WritedValue.Text.Split().Select(s=>Convert.ToByte(s,16)).ToArray();for(inti=0;i<bytes.Length;i++){unsafe{//這邊把地址給到valuebyte*value=(byte*)(Int32.Parse(textBox_WriteAddress.Text,System.Globalization.NumberStyles.HexNumber)+i);//寫入值*value=bytes[i];}}---------------------------------------------------------------然後我也用嘗試用了Marshal.Copy---------------------------------------------------------------Marshal.Copy(bytes,0,(IntPtr)Int32.Parse(textBox_WriteAddress.Text,System.Globalization.NumberStyles.HexNumber),bytes.Length);---------------------------------------------------------------還是都會有一樣的問題,DLL窗口直接消失,不知道為什麼可以讀值,但是卻不能寫入,可以請教是哪邊出了錯嗎?謝謝拜託各位幫忙一下~
解决方案
本帖最后由 a870162000 于 2014-09-14 11:05:33 编辑