Можно создать дубликат:
How to get IntPtr from byte[] in C#Как преобразовать массив byte [] в IntPtr?
Я читаю строки из памяти с
byte[] array =
reader.ReadProcessMemory((IntPtr)address, (uint)255, out bytesReadSize);
, а затем я converthing этот массив в строку.
У меня возникла проблема теперь по адресу 003A53D4 в памяти программы есть указатель, который указывает на строку. Как я могу получить адрес строки? Спасибо :)
Вот что я пробовал:
IntPtr pointers_address = new IntPtr(module_base_address + 3822548);
byte[] pointer_arrays =
reader.ReadProcessMemory(pointers_address, (uint)16, out bytesReadSize2);
IntPtr pointer_for_string = new IntPtr();
Marshal.Copy(pointers_array, 0, pointer_for_string, 16);
Он говорит (о 4-й строке):
Значение не может быть пустым. Имя параметра: назначение
и когда я изменяю новый IntPtr() к новым IntPtr (1) это говорит
Попытка чтения или записи в защищенную память. Это часто является индикатором , что другая память повреждена.
Вот статья, вы можете смотреть на это поможет понять, как сделать то, что это вы хотели сделать также попытаться использовать ключевое слово небезопасный также http://blog.rednael.com/2008/08/29/MarshallingUsingNativeDLLsInNET.aspx – MethodMan