C++ ReadProcessMemory ....

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
23 Авг 2022
Сообщения
56
Реакции
1
Всем привет! Нужна помошь!!!

Код:
Expand Collapse Copy
ReadProcessMemory(hProcess, (LPVOID)addr, &value2, sizeof(value2), 0);
Этот код выводит значение рандомное например 12. Но после этого я применяю WriteProcessMemory и ставлю значение например 3.
Как мне после WriteProcessMemory записать снова значение 12(оно рандомное).

Знатоки плюсов откликнитесь :)
 
Нихуя не понял, что ты имел ввиду?
 
Всем привет! Нужна помошь!!!

Код:
Expand Collapse Copy
ReadProcessMemory(hProcess, (LPVOID)addr, &value2, sizeof(value2), 0);
Этот код выводит значение рандомное например 12. Но после этого я применяю WriteProcessMemory и ставлю значение например 3.
Как мне после WriteProcessMemory записать снова значение 12(оно рандомное).

Знатоки плюсов откликнитесь :)
ну сначала в интовую переменную записываешь это значение, пишешь свое значение, потом пишешь из этой переменной
 
ну сначала в интовую переменную записываешь это значение, пишешь свое значение, потом пишешь из этой переменной
Смотри я поставил int value; а как получить то же значение которое читало с самого начала. Например с самого начала прочитало 8 , я изменил это значение на 4 , при повторном чтение будет 4 , а мне нужно что бы было самое первое 8.
ну сначала в интовую переменную записываешь это значение, пишешь свое значение, потом пишешь из этой переменной
Я нубик так что мне легче примером показать как это сделать лучше.
 
Смотри я поставил int value; а как получить то же значение которое читало с самого начала. Например с самого начала прочитало 8 , я изменил это значение на 4 , при повторном чтение будет 4 , а мне нужно что бы было самое первое 8.

Я нубик так что мне легче примером показать как это сделать лучше.
я не писал ничего уже дохуя времени, но по идее это должно работать как-то так
C++:
Expand Collapse Copy
int a = ReadProcessMemory(hProcess, (LPVOID)addr, &value2, sizeof(value2), 0);
WriteProcessMemory(hProcess, (PBYTE*)offset, &3, sizeof(int), 0);
*что-то*
WriteProcessMemory(hProcess, (PBYTE*)offset, &a, sizeof(int), 0);
 
если значение и правда рандомное - реверси, ищи момент выбора этого числа и вызывай его
 
sigma:
Expand Collapse Copy
int value = 12;

WriteProcessMemory(hProcess, (LPVOID)addr, &value, sizeof(value), 0);

value = 12;
WriteProcessMemory(hProcess, (LPVOID)addr, &value, sizeof(value), 0);
 
Смотри я поставил int value; а как получить то же значение которое читало с самого начала. Например с самого начала прочитало 8 , я изменил это значение на 4 , при повторном чтение будет 4 , а мне нужно что бы было самое первое 8.
всмысле че за вопрос дэбильный? просто создать еще одну переменную
 
sigma:
Expand Collapse Copy
int value = 12;

WriteProcessMemory(hProcess, (LPVOID)addr, &value, sizeof(value), 0);

value = 12;
WriteProcessMemory(hProcess, (LPVOID)addr, &value, sizeof(value), 0);
Смотри , каждый раз как я запускаю программу там в "value" ставится рандомное значение от 0-15 , Я читаю addr и мне выпадает начальное например "6" , я изменяю этот адрес с помошью WriteProcessMemory на "4" и читаемый адрес выдает уже "4" , но мне нужно что бы я мог вернутся к начальному значению тоесть "6" Хз как это делать т.к плюсы как хобби изучаю.
 
Смотри , каждый раз как я запускаю программу там в "value" ставится рандомное значение от 0-15 , Я читаю addr и мне выпадает начальное например "6" , я изменяю этот адрес с помошью WriteProcessMemory на "4" и читаемый адрес выдает уже "4" , но мне нужно что бы я мог вернутся к начальному значению тоесть "6" Хз как это делать т.к плюсы как хобби изучаю.
скинь код скрином из иде, все должно работать
 
Смотри , каждый раз как я запускаю программу там в "value" ставится рандомное значение от 0-15 , Я читаю addr и мне выпадает начальное например "6" , я изменяю этот адрес с помошью WriteProcessMemory на "4" и читаемый адрес выдает уже "4" , но мне нужно что бы я мог вернутся к начальному значению тоесть "6" Хз как это делать т.к плюсы как хобби изучаю.
Запиши начальное значение в переменную. Если это не решение твоей задачи, то опиши конкретнее, что тебе нужно.
 
Последнее редактирование:
Последнее редактирование:
C++:
Expand Collapse Copy
int main( ... )
{
    LPVOID address_to_value_you_need = reinterpret_cast< LPVOID >( 0xFACE ); // адрес
    HANDLE handle_to_process = nullptr; // хендл к процессу (вызов OpenProcess вместо nullptr должен быть)

    SIZE_T dummy = 0; // сколько байтов по итогу было прочитано (нужно для ассертов)

    int write_this = 6; // что записываешь
    int read_value = 0; // что хочешь прочитать

    // читаем, но конечно же не забываем проверять возвращаемое значение (желательно с помощью ассертов)
    ReadProcessMemory( handle_to_process, address_to_value_you_need, &read_value, sizeof( read_value ), &dummy );

    read_value; // теперь у нас тут 4

    // записываем, проверяем записалось ли с помощью ассертов
    WriteProcessMemory( handle_to_process, address_to_value_you_need, &write_this, sizeof( write_this ), &dummy );

    // теперь по адресу address_to_value_you_need у нас 6

    // записываем, проверяем ассертом, теперь у нас по адресу address_to_value_you_need значение 4
    WriteProcessMemory( handle_to_process, address_to_value_you_need, &read_value, sizeof( read_value ), &dummy );

    return 0;
}
 
Назад
Сверху Снизу