Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн авг 20, 2018 07:29

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Дизассемблирование VFX
СообщениеДобавлено: Пт дек 14, 2012 20:24 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Попробовал простенько средствами VFХ вывести дизассемблированный код системы
Код:
\ Предварительно
\ 1. Используя слово VOCS выводим список доступных в системе словариков
\ 2. Исполняя слово названия словарика делаем его контекстным Например SYSTEM
\    (изменение контекста поиска можно узнать выполнив слово ORDER)
\ 3. Исполняем слово WORDS для вывода в косоль слов текущего словарика.
\ 4. Копируем в буфер напечатанные слова для вставки в данный файл после
\    слова view? для получения листинга дизасемблированных слов.
\ 5. Загружаем данный файл в VFXForth (меню FILE->Compile)
\    (в консоль выведется ListLines дизассемблированных строк.
\     т.к. буфер консоли не безграничен, то ставим ограничение ListLines
\     на количество строк вывода листинга в консоль, например 20000)
\    Выведенные строки выделяем и копируем в буфер обмена и далее из него
\    в результирующий текстовый файл.
\ 6. Смотрим какое слово дизассемблировалось последним и удалем слова прошедшие
\    через дизассемблер.
\ 7. Повторно запускаем файл с осташимися не дизассемблированными словами.
\ P.S. Примерно так. (для примера в данном файле после view? оставлены
\ строки с небольшим количеством слов.   

20000 CONSTANT ListLines
: vvv ( -- )
  BEGIN BL WORD   
      DUP C@
            WHILE FIND 0=
                  IF COUNT TYPE ." NOT-FOUND" CR ELSE (DIS) THEN 
  REPEAT DROP
;

: view? CR 0
    BEGIN
   REFILL
    WHILE
         vvv \ SOURCE TYPE CR
         DUP 1+ ListLines = IF EXIT THEN
    REPEAT
;
view?
FORTH           DUP             DROP           SWAP            OVER 
+               -               *               /              RSHIFT
UCMOVE>         UCMOVE          CMOVE>
CMOVE           FILL            SCAN            SKIP            S=
COMPARE         MOVE            FM/MOD          SM/REM          M/
*/              */MOD           DU>             DU<             RELLVS
MAKELVS         LV              LV@             LV!             !JUMP
!CALL           GETCALLDEST     SKIPCALL        PATCHCALL       DOLAYABSCALL
(LOOP)          (+LOOP)         (BYE)           EXITCODE        TO-CALLBACK


Вложение:
readme.f [2.04 Кб]
Скачиваний: 247
(приведённый выше скрипт в кодировке 1251)

И некоторые собранные результаты после использования данного выше скрипта
Вложение:
VFXBase.zip [367.83 Кб]
Скачиваний: 222


P.S. Наверное, при желании, можно "как то" получить код для обратной сборки VFX:)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Дизассемблирование VFX
СообщениеДобавлено: Пт дек 14, 2012 21:27 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 587
Благодарил (а): 6 раз.
Поблагодарили: 25 раз.
хм.... через IDA быстрее будет )))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Дизассемблирование VFX
СообщениеДобавлено: Пн авг 06, 2018 11:43 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 872
Благодарил (а): 3 раз.
Поблагодарили: 33 раз.
diver писал(а):
хм.... через IDA быстрее будет )))

С Идой ещё как то нужно подружиться. :)
пока получен такой асм листинг для VFX некоторое время назад (через самопальную систему дизассемблирования - без оптимизации технологии и "ручного" труда на SPF4)
для Lite версий VFX (MSP430 и ARM) полученные файлы примерно такого же наполнения.
Что с этим дальше делать пока неясно (т.к. результат ещё не окончательный и обратная сборка VFX не сделана, и ещё остались некоторые "тёмные" места в асм листинге).

P.S. Если будет кому то интересно, то распишу как такой результат был получен без использования IDA (хотя это и скучно :)
Без оптимизации алгоритма время выполнения "тупого скрипта" у меня составляет ~5мин (или 10мин на Atom процессоре с 30% загрузкой CPU)
перезалил другой - более правильный файл.


Последний раз редактировалось KPG Пн авг 06, 2018 23:57, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Дизассемблирование VFX
СообщениеДобавлено: Пн авг 06, 2018 23:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6375
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
Процесс прикосновения к великому?... :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Дизассемблирование VFX
СообщениеДобавлено: Пн авг 06, 2018 23:53 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 872
Благодарил (а): 3 раз.
Поблагодарили: 33 раз.
Hishnik писал(а):
Процесс прикосновения к великому?... :D

Кто как это видит :))
Интересно было сделать такое и да добавить недостающие "опции" в "урезанный" вариант Форт системы,
но это уже больше интересно для lite версий под контроллеры.

P.S. Кто и какой смысл найдёт сего действия, это уже его понимание. :)
А так это ещё одна "демонстрация" применения Форт и к таким задачам, если есть потребность и возможно в чём то полезный асмовский листинг рабочей Форт системы. IDA вообще по дефолту что то невнятное выдала. Можно и iForth также "ковырнуть".
Судя по количеству скачиваний начальных файлов интерес к теме или к полученным результатам какой то существует.
Рабочим инструментом служит SPF4, если это не ясно было обозначено в предыдущем сообщении.

Для сравнения добавил 2-а лог файла для Lite VFX - ARM и MSP430


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Дизассемблирование VFX
СообщениеДобавлено: Вт авг 07, 2018 09:26 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 585
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
KPG писал(а):
IDA вообще по дефолту что то невнятное выдала. Можно и iForth также "ковырнуть".


Так она же не знает где код и где данные.
Это надо ручками поднастраивать в лиситнге

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Дизассемблирование VFX
СообщениеДобавлено: Вт авг 07, 2018 15:25 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 587
Благодарил (а): 6 раз.
Поблагодарили: 25 раз.
Victor__v писал(а):
KPG писал(а):
IDA вообще по дефолту что то невнятное выдала. Можно и iForth также "ковырнуть".


Так она же не знает где код и где данные.
Это надо ручками поднастраивать в лиситнге


В случае, например с SwiftX - там подпрограммный шитый код, с полями имени и всем прочим, там приходится реально руками указывать код/данные )

вероятно и в случае vfx та же штука

(в их форте для контроллеров lpc2xxx так же было)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Дизассемблирование VFX
СообщениеДобавлено: Вт авг 07, 2018 22:14 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 872
Благодарил (а): 3 раз.
Поблагодарили: 33 раз.
Victor__v писал(а):
Так она же не знает где код и где данные.
Это надо ручками поднастраивать в лиситнге

Поняв сначала как обрабатывается тот или иной кусок данных в программе и где его границы,
а потом уже ввести эту исполнимую-метаинформацию в скрипт дизассемблера, который будет срабатывать при распознании запускающего условия
Например по адресу взятому из call вызова программы работающей с соответствующими данными. (процесс "осветления" данных, но код при этом тоже должен походить на правду)

P.S. В Иде, наверное, запускается симуляция выполнения кода которая должна служить цели получения метаинформации о данных в автоматичеком режиме,
и по идее снимающей часть таких ньюансов. Radare2 тоже какую то такую схему работы должен иметь.
Способ формирования Форт кода в виде того или иного шитого кода - это тоже уже предполагаемая априори метаинформация.
Использоание Форта в этом процессе позволяет гибко сшивать "ткань" кодо-файла в предполагаемый листинг. :)

P.P.S. Интересный момент, в Radare2 для промежуточного представления ассемблерных команд используется Форт подобный язык ESIL по которому с помощью утилиты radeco строится графичесое представление кода и по нему же симулируется код.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 2


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB