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

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
в общем, я гружу gta_sa.idb, потом запускаю самп, выбираю тип дебаггера(WinDbg, LocalWin) Debuger - тестил оба.
дальше Debuger-Attach to process, выбираю gta_sa.exe.
все грузится. в списке модулей выбираю самп, перехожу по адресу - адреса есть, но байты будто пустые. ни один сампский хук не видит.
а еще в модуле есть загрузка samp.pdb файла, это нужно заливать? хотя у меня его нет
что я делаю не так?
Попробуй x64dbg (32-битную версию) у меня под ним нормально дебажит
 
  • Нравится
Реакции: leak.

leak.

Известный
37
4
Попробуй x64dbg (32-битную версию) у меня под ним нормально дебажит
поставил. после аттача показывает примерно 32766 строк gta_sa кода. с самп.длл тоже самое. почему половина кода не видит?:D
upload_2018-11-8_13-36-27.png

делаю так: Файл-Присоединиться-F9. перехожу на "Отладочные символы" - выбираю gta_sa.exe
 

Вложения

  • upload_2018-11-8_13-36-6.png
    upload_2018-11-8_13-36-6.png
    16 KB · Просмотры: 238

2Shae

Известный
149
8
C++:
((void(__thiscall *) (void *_this, char *message)) (g_dwSAMP_Addr + SAMP_FUNC_SAY)) (g_Players->pLocalPlayer, msg);
полная функция в собейте - BlastHackNet/mod_s0beit_sa(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.cpp#L712)
Код:
((void(__thiscall *) (void *_this, char *message)) (g_dwSAMP_Addr + SAMP_FUNC_SAY)) (g_Players->pLocalPlayer, msg);
g_Players->pLocalPlayer то откуда взять? Я перерыл в поиске соба, не нашёл как заполняет pLocalPlayer.
 

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
так на скрине показывает до 0x407FFF строки, т,е это начало кода. в гта их больше
Я надеюсь ты не сравниваешь то что тебе показывает в ида? В запущеном виде часть памяти будет распределятся динамически, остальная часть кода разбросана по дллкам.
И советую дебагер всегда от админ прав запускать.
 
  • Нравится
Реакции: leak.

CleanLegend

Известный
Всефорумный модератор
480
936

leak.

Известный
37
4
Я надеюсь ты не сравниваешь то что тебе показывает в ида? В запущеном виде часть памяти будет распределятся динамически, остальная часть кода разбросана по дллкам.
И советую дебагер всегда от админ прав запускать.

закинул в папку дебагера плагины с гтихаба, теперь все адреса находят. большое спасибо)
 
  • Нравится
Реакции: ЯedЯuM

Stiopko

Известный
Проверенный
307
218
как полностью выгрузить плагин с помощью pfree

Есть дочерний поток. После того как он закончил свою работу. Я хочу его выгрузить плагин. Но загрузить не могу потому что плагин еще использует gta_sa

C++:
void ThreadEmulPressAlt()
{
    static BitStream bsOnfootSync;
    static stOnFootData ofSync;

    while (state) {
        if (!IsDriving(SF->getSAMP()->getPlayers()->sLocalPlayerID)) {
            std::this_thread::sleep_for(std::chrono::milliseconds(curTimeOut));
            memset(&ofSync, 0, sizeof(stOnFootData));
            ofSync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;

            ofSync.stSampKeys.keys_unknown__walkSlow = 1;

            bsOnfootSync.ResetWritePointer();
            bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
            bsOnfootSync.Write((PCHAR)&ofSync, sizeof(stOnFootData));

            SF->getRakNet()->SendPacket(&bsOnfootSync);

            ofSync.stSampKeys.keys_unknown__walkSlow = 0;
            bsOnfootSync.ResetWritePointer();
            bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
            bsOnfootSync.Write((PCHAR)&ofSync, sizeof(stOnFootData));

            SF->getRakNet()->SendPacket(&bsOnfootSync);

            g_mutex.lock();
            paramsCurSession.speeds.speedSend++;
            g_mutex.unlock();
        }
    }
}

Вызов

C++:
thd = new std::thread(ThreadEmulPressAlt);
 
Последнее редактирование:

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как полностью выгрузить плагин с помощью pfree

Есть дочерний поток. После того как он закончил свою работу. Я хочу его выгрузить плагин. Но загрузить не могу потому что плагин еще использует gta_sa

C++:
void ThreadEmulPressAlt()
{
    static BitStream bsOnfootSync;
    static stOnFootData ofSync;

    while (state) {
        if (!IsDriving(SF->getSAMP()->getPlayers()->sLocalPlayerID)) {
            std::this_thread::sleep_for(std::chrono::milliseconds(curTimeOut));
            memset(&ofSync, 0, sizeof(stOnFootData));
            ofSync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;

            ofSync.stSampKeys.keys_unknown__walkSlow = 1;

            bsOnfootSync.ResetWritePointer();
            bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
            bsOnfootSync.Write((PCHAR)&ofSync, sizeof(stOnFootData));

            SF->getRakNet()->SendPacket(&bsOnfootSync);

            ofSync.stSampKeys.keys_unknown__walkSlow = 0;
            bsOnfootSync.ResetWritePointer();
            bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
            bsOnfootSync.Write((PCHAR)&ofSync, sizeof(stOnFootData));

            SF->getRakNet()->SendPacket(&bsOnfootSync);

            g_mutex.lock();
            paramsCurSession.speeds.speedSend++;
            g_mutex.unlock();
        }
    }
}

Вызов

C++:
thd = new std::thread(ThreadEmulPressAlt);
ExitThread в потоке юзай
 

Stiopko

Известный
Проверенный
307
218
ExitThread в потоке юзай

не работает

C++:
void ThreadEmulPressAlt()
{
    static BitStream bsOnfootSync;
    static stOnFootData ofSync;

    while (paramsCurSession.state) {
        if (!IsDriving(SF->getSAMP()->getPlayers()->sLocalPlayerID)) {
            std::this_thread::sleep_for(std::chrono::milliseconds(paramsCurSession.curTimeOut));
            memset(&ofSync, 0, sizeof(stOnFootData));
            ofSync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;

            ofSync.stSampKeys.keys_unknown__walkSlow = 1;

            bsOnfootSync.ResetWritePointer();
            bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
            bsOnfootSync.Write((PCHAR)&ofSync, sizeof(stOnFootData));

            SF->getRakNet()->SendPacket(&bsOnfootSync);

            ofSync.stSampKeys.keys_unknown__walkSlow = 0;
            bsOnfootSync.ResetWritePointer();
            bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
            bsOnfootSync.Write((PCHAR)&ofSync, sizeof(stOnFootData));

            SF->getRakNet()->SendPacket(&bsOnfootSync);

            g_mutex.lock();
            paramsCurSession.speeds.speedSend++;
            g_mutex.unlock();
        }
    }
    ExitThread(0);
}
 
Последнее редактирование:

Revalto

Известный
532
225
Gradient function:

Код:
void RenderWindowBackground(int x, int y, int size_x, int size_y, int alpha)
    {
        D3DCOLOR first_color = D3DCOLOR_ARGB(ini.color.bgnd_first.alpha, ini.color.bgnd_first.red, ini.color.bgnd_first.green, ini.color.bgnd_first.blue);
        D3DCOLOR second_color = D3DCOLOR_ARGB(ini.color.bgnd_second.alpha, ini.color.bgnd_second.red, ini.color.bgnd_second.green, ini.color.bgnd_second.blue);
        if (alpha) {
            first_color = D3DCOLOR_ARGB(alpha, ini.color.bgnd_first.red, ini.color.bgnd_first.green, ini.color.bgnd_first.blue);
            second_color = D3DCOLOR_ARGB(alpha, ini.color.bgnd_second.red, ini.color.bgnd_second.green, ini.color.bgnd_second.blue);
        }
        pD3DHook->pRender->D3DGradient(x, y, size_x, size_y, first_color, second_color);
    }
Use:
Код:
ImGui::RenderWindowBackground(ImGui::GetWindowPos().x, ImGui::GetWindowPos().y, ImGui::GetWindowSize().x, ImGui::GetWindowSize().y);
 
  • Нравится
Реакции: _=Gigant=_

JakeBat

Известный
12
0
Господа, вылетает иногда GTA при Shift+0 , я так понял нужно дополнительное обнуление каких-либо данных, кто-то же все-таки сталкивался с данной проблемой, Как поправить?
 

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Господа, вылетает иногда GTA при Shift+0 , я так понял нужно дополнительное обнуление каких-либо данных, кто-то же все-таки сталкивался с данной проблемой, Как поправить?
Для начала дать нам свой говнокод на анализ