Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Помогите с терминальным режимом

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

filchaleks

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Программа проверяет запуск в терминальном режиме и блокирует выполнение функций если таковой найден(RDP) я так думаю через GetSystemMetrics(sm_RemoteSession). как можно скинуть этот параметр или как можно найти в длл это обращение. С крякингом незнаком. Прошу помощи.

Всего записей: 1 | Зарегистр. 02-12-2010 | Отправлено: 13:00 02-05-2015
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это делается при помощи hooking'а.
Подыскивается длл, подгружаемая процессом (хорошие кандидаты msimg32.dll и wsock32.dll) и в нее добавляется код:

#include <windows.h>
__declspec(dllimport) BOOL __stdcall GetSystemMetrics(int);

////////////////////////////////////////////////////////////////////////////////////
__declspec(naked) BOOL __stdcall myGetSystemMetrics(int idx)
{
    __asm {
        cmp dword ptr[esp+4], SM_REMOTESESSION
        jnz L1
    
        xor eax, eax
        ret 4
L1:
        push 00h
        push 11223344h
        mov eax, GetSystemMetrics
        add eax, 7
        jmp eax
    }
}

//original msimg32.dll routines are here
//

////////////////////////////////////////////////////////////////////////////////////
int __stdcall DllMain(HMODULE h, int reason, void* x)
{
    int oldp;
    char* ptr;

    if(DLL_PROCESS_ATTACH == reason)
    {
        DisableThreadLibraryCalls(h);
        ptr = (char*)myGetSystemMetrics + 16;
        VirtualProtect(ptr, 8, PAGE_EXECUTE_READWRITE, &oldp);
        ptr[0] = *(char*)((char*)GetSystemMetrics + 1);
        *(int*)(ptr + 2) = *(int*)((char*)GetSystemMetrics + 3);
        VirtualProtect(ptr, 8, oldp, &oldp);

        ptr = (char*)GetSystemMetrics;
        VirtualProtect(ptr, 8, PAGE_EXECUTE_READWRITE, &oldp);
        ptr[0] = 0xe9;
        *(int*)(ptr + 1) = (char*)myGetSystemMetrics - ptr - 5;
        VirtualProtect(ptr, 8, oldp, &oldp);
    }
    return 1;
}


Модифицированная длл кладётся рядом с исполняемым файлом процесса и загружаятся при старте проги. DllMain() патчит GetSystemMetrics() так, чтобы все обращения к ней перенаправляются в myGetSystemMetrics(), где в случае SM_REMOTESESSION сразу возвращается 0.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 22:23 02-05-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Помогите с терминальным режимом


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru