Je suis actuellement en train de jouer avec la mémoire dans certains jeux que je joue pour voir ce que je suis capable de faire, j'ai une classe d'édition de mémoire modifiée pour satisfaire mes besoins mais je ne peux pas éditer ou lire booléen valeurs qui me cause problème. La classe m'aide à modifier les valeurs d'un processus externe à l'aide d'un crochet.C# Édition de mémoire Booléens
écriture à une valeur bool est ce que je veux faire plus et ce que j'ai essayé, mais TBH je ne sais pas quel est le problème avec elle
public bool WriteBool(int Address, bool Value)
{
byte[] bArray = BitConverter.GetBytes(Value);
bool flag = Process_MemoryReaderWriter.WriteProcessMemory((IntPtr)this.Handle, (IntPtr)Address, bArray, 2, 0);
return flag;
}
Je dois aussi lire quelques valeurs booléennes dans c'est ce que j'ai essayé;
public bool ReadBool(int Address)
{
IntPtr intPtr = IntPtr.Zero;
byte[] bArray = new byte[4];
IntPtr intPtr1 = intPtr;
Process_MemoryReaderWriter.ReadProcessMemory((IntPtr)this.Handle, (IntPtr)Address, bArray, 2, out intPtr1);
int rBInt = BitConverter.ToInt32(bArray, 0);
int num = rBInt;
bool boolValue = num != 0;
return boolValue;
}
J'ai déterminé que les booléens sont la question que tout semble fonctionner très bien où cela est la dernière étape où le programme semble échouer. Comme vous pouvez probablement le dire je ne sais pas vraiment ce que je fais avec cela (preuve que cela ne fonctionne pas), mais toute aide serait utile, en gardant à l'esprit si possible s'il vous plaît essayer de garder les réponses de manière semi-simple.
Je crois avoir fourni tout mais si vous avez besoin de plus d'informations s'il vous plaît demander :)
Comment structurer une valeur "booléenne" en mémoire dépend de la plate-forme et/ou du langage de programmation utilisé. Habituellement, ils sont stockés sous la forme d'entiers 0 ou 1, mais ils peuvent différer en taille, et peuvent avoir une taille de 1, 2 ou 4 octets (voir même 8). Assurez-vous que vous obtenez la bonne taille. –
'BitConverter' est une classe d'aide pour la sérialisation, pas une méthode magique qui vous donne les octets que votre cible veut. "Bool" n'est pas un type bien défini, vous devez savoir comment les valeurs vraies et fausses sont représentées dans le jeu particulier (ce qui dépend du compilateur, de la plate-forme, des hacks de "bas niveau" ...). 'BitConverter.GetBytes (bool)' vous donne un seul octet qui est soit zéro ou un, ce qui sera à peu près * jamais * ce que vous voulez. – Luaan