Trouver la bonne robe de base

J’ai réalisé que ma version baseaddress obtenir la bonne baseaddress était fausse

 Process[] iexp = Process.GetProcessesByName("Solitaire"); if (iexp.Length == 0) { //EXIT } Process internet = iexp[0]; uint baseAddress = (uint)internet.MainModule.BaseAddress.ToInt64(); 

mais la baseaddress est fausse

J’ai aussi regardé dans MSDN mais ce code est très étrange et me donne une boucle infinie.

J’espère que vous pourrez m’aider car je ne trouve aucun exemple.

MODIFIER :

  ReadProcessMemory(readHandle, ((IntPtr)(((baseAddress) + 0x14) + 0x50)), bytes, (UIntPtr)4, ref rw); 

Ici, j’ai créé une image de mon bureau. Je suis vraiment confus, peut-être que quelqu’un sait où j’ai commis une erreur. http://i.stack.imgur.com/50lva.jpg

Si vous voulez ce que je pense que vous voulez, je ne peux que penser à quelques façons de le faire, aucune d’entre elles n’est intégrée à .NET, bien que …

  1. Utilisez P / Invoke pour renvoyer l’adresse de base de l’exécutable de démarrage.

     [DllImport("kernel32.dll")] public static extern IntPtr GetModuleHandle(ssortingng lpModuleName); 
  2. Renvoie l’adresse de base de l’exécutable contenant MyClass.

     Marshal.GetHINSTANCE(typeof(MyClass).Module) 
  3. Renvoie une poignée au module actuel en utilisant:

     Marshal.GetHINSTANCE(this.GetType().Module)