Внедрение DLL до того, как Windows выполнит целевые обратные вызовы TLS - PullRequest
0 голосов
/ 19 июня 2019

Есть приложение, которое использует обратные вызовы TLS для переназначения своей памяти, используя (NtCreateSection/NtUnmapViewOfSection/NtMapViewOfSection), используя флаг SEC_NO_CHANGE.

Есть ли способ перехватить NtCreateSection до того, как целевое приложение использует его для обратного вызова TLS?

Ответы [ 3 ]

0 голосов
/ 24 июня 2019

Microsoft создала и опубликовала проект "Detours", который занимается перехватом API. Вы можете посмотреть на это.

Detours Github link

x86-версия бесплатна, но не x64 (последний раз, когда я проверял).

0 голосов
/ 28 июня 2019

Вы можете использовать API Monitor , чтобы проверить, действительно ли это вызов функции, и если я вас правильно понимаю, вы хотите изменить его вызов. API Monitor позволяет изменять параметры на лету. Если достаточно просто «пропатчить» значение, когда приложение обращается к API, вы можете использовать x64dbg для создания постоянного бинарного патча для вашего приложения. Но для этого требуется, чтобы вы хотя бы знали или знакомились с базовым ассемблером x64 / x86.

0 голосов
/ 23 июня 2019

Я понятия не имею, чего именно вы пытаетесь достичь, но если вы пытаетесь выполнить установочный код до вызова функции main () (для настройки хуков), вы можете использовать конструктор для статического объекта .По сути, вы должны создать объект до запуска вашей основной программы.

// In a .cpp file (do not put in a header as that would create multiple static objects!)
class StaticIntitializer {
    StaticIntitializer(){
        std::cout << "This will run before your main function...\n";
        /* This is where you would setup all your hooks */
    }
};

static StaticInitializer staticInitializer;

Однако будьте осторожны, поскольку любой объект, созданный таким образом, может быть создан в любом порядке, в зависимости от компиляторов, порядка файлов и т. Д. Кроме того, некоторые вещи могутеще не инициализированы, и вы не сможете достичь того, что хотите настроить.

Это может быть хорошей отправной точкой, но, как я уже сказал, я не совсем уверен, чего вы пытаетесь достичьздесь, так что удачи, и я надеюсь, что это немного поможет.

...