Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #undef UNICODE
- #include "fb.h" //c&p from uc-forum
- HANDLE g_hThread;
- bool g_bKeyState;
- void FUCKIT(DWORD mem1, DWORD mem2)
- {
- fb::ClientGameContext *pCtx = (fb::ClientGameContext*)(*(DWORD*)mem1);
- if (pCtx && pCtx->m_clientPlayerManager)
- {
- eastl_vector<fb::ClientPlayer*> *playerVector = &pCtx->m_clientPlayerManager->m_players;
- int maxPlayers = playerVector->size();
- for (int i = 0; i < maxPlayers; i++)
- {
- if (playerVector->at(i) && (playerVector->at(i)->m_soldier.m_data))
- {
- fb::ClientSoldierEntity *pSoldier = (fb::ClientSoldierEntity*)(*(DWORD*)playerVector->at(i)->m_soldier.m_data - 0x4);
- if (pSoldier)
- {
- if (pCtx->m_clientPlayerManager->m_localPlayer && pCtx->m_clientPlayerManager->m_localPlayer->m_soldier.m_data)
- {
- fb::ClientSoldierEntity *pMySoldier = (fb::ClientSoldierEntity*)(*(DWORD*)pCtx->m_clientPlayerManager->m_localPlayer->m_soldier.m_data - 0x4);
- if (pMySoldier && pMySoldier->getCurrentWeapon() && pCtx->m_clientPlayerManager->m_localPlayer->m_teamId != playerVector->at(i)->m_teamId)
- {
- fb::ClientWeapon *weapon = pMySoldier->getCurrentWeapon()->m_weapon;
- if (weapon)
- {
- DWORD dwCall = mem2;
- for (int i = 0; i < 7; i++)
- {
- __asm
- {
- push ecx;
- mov ecx, weapon;
- push pSoldier;
- call dwCall;
- pop ecx;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- namespace RE
- {
- bool bDataCompare(const BYTE *pData, const BYTE *bMask, const TCHAR *szMask)
- {
- for(; *szMask; ++szMask, ++pData, ++bMask)
- if (*szMask == 'x' && *pData != *bMask)
- return false;
- return (*szMask) == NULL;
- }
- DWORD dwFindPattern(DWORD dwAddress, DWORD dwLen, BYTE *bMask, TCHAR *szMask)
- {
- for (DWORD i = 0; i < dwLen; i++)
- if (bDataCompare((BYTE*)(dwAddress + i), bMask, szMask))
- return (DWORD)(dwAddress + i);
- return NULL;
- }
- }
- DWORD CALLBACK mainThread(LPVOID param)
- {
- HMODULE hInst_BF3 = GetModuleHandleA("bf3.exe");
- DWORD memCtx = *(DWORD*)(RE::dwFindPattern((DWORD)hInst_BF3, 0x01aa0000, (BYTE*)"\x83\xc7\x04\x3b\xfb\x75\xf0\x8b\x0d", "xxxxxxxxx") + 0x09);
- DWORD memFuck = RE::dwFindPattern((DWORD)hInst_BF3, 0x01aa0000, (BYTE*)"\xC7\x44\x24\x00\x00\x00\x00\x00\x8B\xCE\xE8\x00\x00\x00\x00\x8b\x7d", "xxx?xxxxxxx????xx") - 0x2b;
- while (true)
- {
- Sleep(25);
- if (GetAsyncKeyState(VK_NUMPAD5) < 0)
- {
- if (!g_bKeyState)
- {
- g_bKeyState = true;
- FUCKIT(memCtx, memFuck);
- }
- } else {
- if (g_bKeyState)
- g_bKeyState = false;
- }
- }
- return 0;
- }
- BOOL WINAPI DllMain(_In_ HANDLE _HDllHandle, _In_ DWORD _Reason, _In_opt_ LPVOID _Reserved)
- {
- switch (_Reason)
- {
- case DLL_PROCESS_ATTACH:
- g_hThread = CreateThread(0, 0, mainThread, 0, 0, 0);
- break;
- case DLL_PROCESS_DETACH:
- TerminateThread(g_hThread, 0);
- break;
- }
- return TRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment