![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Robus |
|
|||
Entire Профиль Группа: Участник Сообщений: 32 Регистрация: 15.12.2005 Репутация: нет Всего: 1 |
Привет всем !!!
Нужно сделать доступ к памяти, где лежит код программы. Конечный результат это модификация кода в момент его исполнения. Я всегда работал с ТМТ под виндовс и не знал с таким проблем !!! То есть на ходу модифицировал код. В делфи столкнулся с проблемой ... Как только записывю что-то в часть памяти с кодом, - получаю EXCEPTION ... Ну и со всеми вытекающими ... Вот пример кода:
Собственно тут "MOV DWORD PTR DS:[@M1],EAX" мы получаем EXCEPTION ... Настройки компилятора перебрал все, линкера так же перебрал ... Можно легко подлинковать DLL из ТМТ но это не красиво, хочется всё аккуратно !!! Хочу обратить внимание на то, что запись в DS не есть ошибка !!! Хоть сегменты DS и СS имеют разное значение, указывают они на один кусок физической памяти ... Я пробовал ис СS и ЕS - результат тот же !!! Как побороть проблему ??? |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
если уж Вы занимается самомодификацией тогда дизассемблируйте
да посмотрите что делает она (правда даже не знаю что это за ТМТ) -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Rrader |
|
||||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 70 Всего: 191 |
Вот тебе примеры:
1) Модификация данных через селектор:смещение:
2) Модификация кода (будем считать, что работаем в пределах одной страницы):
Переписал второй пример, просьба всех потестировать! Должно выводить 200 на Caption. Если закомментировать строчку под { Path }, то 500 Это сообщение отредактировал(а) Rrader - 30.1.2009, 17:44 |
||||
|
|||||
Robus |
|
|||
Entire Профиль Группа: Участник Сообщений: 32 Регистрация: 15.12.2005 Репутация: нет Всего: 1 |
Rrader, поробовал твой вариант #2 !!! Получаю EXCEPTION вот в этом месте:
Вообще-то ... Я не совсем понял что оно вообще делает ??? По "JMP M2Addr" мы должны попасть в первый АСМ кусочек ... Но не доходим до этого !!! Я понимаю, что нужно включить разрешение записи в СЕГМЕНТ, просто не знаю как это делать из под винды !!! Но в любом случае "VirtualProtect" не исполняется корректно и вызывает дикие огорчения у DELPHI !!! И ещё ... В OldProtect ничего не записано !!! Это так надо ??? Или "VirtualProtect" туда должен записать ? |
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 70 Всего: 191 |
Robus, сможешь тестовый проект дать, и какая версия Delphi?
Выкладываю свой проект, просьба всех протестировать! Указания есть в моем предыдущем посте. Это сообщение отредактировал(а) Rrader - 30.1.2009, 17:50 Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() |
|||
|
||||
Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 18 Всего: 50 |
Delphi 7, Turbo Delphi. Все работает корректно = )
|
|||
|
||||
Robus |
|
|||
Entire Профиль Группа: Участник Сообщений: 32 Регистрация: 15.12.2005 Репутация: нет Всего: 1 |
Спасибо, я разобался ... Теперь могу строить само-изменяющийся код в момент исполнения ...
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |