Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Машинный код. Вычисление relative address

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Машинный код. Вычисление relative address
Имя
Сообщение << Старые топики   Новые топики >>
Машинный код. Вычисление relative address - 2012-01-17 21:55:55.690000   
faza09

Сообщений: 259
Оценки: 0
Присоединился: 2009-05-18 22:19:25.963333
Здравствуйте! Возник нубский вопрос с безусловными переходами.

Есть код:

00001 E9 000000 00002 55 ;push ebp(допустим)
тут всё ясно, E9 - опкод относительного перехода, в данном случае на 0 байт вперёд.

а что если я хочу прыгнуть на какое-то расстояние назад?

0040102D 55 ;push ebp .... 00401F39 E9 EFF0FFFF
EFF0FFFF посчитал мне OllyDbg. По какому алгоритму вычисляется этот адрес? Гугл не спас. Заранее спасибо.
Post #: 1
RE: Машинный код. Вычисление relative address - 2012-01-17 22:03:41.246666   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
http://www.club155.ru/x86cmd/JMP
у вас дальний или ближний переход?
Post #: 2
RE: Машинный код. Вычисление relative address - 2012-01-17 22:58:40.900000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: faza09
0040102D 55 ;push ebp .... 00401F39 E9 EFF0FFFF
EFF0FFFF посчитал мне OllyDbg. По какому алгоритму вычисляется этот адрес? Гугл не спас. Заранее спасибо.

Это не адрес, а "расстояние" на которое надо прыгнуть от текущего адреса. Причём знаковое расстояние, которое может быть положительным или отрицательным.
Более подробно, по ссылке Flint_ta.
Post #: 3
RE: Машинный код. Вычисление relative address - 2012-01-19 21:42:46.436666   
faza09

Сообщений: 259
Оценки: 0
Присоединился: 2009-05-18 22:19:25.963333
спасибо большое за подсказки. то, что это расстояние(то бишь относительный адрес) понятно. а как рассчитать отрицательный адрес? допустим, если я захочу прыгнуть на -128 байт?
Post #: 4
RE: Машинный код. Вычисление relative address - 2012-01-19 22:12:07.403333   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Вот смотрите: инструкция находится по адресу 00401140, переход идет на адрес 00401000
00401140    E9 BBFEFFFF&nbsp;&nbsp; JMP 00401000
данные опкода записываются в обратном порядке FF FF FE BB. Максимальный адрес равен FFFFFFFF. FFFFFFFF-FFFFFEBB = 144 - 4 байта = 140
и 00401140-00401000=140.
И вообще зачем вам все это? Этим должен заниматься компилятор.
Post #: 5
RE: Машинный код. Вычисление relative address - 2012-01-20 15:30:29.916666   
faza09

Сообщений: 259
Оценки: 0
Присоединился: 2009-05-18 22:19:25.963333
Flint_ta, спасибо Вам огромное=) теперь всё ясно.
это надо для инъектирования кода в pe файлы:)
Post #: 6
RE: Машинный код. Вычисление relative address - 2012-01-21 05:46:37.630000   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Вы засранца чтоле пишите?
Post #: 7
RE: Машинный код. Вычисление relative address - 2012-01-26 20:38:00.863333   
faza09

Сообщений: 259
Оценки: 0
Присоединился: 2009-05-18 22:19:25.963333
его самого. всмысле он уже давно написан, но вот хочу обновить его на более распространяемого засранца, а то всего 1к машин заражено
Post #: 8
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Машинный код. Вычисление relative address







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.