1
感謝您的幫助。我可以從另一個程序的內存中獲取字符串嗎?
我已經知道如何找到數值的內存地址,並讀取\寫在RAM中。 (使用C#)。 我想要做的是對於任何程序中的任何文本都是一樣的。但我不知道這是否可能。
那麼舉個例子,我可以訪問打開的notepad.exe內存來提取其中寫入的String嗎? 現在我這樣做的,它返回垃圾:
Process process = Process.GetProcessesByName("notepad").FirstOrDefault();
String stringaddress = "00401110";
int address = int.Parse(stringaddress, NumberStyles.HexNumber);
int bytesRead;
byte[] value = MemoryAccess.ReadMemory(process, address, 2000000, out bytesRead);
byte[] buf = Encoding.Convert(Encoding.GetEncoding("iso-8859-1"),
Encoding.UTF8, value);
int count = buf.Length;
String tempString = Encoding.UTF8.GetString(buf, 0, count);
我終於要的是能夠找到特定的窗口程序,並複製它內部的所有文本。
的文本字符串的內存地址將是不同的每次啓動記事本時間(或其他應用程序)。除非每次運行應用程序時都可以獲得***正確的內存地址,否則這似乎不可行。 – Rohan
如果要從特定窗口(窗體)中獲取文本,可以使用WinAPI:EnumWindows查找窗口並使用GetWindowText獲取所需的文本。 –
@DmitryBychenko,我想他想從記事本中的文本框控件中獲取文本。 GetWindowText無法檢索另一個應用程序中的控件的文本。 – Rohan