Собственно сабж.
Как в компоненте правильно указывать смещение? надо например получить данные из памяти от начала и до конца ( всю область памяти выделенную под конкретный процесс )
_mempatch 1.2.rar
Этот топик читают: Гость
Ответов: 1043
Рейтинг: 33
|
|||
карма: 0 |
|
Ответов: 4631
Рейтинг: 749
|
|||
А зачем нужно прочитать всю память от начала и до конца?
|
|||
карма: 26 |
|
Ответов: 1343
Рейтинг: 31
|
|||
Netspirit писал(а): А зачем нужно прочитать всю память от начала и до конца?ДАМП! |
|||
карма: 2 |
|
Ответов: 4631
Рейтинг: 749
|
|||
А мне кажется - поиск...
|
|||
карма: 26 |
|
Ответов: 1043
Рейтинг: 33
|
|||
Rysik, так точно)))
------------ Дoбавленo в 19.55: Одна программа для аварийного дампа. Другая, заезженная для поиска... что то типа artmoney ------------ Дoбавленo в 19.55: Netspirit, Вы тоже угадали |
|||
карма: 0 |
|
Ответов: 1343
Рейтинг: 31
|
|||
ashkalov писал(а): Как в компоненте правильно указывать смещение?врядли этот компонент справится (ну если делать дамп мелкой программки то думаю потянет, а если уж игрушки 3D итд то врядли) , а указывать так: code_34557.txt в результате: начало 401000 конец 402000 то есть пишем 1000 байт надо считать из памяти адрес(смещение) указываем в HEX количество байт указываем в integer |
|||
карма: 2 |
| ||
файлы: 1 | code_34557.txt [369B] [150] |
Ответов: 1841
Рейтинг: 369
|
|||
Я без понятия, что там и как реализовано в указанном компоненте, но, последовательность действий для получения дампа, примерно следующая:
Нуф-нуф писал(а): 1) Получаем системную инфу о железе и ОС через API GetSystemInfo. Наиболее интересной здесь является инфа о доступном адресном пространстве и о размере страниц памяти. 2) Создаем карту памяти процесса (модули, стеки, свободная и используемая память (кучи) и т.п.). Делается это при помощи ToolHelp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/tool_help_library.asp и VirtualQueryEx; 3) На основе данной карты выбираешь те куски памяти, которые имеешь желание "дампировать" и копируешь их в свой процесс через API ReadProcessMemory; 4) С копией делаешь чего хочешь - в данном случае отображаешь дамп. |
|||
карма: 1 |
|
Ответов: 1043
Рейтинг: 33
|
|||
Rysik писал(а): начало 401000указал в качестве смещения, а в ответе получил "шиш с маслом" ------------ Дoбавленo в 20.04: CriDos, не дружу я с Win API |
|||
карма: 0 |
|
Ответов: 1343
Рейтинг: 31
|
|||
ashkalov писал(а): указал в качестве смещения, а в ответе получил "шиш с маслом"эм... ахах что тебе надо то, конкретно, полный дамп, дамп статических регионов? дамп определённой области? |
|||
карма: 2 |
|
Ответов: 4631
Рейтинг: 749
|
|||
Да, именно так. Память для процесса выделяется блоками, кратными размеру страницы в памяти. Блоки имеют набор атрибутов (например, свободная/занятая, для чтения/записи/выполнения).
Для перебора памяти нужно уметь читать информацию о блоке (начальный адрес и размер), пропускать свободные и нечитаемые блоки (иначе чтение памяти будет занимать много времени) и считывать оставшиеся блоки целиком. Этот компонент для такого наверное не подходит. |
|||
карма: 26 |
|
Ответов: 1043
Рейтинг: 33
|
|||
Rysik писал(а): ахах что тебе надо то, конкретно, полный дамп, дамп статических регионов? дамп определённой области?В первом посте уже все написал ------------ Дoбавленo в 23.38: ну да ладно, передумал я заниматься этим бесполезным делом |
|||
карма: 0 |
|
11