Đầu tiên các pro nghé mắt qua cái code sau:
Code:
public byte[] ReadProcessMemory(IntPtr MemoryAddress, uint bytesToRead, out int bytesReaded)
{
byte[] buffer = new byte[bytesToRead];
IntPtr ptrBytesReaded;
ProcessMemoryReaderApi.ReadProcessMemory(m_hProcess, MemoryAddress, buffer, bytesToRead, out ptrBytesReaded);
bytesReaded = (int)ptrBytesReaded;
return buffer;
}
Function này sẽ đọc từng byte một trong bộ nhớ rùi ghép từng byte đó thành một mảng, nhưng chẳng may đụng phải một byte mà bit đầu tiên của byte đó là 0, bit tiếp theo là 4 chẳng hạn. Thì byte đó sẽ có giá trị là 4.
Sẽ không thành vấn đề nếu ta chỉ cần đọc 1 byte. Ngược lại, khi đọc nhiều byte và ghép chúng lại với nhau thành 1 mảng thì rõ ràng là có chuyện lớn phải không các pro?
Ví dụ với 1 giá trị đúng ra phải là 0D69C004 chẳng hạn, sau khi đọc từng byte nó ghép thành 0D69C04, thiếu mất 1 con zero!
Câu hỏi của em là làm thế nào để tránh được sự khó chịu trên? Làm sao đọc đúng giá trị là 0D69C004
Em mới học C#, mong anh chị chỉ giúp