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

2Shae

Известный
149
8
Как отправить сообщение через C++? (без собейта, а то немогу разобраться в нём)
 
Последнее редактирование:

CleanLegend

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

Adder

Известный
22
0
Написал функцию, которая обновляет определённые строки чата после ввода команды.
Функция работает с помощью SF->getSAMP()->getChat()->chatEntry.
Но чат не обновляет, пробовал обновить с помощью Set.iMessagesReceived = 1;
В этом случае, она обновляется, но только после того как в чат приходит ещё одна строка.
В этом случае Set.iMessagesReceived = 0; она обновляется сразу, но на время происходит не плохая просадка ФПС.
Может подскажете, как ещё можно обновлять чат? Или какой-нибудь вариант без просадки ФПС
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Может подскажете, как ещё можно обновлять чат? Или какой-нибудь вариант без просадки ФПС
Можно сэмулировать тройное нажатие F7.
Можно попробовать вызвать функцию (0x5D7B0), что вызывает и F7.
Функция является _thiscall'ом, в аргументы передать ChatInfo (0x21A0E4).
Адреса указаны для SAMP 0.3.7 R1.
 
  • Нравится
Реакции: Adder

leak.

Известный
37
4
всем привет. подскажите, пожалуйста, каким образом можно дебажить самп.длл вместе с игрой через Ida?

пробовал Attach to process - gta_sa.exe (запущенный) , видит асм код гташки, а сампа не может

Applaction: E:\gta_samp_037\gta_sa.exe
Input file: E:\gta_samp_037\samp.dll
Directory: E:\gta_samp_037

и потом запускать StartProcess, не получилось
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
всем привет. подскажите, пожалуйста, каким образом можно дебажить самп.длл вместе с игрой через Ida?

пробовал Attach to process - gta_sa.exe (запущенный) , видит асм код гташки, а сампа не может

Applaction: E:\gta_samp_037\gta_sa.exe
Input file: E:\gta_samp_037\samp.dll
Directory: E:\gta_samp_037

и потом запускать StartProcess, не получилось
Атачишся к процессу, и в списке модулей выбираешь адресное пространство сампа.
 
  • Нравится
Реакции: leak.

leak.

Известный
37
4
Атачишся к процессу, и в списке модулей выбираешь адресное пространство сампа.

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

ЯedЯuM

Malware Maker
244
304
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
в общем, я гружу 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 · Просмотры: 237

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.