|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.08.2007, 03:05 | #1 |
Регистрация: 21.08.2007
Сообщений: 6
|
Где можно найти исходники простого дизассемблера?
Где можно найти исходники простого дизассемблера с функциями отображения кода и его редактирования и сохранения, компиляции?
|
21.08.2007, 10:17 | #2 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
просто движок тут http://patkov-site.narod.ru/lib.html
пыщь
|
22.08.2007, 01:02 | #3 |
Регистрация: 21.08.2007
Сообщений: 6
|
Возможно ли по смещению, которое было получено при просмотре файле в HEX-коде, получить виртуальный адрес? Смещение получаю из свой программы, а для дальнейшией работы проги нужен виртуальный адрес, как его программно получить?
|
22.08.2007, 11:22 | #4 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Возможно:
VA = RawOffset - RawOffsetOfSection + VirtualOffsetOfSection + ImageBase RVA = RawOffset - RawOffsetOfSection + VirtualOffsetOfSection RawOffset - смещение (из Hex-редактора) RawOffsetOfSection - смещение секции VirtualOffsetOfSection - виртуальное смещение секции ImageBase - базовый адрес загрузки --- RawOffsetForPatch = 2345h RawOffsetOfSection = 400h VirtualOffsetOfSection = 1000h ImageBase = 400000h VA = 2345h - 400h + 1000h + 400000h = 402F45h RVA = 2345h - 400h + 1000h = 2F45h В обратную сторону так: RawOffset = VA - VirtualOffsetOfSection + RawOffsetOfSection - ImageBase RawOffset = RVA - VirtualOffsetOfSection + RawOffsetOfSection
пыщь
Последний раз редактировалось JTG; 22.08.2007 в 11:45. |
22.08.2007, 16:02 | #5 |
Регистрация: 21.08.2007
Сообщений: 6
|
А величины
RawOffsetOfSection = 400h VirtualOffsetOfSection = 1000h ImageBase = 400000h обычно постоянны или могут меняться? Откуда они взяты? Возможно ли из Delphi работать с готовым отладчиком? Например, из программы менять команды в отладчике и сохранять. чтобы не писать самому отладчик. Все-таки самому его не очень просто написать, если еще возможно. Последний раз редактировалось woodyfon; 22.08.2007 в 16:10. |
22.08.2007, 17:05 | #6 | |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Гы, читай спецификацию PE-формата
Тут http://cracklab.ru/download.php?action=get&n=MTU1 PETools (есть новее версия, но эта вполне сойдёт) Копируй куда надо (это не инсталлятр), настраивай, наслаждайся встроить в контекстное меню получим отличный инструмент Цитата:
Писать отладчик зачем кстати не пойму? Качай тот-же OllyDebugger например
пыщь
Последний раз редактировалось JTG; 22.08.2007 в 17:12. |
|
22.08.2007, 17:20 | #7 |
Регистрация: 21.08.2007
Сообщений: 6
|
А универсальной формулы для расчета адеса по offset нету?
Хочу написать программу, которая могла переводить зашитые в теле программы слова, если перевод слов очень длинный и не помещаются при редактировании в WinHEX. Знаю, что есть OgreGUi, но он не всегда корректно работает с программами, написанными на Delphi. Последний раз редактировалось woodyfon; 22.08.2007 в 17:23. |
22.08.2007, 17:32 | #8 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Это и есть универсальная ) Параметры можно почерпнуть из заголовка екзешника. Процитирую себя "Читай спецификацию..." вот кстати классика жанра http://av5.com/journals-magazines-online/1/42/392
пыщь
|
22.08.2007, 17:44 | #9 |
Регистрация: 21.08.2007
Сообщений: 6
|
А параметры из заголовка отображаются непосредственно в режиме HEX-просмотра файла? А ты не мог на примере показать, что и где? Пожалуйста!
|
22.08.2007, 18:12 | #10 | |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Параметры не находятся всегда по одному и тому же смещению, код писать лень
В двух словах - в дос-заголовоке файла есть 2-байтовое значение, которое содержит адрес файлового заголовка - в нём есть количество секций. за ним идёт опциональный заголовок, в нём ImageBase, дальше таблица секций - массив структур, из неё выдёргивается размер секции, виртуальный адрес и файловое смещение. так по цепочке надо пройти по коду, вылавливая нужные значения http://www.wasm.ru/series.php?sid=14 статья 2 Цитата:
пыщь
Последний раз редактировалось JTG; 22.08.2007 в 18:29. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Где можно найти TRotateForm? | Aboltus | Компоненты Delphi | 2 | 31.07.2008 10:06 |
найти, каким образом можно получить длину строки. | igroman | Общие вопросы Delphi | 2 | 25.05.2008 17:52 |
А где можно найти новые Glyph? | love2508 | Помощь студентам | 1 | 02.11.2007 16:24 |