Вопрос Проблемы с g++

Начинающий
Статус
Оффлайн
Регистрация
10 Апр 2022
Сообщения
158
Реакции[?]
14
Поинты[?]
3K
привет, надо собирать длл через g++ но после инжекта бесконечно вызывается функция. что делать ?


C++:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <windows.h>
#include <iostream>
#include <urlmon.h>
#include <tchar.h>

#pragma comment (lib, "urlmon.lib")


BOOL WINAPI test(HMODULE hModule)
{
    printf("123\n");

   return TRUE;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    AllocConsole();
    freopen("CONOUT$", "w", stdout);
    
    CreateThread(0, 0, (LPTHREAD_START_ROUTINE)test, 0, 0, 0);
    return TRUE;
}
g++ -m32 -shared -o example.dll main.cpp -lurlmon
 
Начинающий
Статус
Оффлайн
Регистрация
23 Фев 2021
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Почитай о том, как вызывается точка входа. В случае, если тебе нужно вызывать функцию при присоединении к процессу, то сделай проверку ul_reason_for_call на DLL_PROCESS_ATTACH
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
107
Поинты[?]
56K
Почитай о том, как вызывается точка входа. В случае, если тебе нужно вызывать функцию при присоединении к процессу, то сделай проверку ul_reason_for_call на DLL_PROCESS_ATTACH
Помимо всего прочего никакого кода кроме создания треда в DllMain не должно быть, оно там не будет работать
 
ЧВК EB_LAN
Эксперт
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
1,545
Реакции[?]
517
Поинты[?]
192K
Я уже давно заметил
помоему у тебя после вызывания твоей функи все время она как раз таки остается рабочей потому что она у тебя возвращает 24/7 тру, тебе бы сделать какую либо проверочку чтоб потом после срабатывания твоей крутой функции оно вернуло фолсе и перестало работать
 
ппоршень
Пользователь
Статус
Оффлайн
Регистрация
15 Фев 2020
Сообщения
280
Реакции[?]
46
Поинты[?]
32K
привет, надо собирать длл через g++ но после инжекта бесконечно вызывается функция. что делать ?


C++:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <windows.h>
#include <iostream>
#include <urlmon.h>
#include <tchar.h>

#pragma comment (lib, "urlmon.lib")


BOOL WINAPI test(HMODULE hModule)
{
    printf("123\n");

   return TRUE;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    AllocConsole();
    freopen("CONOUT$", "w", stdout);
   
    CreateThread(0, 0, (LPTHREAD_START_ROUTINE)test, 0, 0, 0);
    return TRUE;
}
g++ -m32 -shared -o example.dll main.cpp -lurlmon
C++:
INT WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
    if( dwReason==DLL_PROCESS_ATTACH )
    {
        AllocConsole( );
        freopen_s( reinterpret_cast< _iobuf ** >( __acrt_iob_func( 1 ) ), "CONOUT$", "w", __acrt_iob_func( 1 ) );
        freopen_s( reinterpret_cast< _iobuf ** >( __acrt_iob_func( 0 ) ), "CONIN$", "r", __acrt_iob_func( 0 ) );

        std::thread( [ hdll ]{ test( hdll ); } ).detach( );
    }
    return TRUE;
}
 
Сверху Снизу