Author |
Message |
vital72
Novelist
Joined: 17 Jun 2014 04:29 Posts: 44 Location: 93.80.157.217
|
Несмотря на то, что дизассемблер -- вещь универсальная и не привязана к конкретной архитектуре, размещаю я его здесь, потому что мой проект связан с Радио-86РК. Представляю вашему вниманию свою реализацию дизассемблера для 8-битных процессоров i8080/i8085/Z80. Я его использовал для исследования МОНИТОР'ов разных ретрокомпьютеров, также планирую его применять для дизассемблирования игр и адаптации их под свой проект. Из возможностей: отделение области данных от кода -- это когда вместо абсолютных адресов в командах чтения/записи из/в память используются метки на сегменты данных (декларирование переменных); имеется возможность скакать туда-сюда по меткам в исходном коде, что очень помогает при анализе кода; задание границ областей данных прямо из дампа; знает недокументированные команды. Жду ваши комментарии/замечания/предложения по улучшению дизассемблера. Адрес: https://86rk.ru/disassm/Также, обновился редактор знакогенератора http://www.nedopc.org/forum/viewtopic.php?f=93&t=10859
|
22 Jul 2021 03:36 |
|
 |
fifan
Devil
Joined: 06 Oct 2006 03:17 Posts: 828 Location: г.Лянтор,Сургутского р-на,ХМАО
|
Интересно попробовать. Судя по нику топикстартера я - его тёска и одноготка... 
|
22 Jul 2021 07:26 |
|
 |
Mildi
Writer
Joined: 24 Aug 2022 23:08 Posts: 21
|
Почему то зависает когда доходит до такого кода. 22 05 41 22 04 41 22 06 41 тут зависает, если 41 забить 00 то идет нормально. 22 07 41 22 21 CE 22 08 41
|
31 Aug 2022 20:32 |
|
 |
Mildi
Writer
Joined: 24 Aug 2022 23:08 Posts: 21
|
и еще косяк заметил, не распознает (точнее распознает и помечает даже) иногда константы в программе, из за чего константы воспринимаются как команды (несмотря на то что помечены), видимо этот алгоритм стоит улучшать.
|
01 Sep 2022 09:48 |
|
 |
vital72
Novelist
Joined: 17 Jun 2014 04:29 Posts: 44 Location: 93.80.157.217
|
здорово, что отписались об ошибке, как будет время -- посмотрю. на счёт констант не понял. можете привести пример кода и какие опции были включены? или скриншот.
|
03 Sep 2022 00:03 |
|
 |
Mildi
Writer
Joined: 24 Aug 2022 23:08 Posts: 21
|
да сделаю, но несколько позже как бинарник в исходное состояние верну. Дизассемблер парсит код по порядку без прохода по командам перехода? Просто мне тут подсказали что так с константами раскиданными по свободным местам в дампе ведут себя многие дизассемблеры, так что наверное ничего страшного в таких ошибках нет. Ida pro вообще сказала "показывай мне тут каждый кусок кода в ручную" ... И есть вопросы по поводу сгенерированного кода, а то описание крайне краткое. Почему он некоторые данные определяет как хотя указано явно как 3E18h и что означают цифры в квадратных скобках. .
|
05 Sep 2022 06:48 |
|
 |
vital72
Novelist
Joined: 17 Jun 2014 04:29 Posts: 44 Location: 93.80.157.217
|
дизассемблер пытается определить размерность переменных и чтоб не плодить тучу переменных, он может за базу использовать уже имеющуюся, тут надо смотреть код. можете скинуть бинарник? самому интересно откуда взялось "+7". числа в квадратных скобках -- это количество ссылок на данную метку, можете навести мышку на имя метки и узнать, кто на нее ссылается, тут же перейти на них, а потом вернуться обратно правой кнопкой мышки.
|
05 Sep 2022 13:52 |
|
 |
Mildi
Writer
Joined: 24 Aug 2022 23:08 Posts: 21
|
Да все понял, там местами таких с + значений кучкой встречается. файл скинул на почту. по адресу 2000h надо поставить код 01h это константа, программа выполняется в этом месте с 2001h, точка входа 0000h процессор 8080. ОЗУ c 3C00h по 3FFFh выше пусто, но могут быть условные переходы в диапазон 5000h-5FFFh там еще ПЗУ могут быть, но меняется и блок данных с адреса 2000h-2FFFh и возможно еще в какие то адреса выше но мне пока сменные модули неизвесты которые могли там подключать ПЗУ команды undocumented получаются из за того что константы так по ишачьи раскиданы, и сбивается последовательность. Ну тут возможно причина что именно по ишачьи написан код, я с точки входа пошел я уже проклял этого кодера... А хотя только до середины самоконтроля добрался.
|
05 Sep 2022 14:46 |
|
 |
Andnor
Fanat
Joined: 01 Jan 2023 11:37 Posts: 80
|
Полезная штука, но у меня почему-то заголовки оффесетов сверху съехали и криво как-то работает выделение строк в хех-дампе, если они занимают более одной строки в ффоксе около 100-й версии.
|
27 Jan 2023 01:28 |
|
 |
forthuser
Senior
Joined: 12 Jan 2023 07:26 Posts: 151
|
Запустил с сайта rk86.ru Forth (Форт) Сделал дамп памяти в файл Скормил файл дизассемблеру на сайте 86rk.ru
Не смог дождаться какого то результата.
|
27 Jan 2023 02:10 |
|
 |
Andnor
Fanat
Joined: 01 Jan 2023 11:37 Posts: 80
|
Дамп нужно сконвертировать в бинарник было, а то он там в json по умолчанию.
|
27 Jan 2023 03:17 |
|
 |
vital72
Novelist
Joined: 17 Jun 2014 04:29 Posts: 44 Location: 93.80.157.217
|
скиньте файл на почту, я гляну, что не работает
|
27 Jan 2023 03:20 |
|
 |
forthuser
Senior
Joined: 12 Jan 2023 07:26 Posts: 151
|
Зачем, если его можно получить Online из программы https://rk86.ru (выбор Forth из выпадающего списка программ в нижней части Online симулятора и запуск его Run, а далее Memory) P.S. Возможно, если сам файл Forth.rki дать программе дизасемблирования, то она "лучше" справиться, но не думаю т.к. Форт в классическом его построении плохо подходит для обычного дизассемблирования, если это не учитывать. (в программе emu80 он тоже есть)
|
27 Jan 2023 03:42 |
|
 |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Если знать, как собственно, устроен Форт, то весьма даже неплохо подходит для обычного дизассемблирования. Листинг получается довольно регулярный и осмысленный в общем-то... Бывают и похуже кандидаты на декомпиляцию. 
_________________ iLavr
|
27 Jan 2023 08:30 |
|
 |
forthuser
Senior
Joined: 12 Jan 2023 07:26 Posts: 151
|
Да, но IDA Форт бинарники не понимает, если ничего не предпринимать дополнительно. Х.З. как в этом случае авторы построили систему. Вероятно по классике. P.S. Здесь даже почти отреверсена Starflight с Форт в Си для запуска с помощью Си (SDL) (запускал её)
|
27 Jan 2023 08:56 |
|
|