eXeL@B —› Софт, инструменты —› VDisAsm |
<< . 1 . 2 . 3 . 4 . 5 . 6 . >> |
Посл.ответ | Сообщение |
|
Создано: 01 сентября 2012 04:26 · Поправил: vden · Личное сообщение · #1 Версия 2 C# + WPF, в разработке Движок анализатора используется во внутренних проектах Версия 1 Написана на Delphi, открытый исходный код Legacy В общих чертах: - дизассемблирование x16, x32, x64 (через - дизассемблирование ARM - FastTracer для быстрого анализа кода и проставления ссылок Исходники: | Сообщение посчитали полезным: SReg, _ruzmaz_, =TS=, plutos, reversecode, ressa, Fedonin, Dart Raiden, 4kusNick, VodoleY, sendersu, verdizela, Wald, DenCoder, DICI BF, screen66 |
|
Создано: 23 апреля 2015 18:08 · Личное сообщение · #2 |
|
Создано: 23 апреля 2015 18:11 · Личное сообщение · #3 |
|
Создано: 23 апреля 2015 18:14 · Личное сообщение · #4 |
|
Создано: 27 апреля 2015 15:05 · Поправил: vden · Личное сообщение · #5 |
|
Создано: 16 июля 2015 15:20 · Поправил: vden · Личное сообщение · #6 Потихоньку перехожу с Delphi. Старый проект поддерживатся не будет. Новый проект думаю начать на C++ (универсальность) или C# (упрощает кодинг, авто сбор мусора). Надесь скоро сделать тестовую версию анализатора. По предварительным тестам (еще в дельфишном варианте), результаты довольно неплохие. Анализатор строит граф функции, пытается сделать анализ потока данных, но есть пока проблема с отслеживанием переменных в памяти и циклами. Анализатор требует много памяти, но если получится все нормально сделать, то будет получше чем в IDA. Ну а дальше можно прикрутить к нему простой UI, который понемногу можно будет улучшать. Такой вот роадмап. | Сообщение посчитали полезным: Hellspawn, deniskore, v00doo, SReg |
|
Создано: 16 июля 2015 18:09 · Личное сообщение · #7 |
|
Создано: 16 июля 2015 18:33 · Личное сообщение · #8 |
|
Создано: 16 июля 2015 18:40 · Личное сообщение · #9 |
|
Создано: 16 июля 2015 18:55 · Личное сообщение · #10 |
|
Создано: 16 июля 2015 19:18 · Личное сообщение · #11 |
|
Создано: 16 июля 2015 21:45 · Поправил: v00doo · Личное сообщение · #12 reversecode пишет: но в любом случае их будет побольше чем ждать донейты Если после запрошенной суммы проект не будет готов, то по условиям кикстартера деньги должны быть возвращены всем пожертвовавшим. Ps К тому же, обычно на кикстартере предлагается система "плюшек" для донатеров, т.е. если сумма превышает какую-то часть, то пожертвовавший получает какую-то фичу в проекте и если в играх это рисованные персонажи, место в титрах, и прочее, то что добавлять в дизассемблер? Всех в абаут? Место хватит то? А если серьезно, то там же уже собрали как-то раз денег на криту (графический редактор, krita.org), который теперь может похвастаться плюшками, которые обгоняют даже некоторые фичи коммерческих редакторов: https://www.kickstarter.com/projects/krita/krita-free-paint-app-lets-make-it-faster-than-phot Так что даже очень неплохая идея. |
|
Создано: 11 августа 2015 15:50 · Поправил: vden · Личное сообщение · #13 Провожу эксперементы Первый этап - трансляция X86 кода в промежуточный код Для простоты выбрана функция 51F2D0 - состоит из одного базового блока - немного типов инструкций (push, pop, mov, lea, call, ret) - длинная серия повторяющихся инструкций - используются целые регистры (например EAX, а не AX, AH, AL) - есть обращения к памяти - обращения к памяти по идее просто отследить (на следующих этапах) - есть CALLы, но сейчас никак не обрабатываются (заменяются NOPами) Еще нужно проверить правильность трансляции и можно попробовать написать для блока оптимизирующий проход для свертывания констант, а затем простой трейсер. Немного о формате текста: // - это комментарий, в нем указывается текущая инструкция + иногда другие моменты O32, A32 - это размер операнда и адреса в битах Константы выводятся в hex, двоеточие, битовый размер Созданные переменные идут с префиксом "v" + номер. Команды, думаю, более-менее стандартные. SignExtend - расширяет выражение до нужного числа бит, учитывая знак (самый левый бит). ZeroExtend - просто расширяет выражение до нужного числа бит. | Сообщение посчитали полезным: Gideon Vi, zNob |
|
Создано: 11 августа 2015 20:43 · Личное сообщение · #14 vden capstone не лучше медианы? ----- От многой мудрости много скорби, и умножающий знание умножает печаль |
|
Создано: 11 августа 2015 21:34 · Личное сообщение · #15 Capstone должен быть лучше тем, что он более-менее поддерживается. Он вроде на основе дизасмов из llvm. Возможно я и использую его. Тут я нарисовал примерно схему анализатора Дизасм относится к блоку справа (фронтенд, для перевода машинных инструкций во внутреннюю форму). И в принципе подойдет любой дизасм, а анализ уже происходит над кодом в промежуточном представлении. |
|
Создано: 06 февраля 2016 21:48 · Поправил: vden · Личное сообщение · #16 Понемногу переписывается, точнее пишется заново, код на C# + WPF. Пока первая цель - сделать приемлимый анализатор и минимальный интерфейс. Немного изучил вопрос по crowdfunding-у. Для подобного проекта, скорее всего, не сработает. Для демо есть несколько интересных идей. Надеюсь к лету большая часть функционала будет готова. PS постараюсь сделать цикл постов о разработке анализатора на конкретном примере. Думаю многим будет интересно. | Сообщение посчитали полезным: daFix |
|
Создано: 12 февраля 2016 16:38 · Личное сообщение · #17 Информация довольно краткая. Пока подбираю какой-нибудь несложный пример. |
|
Создано: 12 февраля 2016 18:02 · Личное сообщение · #18 |
|
Создано: 12 февраля 2016 18:28 · Поправил: vden · Личное сообщение · #19 |
|
Создано: 10 апреля 2016 11:49 · Поправил: vden · Личное сообщение · #20 Итак первая черновая версия (target net framework 4.6.1) Пока еще толком ни на что не способна, но довольно неплохие перспективы (в идеале - декомпилятор) В примере кратко показан перевод машинного кода в промежуточный вид + некоторые оптимизации. Функция простая по структуре (1 базовый блок), но сложная по функционалу (много вычислений). Это практически новый проект, направленный на анализ кода. | Сообщение посчитали полезным: daFix |
|
Создано: 10 апреля 2016 15:28 · Личное сообщение · #21 |
|
Создано: 10 апреля 2016 19:15 · Личное сообщение · #22 |
|
Создано: 18 апреля 2016 18:17 · Поправил: vden · Личное сообщение · #23 На выходных, думаю, будет бинарник, чтобы попробовать. Вот большой пример: Зеленый узел - точка входа Красные узлы - точки выхода / места где потерян поток управления Черные грани - безусловные переходы Зеленые грани - переходы по условию Красные грани - переходы по обратному условию Оранжевые грани - безусловные переходы по таблице прыжков | Сообщение посчитали полезным: Gideon Vi |
|
Создано: 22 апреля 2016 15:00 · Поправил: vden · Личное сообщение · #24 Добавлено: control flow visualization при помощи MSAGL. В msagl есть свои баги, но в целом графы работают. В данный момент просто для визуализации структуры функции. Есть pan & zoom. Довольно просто рассмотреть структуры if-then, if-then-else. |
|
Создано: 06 мая 2016 13:58 · Личное сообщение · #25 |
|
Создано: 23 мая 2016 09:59 · Поправил: vden · Личное сообщение · #26 |
|
Создано: 23 мая 2016 22:04 · Личное сообщение · #27 |
|
Создано: 24 мая 2016 07:20 · Личное сообщение · #28 |
|
Создано: 24 мая 2016 10:25 · Поправил: DenCoder · Личное сообщение · #29 void пишет: Чем обусловлен переход с Delphi на шарп? Шарп легче для перехода с дельфи на си, c# напоминает дельфи, привычнее, во многом удобнее. Но есть некоторые проблемы переносимости на другие компы. Как минимум нужный фреймворк нужно ставить... Остальные проблемы - меня не было в тот день на работе, когда их решали, но скажу, что проще они решаются, если поставить ту же среду разработки, на которой делалось приложение. Bronco пишет: винапи быстрее и надёжней, на отдачу дотнет всё таки жадный. Бесспорно. И никому не советую конечный продукт оставлять на шарпе. Шарп для макета хорошо подходит. Всё то же, что делает шарп, можно сделать на чистом C++ без дотнета. Но, кстати, управляемый код можно линковать и с неуправляемым. Графика на шарпе, функционал в dll на си/дельфи. vden Для элемента графа неплохо было бы регулируемых размеров, с возможностью плавать, окошко с кодом. Неограниченное их количество. Хороший шаг, я считаю, к тому, чего не было у иды. ----- IZ.RU |
|
Создано: 24 мая 2016 10:45 · Личное сообщение · #30 |
|
Создано: 24 мая 2016 10:51 · Поправил: vden · Личное сообщение · #31 Пару проблем с back/forward исправил. Добавил сохранение экспортируемых символов в сессию. DenCoder пишет: окошко с кодом Кода специально нет в графе, чтобы видеть только структуру функции. Давно в планах сделать при нажатии на узел переход к месту в коде. Так мне кажется лучше. Но пока я не решил оставить текущий контрол для текста (avalonedit) или что мне кажется лучше, сделать свой, оптимизированный под вывод выражений, ссылок и подсветки. Фреймворк мне не кажется большой проблемой. На сейчас нужно решить в первую очередь: - анализ потока данных, отслеживание значений в переменных и памяти - детект структур языков высокого уровня - циклы, if-then-else можно улучшить, switch-case. - рекурсивный анализ начиная с oep |
<< . 1 . 2 . 3 . 4 . 5 . 6 . >> |
eXeL@B —› Софт, инструменты —› VDisAsm |