✊Rot Front✊
-
Автор темы
- #1
Всем привет.
Помимо обычным
Объяснение:
Многие anti-anti-debug tool's вызывают оригинальную функцию и потом с ней что-то делают.
Вот пример кода TitanHide с ProcessDebugPort:
Однако, есть маленький промежуток времени, благодаря которому мы может просто узнать реальный результат функции и мы злоупотребляем этим!
Единственное требование и недостаток :создать поток/потоки, постоянно вызывать функцию и смотреть был ли изменён наш входной буфер на интересующий нас результат.
Пример обнаружение TitanHide(DebugPort & HideThreadHideFromDebugger):
Помимо обычным
Пожалуйста, авторизуйтесь для просмотра ссылки.
для обхода anti-anti-debug tool можно просто использовать состояние гонки, чтобы просто обойти их!Объяснение:
Многие anti-anti-debug tool's вызывают оригинальную функцию и потом с ней что-то делают.
Вот пример кода TitanHide с ProcessDebugPort:
C++:
static NTSTATUS NTAPI HookNtQueryInformationProcess(
IN HANDLE ProcessHandle,
IN PROCESSINFOCLASS ProcessInformationClass,
OUT PVOID ProcessInformation,
IN ULONG ProcessInformationLength,
OUT PULONG ReturnLength)
{
NTSTATUS ret = Undocumented::NtQueryInformationProcess(ProcessHandle, ProcessInformationClass, ProcessInformation, ProcessInformationLength, ReturnLength);
{
if(NT_SUCCESS(ret) &&
ProcessInformation &&
ProcessInformationClass != ProcessBasicInformation) //prevent stack overflow
{
else if(ProcessInformationClass == ProcessDebugPort)
{
if(Hider::IsHidden(pid, HideProcessDebugPort))
{
Log("[TITANHIDE] ProcessDebugPort by %d\r\n", pid);
__try
{
BACKUP_RETURNLENGTH();
*(ULONG_PTR*)ProcessInformation = 0;
RESTORE_RETURNLENGTH();
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
ret = GetExceptionCode();
}
}
}
}
}
return ret;
}
Единственное требование и недостаток :создать поток/потоки, постоянно вызывать функцию и смотреть был ли изменён наш входной буфер на интересующий нас результат.
Пример обнаружение TitanHide(DebugPort & HideThreadHideFromDebugger):
Пожалуйста, авторизуйтесь для просмотра ссылки.