Дата: Четверг, 12.05.2016, 00:35 | Сообщение # 1
|
Две скрытые функции SA-MP
Вычисляет контрольную сумму для массива байтов в указанный адрес в gta_sa.exe памяти, поэтому каждый чит можно обнаружить: Cleos, s0beit и т.д. Говоря о RakNet слоя, при подключении к серверу. которая призывает SendClientCheck, он посылает RPC (содержит адрес) действий для клиента и клиент также отвечает с RPC (содержит контрольную сумму).
Функция:
Код native SendClientCheck(playerid, actionid, memaddr, memOffset, bytesCount); Колбэк:
Код forward OnClientCheckResponse(playerid, actionid, memaddr, retndata); Пример (Работает или нет не знаю):
Код #include <a_samp>
#define NULL 0
#define function%0(%1) forward%0(%1); public%0(%1)
native SendClientCheck(playerid, actionid, memaddr, memOffset, bytesCount);
main() {
new playerid;
CallLocalFunction("OnPlayerConnect", "d", playerid);
return false;
}
stock PlayerName(playerid) {
new Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, sizeof(Name));
return Name;
}
public OnPlayerConnect(playerid) {
printf("%s подключенный к серверу", PlayerName(playerid));
new actionid = 0x5, memaddr = 0x5E8606, retndata = 4;
SendClientCheck(playerid, actionid, memaddr, NULL, retndata);
printf("Проверка клиента %s:\n%d\n%d\n%d\n%d\n%d", PlayerName(playerid), playerid, actionid, memaddr, NULL, retndata);
switch(retndata) {case 10: {
printf("Игрок %s вероятно имеет собейт или d3d9.dll файл в директории GTA San Andreas", PlayerName(playerid));
}}
return true;
}
function OnClientCheckResponse(playerid, actionid, memaddr, retndata) {
switch(retndata) {
case 0xA: printf("Использует читы");
}
return true || false;
} Ещё нашёл вот это, не знаю пробуйте и гуглите:
Код #include <a_samp>
forward OnClientCheckResponse(playerid, actionid, memaddr, retndata); native SendClientCheck(playerid, actionid, memaddr, memOffset, bytesCount);
enum(<<= 1) { NULL = 0, SOBEIT = 0x5E8606 };
public OnPlayerConnect(playerid) { new actionid = 0x5, memaddr = SOBEIT, retndata = 0x4; SendClientCheck(playerid, actionid, memaddr, NULL, retndata); return 1; }
public OnClientCheckResponse(playerid, actionid, memaddr, retndata) { switch(retndata) { case 0xA0: printf("Player has clear GTA."); default: { printf("Player has some files installed."); } } return 1; }
|
| |