«И невозможное возможно»: превращаем черный ящик в белый с помощью бинарного анализа https://habr.com/ru/company/solarsecurity/blog/460949/ Комбинированный (статический и динамический) анализ бинарного кода https://cyberleninka.ru/article/n/kombinirovannyy-staticheskiy-i-dinamicheskiy-analiz-binarnogo-koda
как бы не вижу особых противоречий сказанного и реального мира... Ида и Гидра делают это вторым способом...
"Черным ящиком" обычно называют ситуацию, когда программа или ее часть недоступна для анализа (донглы, смарткарты, сервер). Исходя из названия первой статьи можно решить, что речь идет о восстановлении алгоритма по данным на входе и выходе. Напоминает реферат студента нагуглившего за вечер инфы по незнакомой теме. --- Сообщение объединено, 12 сен 2019 --- Гидра это делает несколько сложней, чем просто рекурсивно размотать адреса назначения переходов. Во-первых на каждую процедуру при анализе натягивается солвер, находящий адреса, рассчитываемые динамически (у иды кстати с этим есть некоторые нерешаемые трудности, связанные с ее устройством). Во-вторых есть стратегия поиска массивов адресов (где оценивается насколько правдоподобен код по адресам назначения). В-третьих есть плугин aggressive instruction finder, который по псевдокоду ищет конструкции, напоминающие пролог процедуры (я немножко ошалел, когда он в 100% не предусмотренной разработчиками плугина архитектуре, добавленной самостоятельно, начал их находить).
Интересно, а как, например, обстоят дела у гидры с дизассемблированием бинарного кода созданного например на компиляторах Forth? P.S. В качестве интереса пробовал дизассемблировать исполняемый файл Форт-системы но IDA как то не сильно с ним справилась (по умолчанию, от слова совсем), поэтому сдизасемблил файл в полу ручном режиме на самопальном дизассемблере в рамках Форт же использования. Получилось не всё прямо, но процесс такого интерактивного корректировки Форт скрипта в принципе показал сходимость. (если кому интересно, то могу приложить ссылку на то как это "извращение" получалось в выходном файле)
Я не знаю что это такое, компиляторы Forth. Наверное дела в ней как-то обстоят, если гидра такой набор команд поддерживает.
f13nd, Код (Text): DUP , 0 ?DO DUP C@ C, CHAR+ LOOP DROP 0 C, - вики; для сумасшедших диалект, только они такое могут понять.
Ну Вы древние http://rosettacode.org/wiki/Category:Forth https://www.concatenative.org/wiki/view/Front Page P.S. Даже с функциональным наполнением - язык со стэком Factor https://factorcode.org/
Оу, друзья, это жесткая штука для программерских задротов, даже есть более менее современные диалекты, такие как: https://factorcode.org/ (типа Форт в Смалтоковской инфраструктуре) и https://8th-dev.com/ (типа многоплатформенный Форт, в том числе и для мобилок). Как на этом разрабатывать я хз, но можно об этом думать, как об ассемблере для стековой вм.
Да мне как бы оно и не надо, я реверсом занимаюсь лет 15, ничего кроме ассемблера там нахрен не упало. Судя по всему тебя интересует умение гидродекомпиля выводить псевдокод в синтаксисе этого языка. Вердикт - не умеет.
Не обязательно в псевдо-Форт, если там уже нативный ассемблер, но, чтобы структура Форт кода не ломала мозги диззасемблеру как IDA на нём сливается.
KPG, А автору иды нужно уделить внимание яп 70-х годов, про который сейчас никто ничего не знает ? Так подбери под это древнее мамонта соотв инструмент, он таким же древним должен быть теоретически.
Ну тут наверное безумной популярности этого выдающегося ЯП пока недостаточно, чтобы интересоваться на форумах хорошо ли, плохо ли бинарники, написанные на нем, анализируются гидрой. Пока приходится проверять такие вещи самостоятельно.
Это современные системы. Откуда такие сведения, что "никто" не знает? Есть как любительские так и коммерческие Форт-системы (и с открытым кодом) также "много" Форта представлено в разработке для контроллеров и пишется он и интегрируется в каких то прoектах с использованием разных языков, а не только ассемблера. P.S, Forth on Github https://github.com/search?q=Forth&type= --- Сообщение объединено, 16 янв 2021 --- Да, вроде только упоминался один вирус времён ДОС написанный на нём, но в какой то практике и для анализа вредоностности кода видел проект на/с нём. но Софт в разной ипостаси на нём, всё же делают и есть рускоязычный форум по нему с 2006г. В скриптах Биткоина Форт-подобный язык. При разработке крипты TON язык Fifth для VM сделан по подобию Forth. В биосах компьтеров Sun и OLPC он под названием OpenFirmware (OpenBios) ... ... --- Сообщение объединено, 16 янв 2021 --- Кстати, в Radare2 язык симуляции выполнения ассемблерных команд построен с использование стэковой нотации подобной Форт. P.S. Козьма Прутков @"Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий" --- Сообщение объединено, 16 янв 2021 --- ESIL on Radare2 https://github.com/radareorg/radare2book/blob/master/src/disassembling/esil.md
KPG, По твоей ссылке первый попавшийся текст, что это такое!? Код (Text): 114 0 >r 2>r \ R: q n 115 0 1 begin ?dup while dup 2* repeat 116 r> 0 begin \ S: [...1<<i...] d r 117 2* \ r <<= 1 118 r@ 0< if 1+ then \ if n&msb then r++ 119 r> 2* >r \ n <<= 1 120 2dup > if rot drop else \ if r>=d Этот высер всю парадигму прог-я ломает. Это что то похожее на обфускацию. Если на коменты посмотреть, то это вполне обьясняет всё такое, у них своя математика понятия, в каждом домике свои гномики". Ты пришёл сюда продвигать что то, реклама ? Обычно создаётся тема своего рода песочница, что бы не засирал остальное. Какое отношения диз имеет к какому то древнему яп я хз. И зачем это нужно было сюда писать тоже хз.
Вполне понимаемый код (. Засилье слов >R (перенести значение со стэка данных на стэк возвратов, а потом брать по R@ копию этого значения ) обычно применяется для временного сохранения элемента стэка на стэке возврата. Практика использования Форт может существенно различаться у разных пользователей его как в хорошую так и в частную сторону. После \ слэш - это комментарий Перед IF получается флаг для ветвления, как в ассемблере формирования флагов THEN слово завершение IF между IF ... THEN может ещё быть слово ELSE ... по книгам за авторством Броуди и другим можно ознакомится с Форт. (сейчас рускоязычные книги по Форт с начала 90-х не печатаются) Нет, мне тема реверса и ассемблерного программирования близка. Я спросил определённый вопрос в теме с общим названием подходящим под этот вопрос, чтобы не создавать отдельный топик. В остальном, не я был "зачинщик" обмена "информацией" P.S. Модератор, если посчитает нужным, может отделить часть этого топика в отдельную тему.
Ну Индий, тоже самое можно про твои визоры сказать, которые ты пихаешь во все темы, но которые никто не понимает и которые никому не нужны. Каждый упарывается, как хочет, ты там визорами, я там обфускацией, кто-то тут хр пытается на современное железо натянуть, он же упарывается фортом. Я сам не понимаю, зачем в 2021 писать на фортах, разве что для ублажения своего мозга засчет решение какой-то задачи на чисто стековой вм, но я так же не понимаю, зачем кому то тут нужны визоры, так что...
Это, возможно, что то из области иррационального поведения (ну как, например, коллекционирование чего то Статья What the Hell is Forth (Что, черт возьми, такое Форт?