Я пишу DLL, которая вводится в игру, и возвращаю мой localplayer и listArrayplayer на сервер. Хорошо работает нормально
Код проекта DLL:
Код C ++:
__int64 RerturnLocalPlayer() {
__int64 player = GetLocalPlayer_EX();// __Int64 GetLocalPlayer_EX() is a function that return type __int64 value
return player;
}
в main.h:
extern "C" {
__declspec(dllexport) __int64 RerturnLocalPlayer();
}
функция MT
extern "C" {
__declspec(dllexport) __int64 GetLocalPlayer_EX()
{
DWORD64 pClientGameContext = *(DWORD64*)OFFSET_CLIENTGAMECONTEXT;
if (!(pClientGameContext)) return 0;
DWORD64 pPlayerManager = *(DWORD64*)(pClientGameContext + 0x68);
if (!(pPlayerManager)) return 0;
DWORD64 pObfuscationMgr = *(DWORD64*)OFFSET_ObfuscationMgr;
if (!(pObfuscationMgr)) return 0;
DWORD64 LocalPlayerListXorValue = *(DWORD64*)((DWORD64)pPlayerManager + 0xF0);
DWORD64 LocalPlayerListKey = LocalPlayerListXorValue ^ *(DWORD64 *)(pObfuscationMgr + 0x70);
hashtable<DWORD64>* table = (hashtable<DWORD64>*)(pObfuscationMgr + 8);
hashtable_iterator<DWORD64> iterator = { 0 };
hashtable_find(table, &iterator, LocalPlayerListKey);
if (iterator.mpNode == table->mpBucketArray[table->mnBucketCount])
return 0;
DWORD64 EncryptedPlayerMgr = (DWORD64)iterator.mpNode->mValue.second;
if (!(EncryptedPlayerMgr)) return 0;
DWORD MaxPlayerCount = *(DWORD *)(EncryptedPlayerMgr + 0x18);
if (MaxPlayerCount != 1) return 0;
return EncryptedPlayerMgr__GetPlayer(EncryptedPlayerMgr, 0);
}
}
C # код:
[System.Runtime.InteropServices.DllImportAttribute("BFClient1.dll", EntryPoint = "RerturnLocalPlayer",
CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
public static extern Int64 RerturnLocalPlayer();
Int64 localp = NativeMemory.Read<Int64> (RerturnLocalPlayer());
Console.WriteLine("LocalPlayer " + localp.ToString("X"));
проблема в том, что когда я запускаю свое приложение на c #, моя консоль открывается и через 3 секунды закрывается, а иногда и выдает ошибку: ** Попытка чтения или записи в защищенную память. Обычно это указывает на повреждение другой памяти.
Может кто-нибудь попытаться помочь мне?