Вверх ↑
Этот топик читают: Гость
Ответов: 1841
Рейтинг: 369
#1: 2014-01-28 03:49:46 ЛС | профиль | цитата
Всем привет!
В общем, решил немного отдохнуть от основной задачи, и взялся за давнюю идею: консольный редактор памяти
Недавно мне понадобилось работать с памятью некоторых 64 битных процессов, что к сожалению текущая реализация пакета Windows не позволяет...
Немного поразмышляв, появилась идея реализовать консольную утилиту, которую можно скомпилировать под различные разрядности Windows и в дальнейшем через неё редактировать процессы, ну а GUI собственно делать в HiAsm
А недавно, я как раз начал кодить модуль для подключения к проектам Lazarus, с реализациями функций работы с памятью процессов.
Ну так вот, дело за малым. Завернуть модуль в нужный интерфейс + парсер параметров, и получился MemoryTools.

Реализовано пока только 2 типа данных: Int32, String (Ansi/Unicode)
Можно как писать, так и читать данные.
Имеется поддержка 64 битных адресов.

В дальнейшем будут добавлены следующие типы данных: 1 byte, 2 byte, 8 byte, Float или Double.
Так же планируется реализовать поиск в памяти процесса и поддержку указателей.
Ну и описание команд более подробно позже сделаю.

Вот собственно сама утилита(x32+x64) + тестовое GUI к ней - версия 1.0:
memorytools.zip
Резервная ссылка: MemoryTools.rar
карма: 1
3
файлы: 1memorytools.zip [240KB] [462]
Голосовали:Bams, halt, flint2
vip
#1.1контекстная реклама от партнеров
Ответов: 2059
Рейтинг: 132
#2: 2014-01-28 11:05:11 ЛС | профиль | цитата
Вещь нужная.
Сам тоже начинал подобное делать.
Хорошо бы добить до конца.
P.S.
В TEST.exe не ищется ID процесса. (XP).
Но это - мелочи жизни.
карма: 6

0
Ответов: 1535
Рейтинг: 176
#3: 2014-01-28 11:21:11 ЛС | профиль | цитата
CriDos, что-то у меня ни один из архивов не открывается правильно (открывается, но пустым). Перезалей в более распространённых архивах zip или rar.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 1304
Рейтинг: 405
#4: 2014-01-28 11:24:40 ЛС | профиль | цитата
В TEST.exe не ищется ID процесса. (XP).

flint2, замени мультик (x32 or x64?) на этот

Add(MultiElementEx,1145442,147,70)
{
@Hint=#11:x32 or x64?|
Mode=2
AddHint(-22,-29,70,13,@Hint)
}
BEGIN_SDK
Add(EditMultiEx,12326090,21,21)
{
WorkCount=#10:doEnumKeys|
EventCount=#11:onEventData|
Width=223
Height=151
link(doEnumKeys,6081369:doEnumKeys,[(35,27)(35,90)])
}
Add(Registry,6081369,49,70)
{
HKey=2
Key="HARDWARERESOURCEMAPHardware Abstraction Layer"
Point(doEnumKeys)
Point(onEnumKey)
link(onEnumKey,5197677:doExec,[])
}
Add(RE_Search,5197677,98,77)
{
Expression="x64"
link(onMatch,16059721:doData,[(142,83)(142,55)])
link(onNotFound,7021679:doData,[(142,90)(142,104)])
}
Add(DoData,16059721,154,49)
{
Data=String(MainTools_64.exe)
link(onEventData,6985888:doWork2,[])
}
Add(DoData,7021679,154,98)
{
Data=String(MainTools_32.exe)
link(onEventData,6985888:doWork3,[(215,104)])
}
Add(HubEx,6985888,211,49)
{
Angle=3
link(onEvent,12326090:onEventData,[(215,27)])
}
END_SDK

Но и в этом случае в ХР записать и прочитать данные не получится.
карма: 3

0
Ответов: 2059
Рейтинг: 132
#5: 2014-01-28 11:37:28 ЛС | профиль | цитата
MAV
Спасибо.
карма: 6

0
Ответов: 1841
Рейтинг: 369
#6: 2014-01-28 14:26:29 ЛС | профиль | цитата
ser_davkin писал(а):
CriDos, что-то у меня ни один из архивов не открывается правильно (открывается, но пустым). Перезалей в более распространённых архивах zip или rar.

перезалил


Так, настало время исправления ошибок
------------ Дoбавленo в 12.26:
MAV писал(а):
Но и в этом случае в ХР записать и прочитать данные не получится.

Странно, в теории должно работать...
На практике, проверял пока только в Win8.1x64+De1ph1 компилятор.
Сейчас запущу шарманку и проверю на ряде ОС.
------------ Дoбавленo в 14.16:
Проверил на Windows XP SP3, работает отлично (с исправленным x32 or x64?)
Но проверял на сборке, так что там предустановленны все необходимые компоненты и библиотеки.
Сейчас как докачаются оригинальные образы с Win XP SP3, SP2, SP1, проверю и на них.
В любом случае, для моих целей необходима поддержка всех версий (начиная от чистой Windows XP) и заканчивая Windows 8.1 x64.
Windows XP SP3(сборка)
Так же, я у себя использую некоторые наработки из открытого проекта Cheat Engine, с оптимизированным кодом под актуальную версию компилятора.
------------ Дoбавленo в 14.26:
Вот собственно исходник той части, которая читает/записывает данные:
memorytools.pas

Пока без комментариев, т.к. по именам методов и так должно быть понятно, за что оно отвечает
карма: 1
0
Ответов: 2059
Рейтинг: 132
#7: 2014-01-28 14:49:32 ЛС | профиль | цитата


В любом случае, для моих целей необходима поддержка всех версий (начиная от чистой Windows XP) и заканчивая Windows 8.1 x64.

Это нужно большинству пользователей, для аналогичных целей.
С похожей ситуацией я сталкивался, когда делал генерацию кода для таблиц экспорта-импорта в PE заголовке.
И на семерке пашет и на XP, но только на том компе, на котором скомпилировано.
Так что выкладывай, будем тестить каждый чих. Так легче и быстрее помоему.


карма: 6

0
Ответов: 4622
Рейтинг: 746
#8: 2014-01-28 16:02:51 ЛС | профиль | цитата
CriDos писал(а):
что к сожалению текущая реализация пакета Windows не позволяет

Ты на всякий случай загляни сюда: Компилятор FPC 2.6.0
Вдруг найдешь для себя что-то полезное

Редактировалось 1 раз(а), последний 2016-12-07 14:15:36
карма: 26

0
Ответов: 1841
Рейтинг: 369
#9: 2014-01-28 16:12:59 ЛС | профиль | цитата
Netspirit, кстати, недавно хотел посмотреть что там у вас вышло, но отвлекли меня, и что то забыл.
Спасибо что напомнил.
Вообще, я недавно пытался подключить FPC 2.6.2, но кол закидал меня кучей ошибок, правда я с новым колом пытался скомпилить
Нужно будет ещё раз попробовать, но на этот раз с разбором полёта.
карма: 1
0
Ответов: 4622
Рейтинг: 746
#10: 2014-01-28 16:14:53 ЛС | профиль | цитата
Не надо ничего пробовать. Там всё уже сделано. И FPC 2.6.2, и KOL 3.21, и 64 бита...
карма: 26

1
Голосовали:CriDos
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)