Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 195

Раздел: Ассемблер
/ вопрос решён /

Здравствуйте, эксперты! Помогите перевести на Pascal:
MOV EBX, [401288]
MOV EAX, DWORD PTR, 401000
MOV EBX, EAX

Phantom Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Phantom (статус: Посетитель)
Вопрос отправлен: 13 июня 2012, 19:48
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: Толяныч

Здравствуйте, Бородеев Илья Вадимович!
Да никак. Паскаль, как и большинство языков программирования, не машинно-ориентированный язык, и не имеет специального регистрового типа данных. Каждый оператор Паскаля транслируется в целую группу машинных инструкций, и указанная строка может быть "кусочком" из этой группы, самостоятельного смысла не имеющим.
Вот напаример как выглядит откомпилированный всего лишь один оператор Паскаля :
http://shot.qip.ru/008C6Z-31appUMXOW/
И тут засылка в ЕАХ - один небольшой фрагмент исполняемого кода этого оператора.

Ответ отправил: Толяныч (статус: 4-ый класс)
Время отправки: 14 июня 2012, 10:43
Оценка за ответ: 5

Комментарий к оценке: то есть одна команда записанная на Паскале переводится в несколько ассемблерных инструкций?

Мини-форум вопроса

Всего сообщений: 11; последнее сообщение — 15 июня 2012, 20:46; участников в обсуждении: 3.
Толяныч

Толяныч (статус: 4-ый класс), 13 июня 2012, 22:22 [#1]:

Бессмысленное сочетание : сначала в ЕВХ записывается что-то из памяти, а уже через одну команду затирается совсем другим содержимым.
Могу на Паскале :
{Полная фигня}
Phantom

Phantom (статус: Посетитель), 13 июня 2012, 23:00 [#2]:

а как на Паскале будет выглядеть эта запись: MOV [401800], EAX?
Вадим К

Вадим К (статус: Академик), 14 июня 2012, 11:02 [#3]:

Содержимое регистра eax записать в память по адресу 401800 (если точнее, то по адресам 401800-401803 - там же 4 байта)
Галочка "подтверждения прочтения" - вселенское зло.
Толяныч

Толяныч (статус: 4-ый класс), 14 июня 2012, 13:07 [#4]:

Дык ему же нужно на Паскале... :-)
Phantom

Phantom (статус: Посетитель), 15 июня 2012, 12:23 [#5]:

а можете привести пример кода на паскале?
Вадим К

Вадим К (статус: Академик), 15 июня 2012, 12:32 [#6]:

могу, но я думаю, это не то, что нужно.
procedure t(d:integer);
  var m:integer absolute $401800;
begin
  m := d;
end;
Разъяснение.
Строка var m:integer absolute $401800; заставит разместить переменную по указанному адресу. Запись в эту переменную будет равносильна записи по данному адресу.
А вот процедура имеет один параметр, который будет передан через регистр eax (wiki)

Но это все бред. Полный бред.
паскаль не использует 32битные регистры (если мы говорим о старом борланде).
Галочка "подтверждения прочтения" - вселенское зло.
Phantom

Phantom (статус: Посетитель), 15 июня 2012, 12:36 [#7]:

ну это именно как раз что нужно. спасибо!
Вадим К

Вадим К (статус: Академик), 15 июня 2012, 13:14 [#8]:

А зачем все это нужно? переводите декомпилированный код в паскльный?
Галочка "подтверждения прочтения" - вселенское зло.
Phantom

Phantom (статус: Посетитель), 15 июня 2012, 13:59 [#9]:

нужно написать плагин для записи в память исполняемого файла (адрес статический) некоторого значения, на паскале.
Толяныч

Толяныч (статус: 4-ый класс), 15 июня 2012, 17:07 [#10]:

Бородеев Илья Вадимович:

Цитата:

то есть одна команда записанная на Паскале переводится в несколько ассемблерных инструкций?

Да, точнее - машинных команд, минуя ассемблер. В приведенном на рисуночке примере - жирныс шрифтом один оператор Паскаля, а обычным, с 16-ричными цифрами - то, что будет в EXE-шнике.
Вирус пишете ? ;-)
"В память исполняемого файла" -- некорректное выражение. Либо модифицируется исполняемый файл, хранящийся на диске ( хакерские штучки ), либо записывается в адресное пространство ОЗУ, куда загружен исполняемый файл. Во втором случае это делается через функции API для взаимодействия с чужими окнами ( прцессами ), но в этом, увы, я совсем не гуру.

Вадим_К :

Цитата:

m = d;

А это уже не Паскаль :-)
Phantom

Phantom (статус: Посетитель), 15 июня 2012, 20:46 [#11]:

да, немножко неправильно выразился:) хотя в моем случае, записать нужно именно в EXE'шник, загруженным в оперативную память.

26 июня 2012, 13:25: Статус вопроса изменён на решённый (изменил модератор DNK)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:52
Выполнено за 0.03 сек.