|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.06.2012, 12:33 | #1 |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
Разбор объектного файла
Здравствуйте.
Разбираю объектный файл, полученный tasm'ом. В принципе все понятно и очевидно за исключением одного момента: перехода на метку. Имеется команда Код:
Имеется команда Код:
Вопрос: где косяк в рассуждениях? Заранее спасибо. |
07.06.2012, 13:31 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
смещение указывается от текущего EIP, т.е. после выборки комады (2 байта). Отсюда две ошибки:
1) в первом случае переход на -9, а не на -7 байт назад. -9 это и есть FFFFFFF7 в дополнительном коде. Никаких F там не "добавляется". 2) вместо 5 будет 3 (2 байта ушло на саму команду).
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
07.06.2012, 15:43 | #3 |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
Благодарю. Теперь все встало на свои места.
Хотя нет, не все. Немного не понял почему в первом случае будет переход на -9? И еще один вопрос. В каких случаях компилятором в код ставится команда nop (код 90)? Сори, ступил. У нас EIP указывает на следующую команду. Теперь с адресацией все на своих местах. Остался вопрос про nop. На сколько я понимаю, данная команда нужна для выравнивания процессорных тактов. Но вот когда она используется немного не могу понять, т.к. на моем тестовом примере она поставилась после команды jmp, и после этого адреса стали не кратны двум. Рано обрадовался. Строчка кода: Код:
Код:
Код:
Код:
Код:
Код:
Последний раз редактировалось Stilet; 07.06.2012 в 20:58. |
07.06.2012, 19:13 | #4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
адрес не 1701, а скорее 0117 (сначала младший байт, потом старший)
и зачем пытаться дизассемблировать данные как команды?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
07.06.2012, 20:12 | #5 |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
Это понятно. Я просто скопировал код из объектника.
Это честно не я, это TD Собственно вопрос заключается в структуре записи данных в объектном файле, потому что 4 байта Код:
Код:
Также открыт вопрос по поводу того, когда компилятор вставляет команду nop? |
07.06.2012, 20:53 | #6 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
советую взять иду (ida), она понимает объектные файлы
по-поводу нопов, да, для выравнивания, почему выровнялось на нечетные - хз, надо смотреть на кусок кода.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
07.06.2012, 22:25 | #7 |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
Собственно вот код, объектник которого я сейчас изучаю:
Код:
Слышал, что IDA можно официально бесплатно достать не свежей версии, но сейчас почему-то не могу найти. Может есть что-то более доступное? |
07.06.2012, 22:34 | #8 |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
P.S. nop в коде добавил уже после компиляции, чтобы не забыть откуда в объектнике взялся код 90
|
08.06.2012, 08:53 | #9 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> вот код
а кто автор этого кода? там есть команды, которые никогда не выполняются, на этом фоне левый ноп смотрится ещё не так плохо ) иду можно тут взять официально бесплатную (правда, не знаю, поймет она obj или нет): http://www.hex-rays.com/products/ida...freeware.shtml
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
08.06.2012, 10:35 | #10 |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
Благодарю за ссыль.
IDA выдал совершенно иной объектник: Код:
Автор кода я. Да, там есть команда, которая никогда не выполняется: Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разбор сложного xml файла | aspire89 | Общие вопросы Delphi | 7 | 27.09.2013 00:07 |
Разбор обьектного файла | Rroma | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 02.06.2012 20:02 |
Тетрады и генерация объектного кода | Lazio | Фриланс | 1 | 23.12.2010 18:20 |
Разбор текстового файла в PGN формате | Magnum2 | Общие вопросы Delphi | 0 | 03.10.2010 00:17 |
Разбор файла OBJ_TEST | russian-stalker | Общие вопросы Delphi | 11 | 25.08.2008 11:37 |