![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| gribikc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 9.2.2003 Репутация: нет Всего: нет |
-------------------- --------------------------------------------- Заранее спасибо!!! |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
gribikc, будет ошибка......
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Под Windows? -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
| setq |
|
|||
|
Unregistered |
не совсем понимаю. кто мешает написать
|
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
setq, написать то можно, но зачем? *p = 0; в Windows даст ошибку. Об этом все и говорят.
|
|||
|
||||
| gribikc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 9.2.2003 Репутация: нет Всего: нет |
да для виндовса надо что ошибку выдаёт я знаю а как сделат чтоб не выдавал незнаю
-------------------- --------------------------------------------- Заранее спасибо!!! |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Тебе доступна только память твоего процесса. А адреса на этапе компиляции не известны. Поэтому присваивать указателю любой адрес нельзя. Я просто понять не могу, что ты хочешь добиться.
|
|||
|
||||
| gribikc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 9.2.2003 Репутация: нет Всего: нет |
RAN я хочу изменять переменные в других программах я вообше не понимаю толк в указателях если им нельзя присвоить адрес!!!
-------------------- --------------------------------------------- Заранее спасибо!!! |
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
gribikc, опиши-ка саму методику именения переменных, чтобы задача была более ясна.
1) Открываем процесс, в к-м будем менять переменные; 2) Пользоватеть вводит адрес переменной из этого процесса (?) 3) дальше что....? -------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Это не так просто. Windows будет против. Дело в том, что адреса в Windows не соответствуют физическим. У каждого процесса своё виртуальное адресное пространство. Ядро не позволяет использовать память другого процесса.
Но для этого есть специальная API функция WriteProcessMemory |
|||
|
||||
| gribikc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 9.2.2003 Репутация: нет Всего: нет |
а как насшёт программы арт мони!!!
-------------------- --------------------------------------------- Заранее спасибо!!! |
|||
|
||||
| gribikc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 9.2.2003 Репутация: нет Всего: нет |
man2002ua дальше смотрим нынешнее значение переменной и если хотим его изменяем
-------------------- --------------------------------------------- Заранее спасибо!!! |
|||
|
||||
| gribikc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 9.2.2003 Репутация: нет Всего: нет |
RANWriteProcessMemory -и как оно работает
-------------------- --------------------------------------------- Заранее спасибо!!! |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Ну, тогда OpenProcess, ReadProcessMemory, WriteProcessMemory
|
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
А причем тогда указатели здесь?
Мне сказали, что ArtMoney умеет "замораживать" значения переменной - я почти офигел (как это он, не подключаясь как отладчик - их контролирует). Раскрутил этот АртМоней, оказалось - по таймеру идет тупая запись в "замороженные" ячейки. Фигня... -------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
А чего не понятно. Посмотри описание функций, там всё понятно, по-моему. Главное ID процесса узнать. Но это уже другая тема.
|
|||
|
||||
| gribikc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 9.2.2003 Репутация: нет Всего: нет |
Можно об этом поподробней
OpenProcess, ReadProcessMemory, WriteProcessMemory -------------------- --------------------------------------------- Заранее спасибо!!! |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
HANDLE hProcess;
try { hProcess = OpenProcess( PROCESS_VM_OPERATION, FALSE, lpszProcessId); if(hProcess == NULL) throw; LPCVOID lpSource; ............ Заносим в lpSource адрес переменной в чужом проецессе ............ LPVOID lpBuf = 0; lpBuf = (LPVOID)(new int); //например, для типа int BOOL res = ReadProcessMemory(hProcess, lpSource, lpBuf, sizeof(int), NULL); if(res == FALSE) throw; ........... Выводим пользователю значение .................................................... ........... Тот его меняет и мы запихиваем обратно ....................................... res = WriteProcessMemory(hProcess, lpSource, lpBuf, sizeof(int), NULL); if(res == FALSE) throw; } catch(...) { ..................... говорим, что проблемы. Можно GetLastError вызвать ........................ } delete lpBuf; lpszProcessId - ID процесса. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |