| 
| 
 | Вопрос # 2 850/ вопрос решён / | 
 |  Здравствуйте, эксперты!Проблема моя, скорее всего не решается с помощью дельфи, а в ассемблере я вообще не фурычу. Но всё же.
 Работа с процессами, с чужой памятью. Итак, есть определённое значение. Известно его положение в памяти процесса, известен id процесса, необходимо это значение прочитать\изменить. Это вобщем то и всё, но непонятно можно ли в дельфи вообще работать с чужой памятью? Вроде бы можно с помощью указателей, но я с ними так и не стал разбираться, ибо не нужно было. Ну мой план решения такой:
 1. Найти ID процесса,
 2. Найти оффсет памяти процесса,
 3. Найти точное месторасположение ячейки\ячеек.
 4. Прочитать (а в идеале ещё и изменить значение)
 Проблема во 2,3 и 4-ом пункте.
 
|  |   Вопрос задал: Gooddy (статус: 3-ий класс)Вопрос отправлен: 27 мая 2009, 14:51
 Состояние вопроса: решён, ответов: 3.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Failure!Ассемблер тут не при чем. он в данном случае параллелен.
 для работы с чужой памятью надо использовать ReadProcessMemory и WriteProcessMemory. Рекомендую начать чтение с встроенной справки, а потом
 http://programmer.topf.ru/viewtopic.php?id=10
 http://www.xakep.ru/post/22263/default.asp
 http://4programmers.net/Delphi/ReadProcessMemory
 http://www.wasm.ru/article.php?article=apihook_1
 Следует помнить, что многие антивирусы могут относиться в Вашей программе с враждебностью. Также некоторые программы сопротивляются, что бы их читали. Поэтому лучше экспериментировать на своем приложении и с отключенными проактивными защитами.
 Также не стоит забывать, что подобный код может нарушать законодательство некоторых стран.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 27 мая 2009, 15:30
 Оценка за ответ: 5
 Комментарий к оценке: Идеально, как всегда, жаль что ответ не на все вопросы. |  Ответ #2. Отвечает эксперт: Пупкин В В Здравствуйте, Failure!открываем процесс
 OpenProcess
 читаем (нужно найти то что надо еще)
 ReadProcessMemory
 пишем
 WriteProcessMemory
 
|  | Ответ отправил: Пупкин В В (статус: 2-ой класс)Время отправки: 27 мая 2009, 15:32
 Оценка за ответ: 5
 Комментарий к оценке: На секунду позже) |  Ответ #3. Отвечает эксперт: min@y™ Извините, меня не было в инете 2 дня. Может быть поможет мой пример. Это всего лишь демо, однако, посмотри.К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 27 мая 2009, 20:07
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо. |  
 Мини-форум вопросаВсего сообщений: 8; последнее сообщение — 27 мая 2009, 16:22; участников в обсуждении: 3. 
|   | Пупкин В В (статус: 2-ой класс), 27 мая 2009, 15:33 [#1]:сори отправлял ответ, ответа Вадима К не было ( |  
|   | Gooddy (статус: 3-ий класс), 27 мая 2009, 15:34 [#2]:Ничего, ваш ответ содержит ещё 1 полезную функцию   Чисти код! Чисти код! Чисти код! |  
|   | Gooddy (статус: 3-ий класс), 27 мая 2009, 15:37 [#3]:Ну я так понял что мне придётся работать с памятью как со стимом? Чисти код! Чисти код! Чисти код! |  
|   | Вадим К (статус: Академик), 27 мая 2009, 15:46 [#4]:нет, как с массивом байт на 4 гигабайта. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Gooddy (статус: 3-ий класс), 27 мая 2009, 15:49 [#5]:не совсем понятно почему 4 гигабайта. массив байт тоже не плохо. спасибо за помощь. очень быстро и всё что нужно. даже больше. Чисти код! Чисти код! Чисти код! |  
|   | Вадим К (статус: Академик), 27 мая 2009, 16:05 [#6]:ну как почему? потому что любому приложению под Win32 выдается 4 гига памяти. Другое дело, что не вся она доступна... Но это уже другое дело. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Gooddy (статус: 3-ий класс), 27 мая 2009, 16:17 [#7]:мм. спасибо. непонятно почему дают работать со всей памятью, но в общем решаемо ограничением. Чисти код! Чисти код! Чисти код! |  
|   | Вадим К (статус: Академик), 27 мая 2009, 16:22 [#8]:Почему? да всё просто. Например часть памяти доступно только для чтения. Первый мегабайт вообще особняком сидит - это дань DOS'у. Также нельзя обращаться к памяти, которая не была выделенная. Говоря о том, что выдается 4 гигабайта, никто не говорит, что что всё оно будет доступно. Приложение должно выделять для себя память.
 А может быть запрещено чтение/запись по той причине, что прав не хватает.
 Галочка "подтверждения прочтения" - вселенское зло. |  31 января 2011, 19:23: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |