|
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами:
4254200
Репутация:
98
|
|
Здравствуйте, опять я со своими цыганскими фокусами по трансформации internal->external, на сей раз Nametag. Подскажите, что неправильно, я так и не нашёл проблему, а работать оно не хочет.
P.S.
1. Интернал точно правильный.
2. Получение адреса samp.dll точно работает
3. Виртал протект делал, не помогает.
Internal:
Код:
Idefine SAMP_INFO 0x21A0F8
#define SAMP_SETTINGS 0x3D5
DWORD* pInfo;
BYTE* ThroughWalls;
BYTE* ShowNameTags;
float* fDistance;
DWORD SampDLL = (DWORD)GetModuleHandleA("samp.dll");
if (SampDLL) {
pInfo = (DWORD*)(SampDLL + SAMP_INFO);
while (*pInfo == 0) Sleep(1000);
while (*(DWORD*)(*pInfo + SAMP_SETTINGS) == 0) Sleep(1000);
ShowNameTags = (BYTE*)(*(DWORD*)(*pInfo + SAMP_SETTINGS) + 0x38);
ThroughWalls = (BYTE*)(*(DWORD*)(*pInfo + SAMP_SETTINGS) + 0x2F);
fDistance = (float*)((DWORD*)(*(DWORD*)(*pInfo + SAMP_SETTINGS) + 0x27));
for (;;)
{
do {
Sleep(100);
} while (!KeyPressed(VK_MENU) || !KeyPressed(0x32));
do {
Sleep(50);
} while (KeyPressed(0x32));
gta_showText("okoboga v2 ~g~Activated", 1000, NULL, NULL);
*ShowNameTags = 1;
*ThroughWalls = 0;
*fDistance = 999.0f;
do {
Sleep(100);
} while (!KeyPressed(VK_MENU) || !KeyPressed(0x32));
do {
Sleep(50);
} while (KeyPressed(0x32));
gta_showText("okoboga v2 ~r~Deactivated", 1000, NULL, NULL);
*ShowNameTags = 1;
*ThroughWalls = 1;
*fDistance = 0.0f;
}
}
External (моё):
Код:
#define SAMP_INFO 0x21A0F8
#define SAMP_SETTINGS 0x3D5
if (checkBox5->Checked)
{
DWORD pInfo;
BYTE ShowNameTags = 1;
BYTE ThroughWalls = 0;
float fDistance = 999.0f;
ReadProcessMemory(hProcess, (LPVOID)(moduleBase + SAMP_INFO), &pInfo, sizeof(pInfo), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x38), &ShowNameTags, sizeof(ShowNameTags), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x2F), &ThroughWalls, sizeof(ThroughWalls), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x27), &fDistance, sizeof(fDistance), nullptr);
}
else
{
DWORD pInfo;
BYTE ShowNameTags = 1;
BYTE ThroughWalls = 1;
float fDistance = 0.0f;
ReadProcessMemory(hProcess, (LPVOID)(moduleBase + SAMP_INFO), &pInfo, sizeof(pInfo), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x38), &ShowNameTags, sizeof(ShowNameTags), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x2F), &ThroughWalls, sizeof(ThroughWalls), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x27), &fDistance, sizeof(fDistance), nullptr);
|