C++ ReadProcessMemory ....

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

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

Знатоки плюсов откликнитесь :)
 
Участник
Статус
Оффлайн
Регистрация
11 Апр 2019
Сообщения
1,116
Реакции[?]
306
Поинты[?]
4K
Всем привет! Нужна помошь!!!

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

Знатоки плюсов откликнитесь :)
ну сначала в интовую переменную записываешь это значение, пишешь свое значение, потом пишешь из этой переменной
 
Начинающий
Статус
Оффлайн
Регистрация
23 Авг 2022
Сообщения
54
Реакции[?]
1
Поинты[?]
0
ну сначала в интовую переменную записываешь это значение, пишешь свое значение, потом пишешь из этой переменной
Смотри я поставил int value; а как получить то же значение которое читало с самого начала. Например с самого начала прочитало 8 , я изменил это значение на 4 , при повторном чтение будет 4 , а мне нужно что бы было самое первое 8.
ну сначала в интовую переменную записываешь это значение, пишешь свое значение, потом пишешь из этой переменной
Я нубик так что мне легче примером показать как это сделать лучше.
 
Участник
Статус
Оффлайн
Регистрация
11 Апр 2019
Сообщения
1,116
Реакции[?]
306
Поинты[?]
4K
Смотри я поставил int value; а как получить то же значение которое читало с самого начала. Например с самого начала прочитало 8 , я изменил это значение на 4 , при повторном чтение будет 4 , а мне нужно что бы было самое первое 8.

Я нубик так что мне легче примером показать как это сделать лучше.
я не писал ничего уже дохуя времени, но по идее это должно работать как-то так
C++:
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);
 
iq abuser
Пользователь
Статус
Оффлайн
Регистрация
16 Апр 2021
Сообщения
647
Реакции[?]
138
Поинты[?]
6K
если значение и правда рандомное - реверси, ищи момент выбора этого числа и вызывай его
 
godsystem
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2022
Сообщения
238
Реакции[?]
35
Поинты[?]
4K
sigma:
int value = 12;

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

value = 12;
WriteProcessMemory(hProcess, (LPVOID)addr, &value, sizeof(value), 0);
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
627
Реакции[?]
97
Поинты[?]
61K
Смотри я поставил int value; а как получить то же значение которое читало с самого начала. Например с самого начала прочитало 8 , я изменил это значение на 4 , при повторном чтение будет 4 , а мне нужно что бы было самое первое 8.
всмысле че за вопрос дэбильный? просто создать еще одну переменную
 
Начинающий
Статус
Оффлайн
Регистрация
23 Авг 2022
Сообщения
54
Реакции[?]
1
Поинты[?]
0
sigma:
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" Хз как это делать т.к плюсы как хобби изучаю.
 
Участник
Статус
Оффлайн
Регистрация
11 Апр 2019
Сообщения
1,116
Реакции[?]
306
Поинты[?]
4K
Смотри , каждый раз как я запускаю программу там в "value" ставится рандомное значение от 0-15 , Я читаю addr и мне выпадает начальное например "6" , я изменяю этот адрес с помошью WriteProcessMemory на "4" и читаемый адрес выдает уже "4" , но мне нужно что бы я мог вернутся к начальному значению тоесть "6" Хз как это делать т.к плюсы как хобби изучаю.
скинь код скрином из иде, все должно работать
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,279
Реакции[?]
2,229
Поинты[?]
127K
Смотри , каждый раз как я запускаю программу там в "value" ставится рандомное значение от 0-15 , Я читаю addr и мне выпадает начальное например "6" , я изменяю этот адрес с помошью WriteProcessMemory на "4" и читаемый адрес выдает уже "4" , но мне нужно что бы я мог вернутся к начальному значению тоесть "6" Хз как это делать т.к плюсы как хобби изучаю.
Запиши начальное значение в переменную. Если это не решение твоей задачи, то опиши конкретнее, что тебе нужно.
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
23 Авг 2022
Сообщения
54
Реакции[?]
1
Поинты[?]
0
Последнее редактирование:
ппоршень
Пользователь
Статус
Оффлайн
Регистрация
15 Фев 2020
Сообщения
284
Реакции[?]
47
Поинты[?]
32K
C++:
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;
}
 
Сверху Снизу