Что нового

Чтение памяти процесса в hex-формате

Alexander

Новичок
Сообщения
105
Репутация
2
Объясните, пожалуйста, как сделать такое:
1. Найти в памяти кусок hex-значения. Например, 4175746F6974
2. Начиная с этого куска, читать определенное количество символов hex-значения.

Например, есть запись в памяти (hex):
...416C6578616E646572204175746F6974204C696B65204B756B75...
Находим 4175746F6974. С этого момента считываем 20 символов.
Получаем: 4175746F6974204C696B
Если таких (4175746F6974) кусков несколько, то обработать все.
Дальше я уже буду работать с полученным.
 
Автор
A

Alexander

Новичок
Сообщения
105
Репутация
2
sngr
Как все сложно... В общем у меня кое-что получилось. Считывает символы, но это даже лучше.

Код:
$memory = _MemoryOpen (4084)
for $i=0x00010000 to 0x007C07BD
$result = _MemoryRead (0x00010000, $memory, 'char')
FileWrite('2.txt', $result)
next
_MemoryClose($memory)


Только очень долго... А можно как-то считывать по 1КБ? Можно вообще как-то это ускорить?
 

sngr

AutoIT Гуру
Сообщения
981
Репутация
391
Почитаю справку по DllStructCreate. Там описываются типы данных(3 параметр в _MemoryRead). Мне кажется у тебя должно быть INT64. Сократи диапазон адресов. Посмотри в какой-нибудь артмани область, где встречается нужное значение. Можно поиграться со значением step. И будет тебе щастье. А твой пример работает? Мне кажется правильнее будет
Код:
$memory = _MemoryOpen (4084)
for $i=0x00010000 to 0x007C07BD
$result = _MemoryRead ($i, $memory, 'char')
if $result='нужное значение' then FileWrite('2.txt', $result)
next
_MemoryClose($memory)
 
Автор
A

Alexander

Новичок
Сообщения
105
Репутация
2
Код:
$result = _MemoryRead ($i, $memory, 'char')

Да, не то скопировал)
Я хочу записать все данные из этого диапазона, а потом уже искать в текстовом фале нужный текст.
 
Верх