Другое С/С++ Вопрос - Ответ

Gabriel__

Известный
Проверенный
411
182
А для memcpy и memset обязательно снимать защиту памяти ? (VirtualProtect)
 

Vasiliy77

Известный
22
1
Как нужно переделать, чтобы выводило в "Test command with params" не только цифры, а и буквы? Сейчас цифры только.
C++:
void cmd_findtext(char* szParams)
{
    addMessageToChat(0xFFFFFFFF, "Test command with params: "%s"", szParams);
}
void addMessageToChat(D3DCOLOR cColor, char *szMsg, ...)
{
    if (g_Chat == nullptr)
        return;
    void(__thiscall *AddToChatWindowBuffer) (const void *_this, int iType, char *szText, char *szPrefix, DWORD cColor, DWORD cPrefixColor) =
        (void(__thiscall *) (const void *, int, char *, char *, DWORD, DWORD)) (dwSAMPAddr + SAMP_FUNC_ADDTOCHATWND);
    if (szMsg == NULL)
        return;
    va_list ap;
    char tmp[512];
    memset(tmp, 0, 512);
    va_start(ap, szMsg);
    vsnprintf(tmp, sizeof(tmp) - 1, szMsg, ap);
    va_end(ap);
    return AddToChatWindowBuffer((void *) g_Chat, 8, tmp, NULL, cColor, 0x00);
}
 

DarkExorcist

Новичок
77
3
Как создать поток при подключении .dll, чтобы игру не крашнуло?
Код:
DWORD WINAPI tp (LPVOID);

DWORD APIENTRY DllMain (HMODULE hModule,  DWORD ul_reason_for_call, LPVOID IpReserved)
{
    switch(ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(NULL,NULL,tp,NULL,NULL,NULL);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
}
Таким способом не получается, но нашел только его :(
 

Woofing Giraffe

Активный
402
49
Как создать поток при подключении .dll, чтобы игру не крашнуло?
Код:
DWORD WINAPI tp (LPVOID);

DWORD APIENTRY DllMain (HMODULE hModule,  DWORD ul_reason_for_call, LPVOID IpReserved)
{
    switch(ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(NULL,NULL,tp,NULL,NULL,NULL);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
}
Таким способом не получается, но нашел только его :(
Не проще в main его создать?
 

SR_team

like pancake
BH Team
4,720
6,369
Как создать поток при подключении .dll, чтобы игру не крашнуло?
Код:
DWORD WINAPI tp (LPVOID);

DWORD APIENTRY DllMain (HMODULE hModule,  DWORD ul_reason_for_call, LPVOID IpReserved)
{
    switch(ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(NULL,NULL,tp,NULL,NULL,NULL);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
}
Таким способом не получается, но нашел только его :(
_beginthread
 

DarkExorcist

Новичок
77
3
Что делать, чтобы GetKeyState(); возвращала значение не равное 0, только когда нужная мне кнопка зажата? Просто условие продолжает работу до повторного нажатия Insert
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
getasynckeystate и цикл. Можно и булевую переменную создать и её в качестве проверке юзать.
 

Frixen

Известный
131
8
CLEO:
0AA2: 30@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 30@ + 457971 // int
0A8C: write_memory 1@ size 4 value 24216591 virtual_protect 1
0A8E: 2@ = 1@ + 4 // int
0A8C: write_memory 2@ size 2 value 0 virtual_protect 1
0A8E: 3@ = 30@ + 458004 // int
0A8C: write_memory 3@ size 4 value 22053903 virtual_protect 1
0A8E: 4@ = 3@ + 4 // int
0A8C: write_memory 4@ size 2 value 0 virtual_protect 1
0A8E: 5@ = 30@ + 458280 // int
0A8C: write_memory 5@ size 2 value 16500 virtual_protect 1
0A8E: 6@ = 30@ + 462648 // int
0A8C: write_memory 6@ size 2 value 24948 virtual_protect 1
0A8E: 7@ = 30@ + 462372 // int
0A8C: write_memory 7@ size 4 value 24218127 virtual_protect 1
0A8E: 8@ = 7@ + 4 // int
0A8C: write_memory 8@ size 2 value 0 virtual_protect 1
0AA3: free_library 30@
0AB2: ret 0
как это будет в C++
 

SR_team

like pancake
BH Team
4,720
6,369
CLEO:
0AA2: 30@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 30@ + 457971 // int
0A8C: write_memory 1@ size 4 value 24216591 virtual_protect 1
0A8E: 2@ = 1@ + 4 // int
0A8C: write_memory 2@ size 2 value 0 virtual_protect 1
0A8E: 3@ = 30@ + 458004 // int
0A8C: write_memory 3@ size 4 value 22053903 virtual_protect 1
0A8E: 4@ = 3@ + 4 // int
0A8C: write_memory 4@ size 2 value 0 virtual_protect 1
0A8E: 5@ = 30@ + 458280 // int
0A8C: write_memory 5@ size 2 value 16500 virtual_protect 1
0A8E: 6@ = 30@ + 462648 // int
0A8C: write_memory 6@ size 2 value 24948 virtual_protect 1
0A8E: 7@ = 30@ + 462372 // int
0A8C: write_memory 7@ size 4 value 24218127 virtual_protect 1
0A8E: 8@ = 7@ + 4 // int
0A8C: write_memory 8@ size 2 value 0 virtual_protect 1
0AA3: free_library 30@
0AB2: ret 0
как это будет в C++
да почти также, но если sf плагин пишешь, то лучше готовыми структурами воспользуйся