private static string ReadPtrInfo(IntPtr value, IRemoteMemoryReader process) { var getTypeFnPtr = process.ReadRemoteIntPtr(value); if (getTypeFnPtr.MayBeValid()) { #if RECLASSNET64 var offset = process.ReadRemoteInt32(getTypeFnPtr + 3); var typeInfoPtr = getTypeFnPtr + offset + 7; #else var typeInfoPtr = process.ReadRemoteIntPtr(getTypeFnPtr + 1); #endif if (typeInfoPtr.MayBeValid()) { var typeInfoDataPtr = process.ReadRemoteIntPtr(typeInfoPtr); if (typeInfoDataPtr.MayBeValid()) { var namePtr = process.ReadRemoteIntPtr(typeInfoDataPtr); if (namePtr.MayBeValid()) { var info = process.ReadRemoteStringUntilFirstNullCharacter(namePtr, Encoding.UTF8, 64); if (info.Length > 0 && info[0].IsPrintable()) { return(info); } } } } } return(null); }
public static IntPtr ReadRemoteIntPtr(this IRemoteMemoryReader reader, IntPtr address) { #if RECLASSNET64 return((IntPtr)reader.ReadRemoteInt64(address)); #else return((IntPtr)reader.ReadRemoteInt32(address)); #endif }