diff --git a/LoadBinaryPluginExt.cs b/LoadBinaryPluginExt.cs index d791260..acc2407 100644 --- a/LoadBinaryPluginExt.cs +++ b/LoadBinaryPluginExt.cs @@ -153,7 +153,18 @@ public bool ReadRemoteMemory(IntPtr process, IntPtr address, ref byte[] buffer, { try { - using (var stream = info.File.CreateViewStream(address.ToInt64(), size)) + /* + * This ensures that addresses larger than 0x7FFF_FFFF are not negative after calling + * ToInt64 by removing low side from long address from IntPtr (which seems to be casted + * from int to long non-bitwise). Same problem applies to addresses that are larger than + * 0x7FFF_FFFF_FFFF_FFFF, however CreateViewStream only accepts long parameter. + */ + long addressInt64 = address.ToInt64(); + if (addressInt64 < 0) + { + addressInt64 &= 0xFFFF_FFFF; + } + using (var stream = info.File.CreateViewStream(addressInt64, size)) { stream.Read(buffer, 0, size);
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: