Машинный код. Вычисление relative address
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Машинный код. Вычисление 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. По какому алгоритму вычисляется этот адрес? Гугл не спас. Заранее спасибо.
|
|
|
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 у вас дальний или ближний переход?
|
|
|
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.
|
|
|
RE: Машинный код. Вычисление relative address - 2012-01-19 21:42:46.436666
|
|
|
faza09
Сообщений: 259
Оценки: 0
Присоединился: 2009-05-18 22:19:25.963333
|
спасибо большое за подсказки. то, что это расстояние(то бишь относительный адрес) понятно. а как рассчитать отрицательный адрес? допустим, если я захочу прыгнуть на -128 байт?
|
|
|
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 JMP 00401000 данные опкода записываются в обратном порядке FF FF FE BB. Максимальный адрес равен FFFFFFFF. FFFFFFFF-FFFFFEBB = 144 - 4 байта = 140 и 00401140-00401000=140. И вообще зачем вам все это? Этим должен заниматься компилятор.
|
|
|
RE: Машинный код. Вычисление relative address - 2012-01-20 15:30:29.916666
|
|
|
faza09
Сообщений: 259
Оценки: 0
Присоединился: 2009-05-18 22:19:25.963333
|
Flint_ta, спасибо Вам огромное=) теперь всё ясно. это надо для инъектирования кода в pe файлы:)
|
|
|
RE: Машинный код. Вычисление relative address - 2012-01-21 05:46:37.630000
|
|
|
Flint_ta
Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
|
Вы засранца чтоле пишите?
|
|
|
RE: Машинный код. Вычисление relative address - 2012-01-26 20:38:00.863333
|
|
|
faza09
Сообщений: 259
Оценки: 0
Присоединился: 2009-05-18 22:19:25.963333
|
его самого. всмысле он уже давно написан, но вот хочу обновить его на более распространяемого засранца, а то всего 1к машин заражено
|
|
|
|
|