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

iAmerican

Известный
Друг
614
260
C++:
CVector vecSpeed = *(CVector*)((pPed) + 0x44);
                    ReadProcessMemory(pHandle, (LPCVOID)vecSpeed, &vecSpeed, 4, 0);
Как правильно сделать? А то не дает CVector в LPCVOID преобразовать.
 

SR_team

like pancake
BH Team
4,798
6,470
C++:
CVector vecSpeed = *(CVector*)((pPed) + 0x44);
                    ReadProcessMemory(pHandle, (LPCVOID)vecSpeed, &vecSpeed, 4, 0);
Как правильно сделать? А то не дает CVector в LPCVOID преобразовать.
потому что хуйню написал. читаешь вектор из свой программы, а потом в ReadProcessMemory пытаешься запихать этот вектор вместо адреса
 

iAmerican

Известный
Друг
614
260
потому что хуйню написал. читаешь вектор из свой программы, а потом в ReadProcessMemory пытаешься запихать этот вектор вместо адреса

как мне его прочитать? что бы потом с ним мат. действия выполнять
C++:
DWORD vPos = (DWORD)((pPed) + 0x14);
                    ReadProcessMemory(pHandle, (LPCVOID)vPos, &vPos, 4, 0);
Это получается тоже неправильно ?
 

SR_team

like pancake
BH Team
4,798
6,470
как мне его прочитать? что бы потом с ним мат. действия выполнять
C++:
DWORD vPos = (DWORD)((pPed) + 0x14);
                    ReadProcessMemory(pHandle, (LPCVOID)vPos, &vPos, 4, 0);
Это получается тоже неправильно ?
конечно не правильно. загугли "ReadProcessMemory example c++"
 

iAmerican

Известный
Друг
614
260
конечно не правильно. загугли "ReadProcessMemory example c++"

ты понимаешь что это EXE приложение?
То что ты сказал, что vPos тоже не правильно , оно правильно 100%

C++:
CVector vecSpeed;// = *(CVector*)((pPed)+0x44);
                    ReadProcessMemory(pHandle, (LPCVOID)((pPed)+0x44), &vecSpeed, 4, 0);

Вот так вот читает , но только координату X :(
 
Последнее редактирование:

iAmerican

Известный
Друг
614
260
C++:
char Hostname() {

    ReadProcessMemory(pHandle, (LPVOID)(SAMPDLLBASE + 0x21A0F8), (LPVOID)&Out, sizeof(Out), NULL);
    char ServerString[128];
    ReadProcessMemory(pHandle, (LPVOID)(Out+ 0x121), &ServerString, 128, NULL);
    cout << ServerString << endl;

    return ServerString[128];

}

В отдельности читает все отлично , но хочу сделать это функцией , что бы вызывать , например вот так :
C++:
printf("%s",Hostname());
Но бьет ошибку.
Думаю это из за того что я как то не так возвращаю ServerString , подскажите пж.
Код:
Вызвано исключение по адресу 0x6D6D2E47 (ucrtbase.dll) в API.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFFFFFFD8.

Если для этого исключения имеется обработчик, выполнение программы может быть продолжено безопасно.
 

SR_team

like pancake
BH Team
4,798
6,470
хочу сделать это функцией
C++:
std::string Hostname() {

    ReadProcessMemory(pHandle, (LPVOID)(SAMPDLLBASE + 0x21A0F8), (LPVOID)&Out, sizeof(Out), NULL);
    char ServerString[128];
    ReadProcessMemory(pHandle, (LPVOID)(Out+ 0x121), &ServerString, 128, NULL);
    cout << ServerString << endl;

    return ServerString;

}
Вывод: cout << Hostname() << std::endl;
Либое, если хочешь через printf, то printf(Hostname().c_str());
 
  • Нравится
Реакции: iAmerican

iAmerican

Известный
Друг
614
260
C++:
std::string Hostname() {

    ReadProcessMemory(pHandle, (LPVOID)(SAMPDLLBASE + 0x21A0F8), (LPVOID)&Out, sizeof(Out), NULL);
    char ServerString[128];
    ReadProcessMemory(pHandle, (LPVOID)(Out+ 0x121), &ServerString, 128, NULL);
    cout << ServerString << endl;

    return ServerString;

}
Вывод: cout << Hostname() << std::endl;
Либое, если хочешь через printf, то printf(Hostname().c_str());
c.str() не обязателен оказался, пока решил оставить через указатель. Не знаю конечно как лучше , но все равно спасибо!

указатель возвращай

Благодарю.