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

legendabrn

Известный
Проверенный
122
172
Так же, как и любое значение из памяти, через reinterpret_cast, наверно.
Код:
#pragma pack(push, 1)
struct CAR_MOD_INFO
{
    int test;
} mTest[24];
#pragma pack(pop)

*reinterpret_cast<uintptr_tr*>(0xABCFFF + 0xAB) = *reinterpret_cast<uintptr_t*>(&mTest[1]);
пытался таким способом, безуспешно
 

legendabrn

Известный
Проверенный
122
172
Лучше опиши всю задачу, что тебе надо сделать
В структуре хранится переменная типа char, но она позволяет хранить значения до 255, я подумал а почему бы не заменить на свою структуру с int и все будет заебумба))
Просмотрев в IDA где используется данная структура, на работоспособность никак не должна повлиять
Попробуй так *reinterpret_cast<CAR_MOD_INFO**>(addr) = &mTest[1];
не работает
 

.deserve

Участник
32
36
В структуре хранится переменная типа char, но она позволяет хранить значения до 255, я подумал а почему бы не заменить на свою структуру с int и все будет заебумба))
Просмотрев в IDA где используется данная структура, на работоспособность никак не должна повлиять

не работает
Проверь защиту страницы памяти по этому адресу.
Если это адрес структуры, то ты не сможешь поменять структуру по нему, т.к выравнивание по границам страниц похерится.
А если это адрес указателя, то ты можешь записать в него адрес начала своей структуры и читать оттуда по 4 байта. Но всё остальное всё равно будет читать оттуда по 1 байту. При этом, если у тебя будет прямой порядок байт (big endian), то когда по этому адресу будут читать 1 байт, то будет читаться старший байт из 4 байтового целочисленного типа. А если little endian, как на большинстве x86, то всё будет ок: младший байт и будет первым.

И еще мне не понятно: нахера тебе для этой структуры выравнивание упаковки в 1 байт, если у тебя там 1 4 байтовый мембер. А по дефолту выравнивание стоит на 8 байт.
 
  • Нравится
Реакции: etereon и legendabrn

PawnHelp

Новичок
6
0
Всем приветик, помогите решить проблему с сервер коннектом
1631130364177.png

Код:
#define SAMP_CHAT_INFO_OFFSET 0x26E8C8
#define SAMP_FUNC_ADDTOCHATWND 0x67460

SAMPBase *pSAMP;

void mainThread(void *pvParams)
{
    if (pSAMP)
    {
        while (!pSAMP->tryInit())
            Sleep(100);

        while (!pSAMP->isInited)
            continue;
        strcpy(pSAMP->getInfo()->m_szHostAddress, "217.106.106.86");
        pSAMP->getInfo()->m_nPort = 7024;
    }
}


BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
        {
            pSAMP = new SAMPBase(GetModuleHandle("samp.dll"));
            _beginthread(mainThread, NULL, NULL);
            break;
        }
    }
    return TRUE;
}
 

AdCKuY_DpO4uLa

Известный
287
477
Дайте адрес, который вызывается, когда самп полностю проинициализировался (структуры там всякие и т.д.), если есть
 
  • Грустно
Реакции: DarkP1xel

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,634
2,482
  • Влюблен
Реакции: AdCKuY_DpO4uLa

sc6ut

неизвестный
Модератор
382
1,075
кроче хук 36 rpc create 3d text выводит в чат херню всякую
Посмотреть вложение 113869
кусок кода который ты показал просто прелестен, идеален. но может всё же покажешь как хукаешь, какая версия самп, ну или на крайний случай дашь хоть какуе-то информацию, кроме того как ты читаешь непонятно еще правильный ли битстрим.
 

loganhackerdff

Известный
868
517
кусок кода который ты показал просто прелестен, идеален. но может всё же покажешь как хукаешь, какая версия самп, ну или на крайний случай дашь хоть какуе-то информацию, кроме того как ты читаешь непонятно еще правильный ли битстрим.
всё кароче,надо было bool на char заменить
 
У

Удалённый пользователь 448549

Гость
Помогите пожалуйста, нема курсора когда активна менюшка
213:
if (SF->getGame()->isKeyPressed(VK_HOME)) {
    renderW = !renderW;
    SF->getSAMP()->getMisc()->ToggleCursor(renderW);
}
 

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
Помогите пожалуйста, нема курсора когда активна менюшка
213:
if (SF->getGame()->isKeyPressed(VK_HOME)) {
    renderW = !renderW;
    SF->getSAMP()->getMisc()->ToggleCursor(renderW);
}
попробуй

C++:
if (SF->getGame()->isKeyPressed(VK_HOME)) {
    renderW = !renderW;
    SF->getSAMP()->getMisc()->ToggleCursor(renderW ? 2 : 0); // renderW << 1
}