![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 21.08.2007
Сообщений: 6
|
![]()
Где можно найти исходники простого дизассемблера с функциями отображения кода и его редактирования и сохранения, компиляции?
|
![]() |
![]() |
![]() |
#2 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
просто движок тут http://patkov-site.narod.ru/lib.html
пыщь
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 21.08.2007
Сообщений: 6
|
![]()
Возможно ли по смещению, которое было получено при просмотре файле в HEX-коде, получить виртуальный адрес? Смещение получаю из свой программы, а для дальнейшией работы проги нужен виртуальный адрес, как его программно получить?
|
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 21.08.2007
Сообщений: 6
|
![]()
А величины
RawOffsetOfSection = 400h VirtualOffsetOfSection = 1000h ImageBase = 400000h обычно постоянны или могут меняться? Откуда они взяты? Возможно ли из Delphi работать с готовым отладчиком? Например, из программы менять команды в отладчике и сохранять. чтобы не писать самому отладчик. Все-таки самому его не очень просто написать, если еще возможно. Последний раз редактировалось woodyfon; 22.08.2007 в 16:10. |
![]() |
![]() |
![]() |
#6 | |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Гы, читай спецификацию PE-формата
![]() Тут http://cracklab.ru/download.php?action=get&n=MTU1 PETools (есть новее версия, но эта вполне сойдёт) Копируй куда надо (это не инсталлятр), настраивай, наслаждайся встроить в контекстное меню ![]() получим отличный инструмент ![]() Цитата:
Писать отладчик зачем кстати не пойму? Качай тот-же OllyDebugger например
пыщь
Последний раз редактировалось JTG; 22.08.2007 в 17:12. |
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 21.08.2007
Сообщений: 6
|
![]()
А универсальной формулы для расчета адеса по offset нету?
Хочу написать программу, которая могла переводить зашитые в теле программы слова, если перевод слов очень длинный и не помещаются при редактировании в WinHEX. Знаю, что есть OgreGUi, но он не всегда корректно работает с программами, написанными на Delphi. Последний раз редактировалось woodyfon; 22.08.2007 в 17:23. |
![]() |
![]() |
![]() |
#8 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Это и есть универсальная ) Параметры можно почерпнуть из заголовка екзешника. Процитирую себя "Читай спецификацию..." вот кстати классика жанра http://av5.com/journals-magazines-online/1/42/392
пыщь
|
![]() |
![]() |
![]() |
#9 |
Регистрация: 21.08.2007
Сообщений: 6
|
![]()
А параметры из заголовка отображаются непосредственно в режиме HEX-просмотра файла? А ты не мог на примере показать, что и где? Пожалуйста!
|
![]() |
![]() |
![]() |
#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 |