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 |
|
Создано: 04 сентября 2012 12:07 · Поправил: vden · Личное сообщение · #2 @Getorix ARM своими силами. Но если найду хорошую библиотеку для разбора структуры ARM инструкций, можно будет сэкономить времени. @=TS= ручное изменения типа операндов (в частности, задание типа указателей) предусмотрено в проекте? Сейчас такой возможности нет. Но планируется. Я понимаю насколько важно правильно расставить для операндов типы: смещения, указатели, типы чисел, enums, поля структур. Как предполагается задавать пользовательские типы данных? Типы будут делиться на 2 вида: простые и составные. Простые (например uint32) должны переводить последовательность байт в "текст" и наоборот (если пользователь захочет изменить значение). Простые типы сейчас встроены, но в идеале должны подгружаться как плагины. Составные это, например, массив или структура, составляются из простых. Хочу сделать наследуемые структуры. Составные типы должны быть в своей определённой нотации. Чтобы их было легко создавать, хочу сделать фронт-энд для C и Pascal. Т.е. чтобы на вход дать C или Pascal текст типа, на выходе тип во внутреннем представлении. Но это все пока только в черновиках, т.к. потребует подсистемы типов и библиотеки типов. Навигацию назад можно подвесить также и на BkSpace? Да. Это даже логичнее чем Escape. Добавил в текущую версию. @sys_dev Передрать из IDA популярные горячие клавиши Передрать имхо неправильное слово. Т.к. все привыкли к раскладке в IDA, то сейчас клавиши назначены аналогично. За некоторым исключением, например CTRL+S - сохранить вместо секций. А вообще нужно делать редактируемые раскладки. |
|
Создано: 04 сентября 2012 22:55 · Личное сообщение · #3 Передирать всё подряд не надо -- там хватает лишнего\неудобного. А вот взять некие основные стоит. Например D -- назначение двоичных типов byte/word/dword(/возможно qword) (как сейчас) Alt-D -- выбор бинарного типа из списка A -- строка, наиболее подходящая к текущему бинарнику Alt-A -- выбор типа строки из списка O -- тип является указателем (смещением) Alt-O -- выбор типа указателя / смещения из списка и т.д. ----- DREAMS CALL US |
|
Создано: 23 сентября 2012 04:09 · Поправил: =TS= · Личное сообщение · #4 С билдом 2012-09-21 уже немножко веселее. Характер числа (абсолютное смещение {нетипизированный указатель} / значение) выставляется. Cмещения подсвечиваются. Баг с именованием адресов пофиксился: Ждём возможности указания типа адресуемых данных и вида смещения (абсолютное {указатель} / относительное {кода/данных} / относительное {структуры типа данных}) ----- DREAMS CALL US |
|
Создано: 26 сентября 2012 19:16 · Поправил: vden · Личное сообщение · #5 Добавлен В последней версии, данные отображаются по колонкам: адрес, текст, ссылки, коменты. Так наверно проще будет ориентироваться. =TS= Да, смещения сейчас только абсолютные. Займусь ими плотнее когда закончу текущие оптимизации. |
|
Создано: 26 сентября 2012 19:53 · Личное сообщение · #6 |
|
Создано: 22 января 2013 23:10 · Личное сообщение · #7 |
|
Создано: 23 января 2013 18:57 · Поправил: vden · Личное сообщение · #8 Жалко расстраивать. Конечно, прошло много времени, но я пока решил переделать много вещей: * полностью переделать движок базы данных (почти готов) * добавить плагины большая часть функционала будет именно в плагинах, ну и понятно, это улучшит расширяемость/заменяемость * заменить анализаторы для разных процессоров на один универсальный. грубо говоря анализ будет не для разных процессоров, а для одинакового промежуточного кода (тут работы ого-го : ) * наконец-то появятся функции (потому что они будут нужны для анализатора) * добавить аналог ids (это просто), т.е. xml файлы с маппингом ordinal -> name для библиотек * добавить создание и применение сигнатур * всякие мелочи, вроде калькулятора, можно будет делать плагинами. либо гуи можно будет вообще выложить опенсорc (delphi xe2+), если кто-то кроме меня захочет его править * движок по-идее можно будет использовать независимо от гуи * думаю довести до ума типы, сделать библиотеки типов Сроков я не называю, потому что это всё делается в фоновом режиме. Спрашивайте если что : ) | Сообщение посчитали полезным: Dart Raiden, =TS=, zeppe1in, icerix, 4kusNick, Fallout |
|
Создано: 01 августа 2013 22:29 · Личное сообщение · #9 |
|
Создано: 21 октября 2013 16:01 · Личное сообщение · #10 |
|
Создано: 21 октября 2013 16:16 · Личное сообщение · #11 |
|
Создано: 21 октября 2013 16:21 · Личное сообщение · #12 Dr0p пишет: Тонны их уже, но вот только годных там не появляется Так напиши же годный, для быстрого анализа бинаря, hiew не плох, но адова консоль все портит, hackers disassembler, тоже вполне годный быстро посмотреть, но сам движок морально устарел, а так то, мы все побеждаем ветряные мельницы и единицы релизят, пусть кривое, хромое, и бажное, но оно есть, а шлак, это голословные заявления. |
|
Создано: 21 октября 2013 16:23 · Личное сообщение · #13 |
|
Создано: 21 октября 2013 16:30 · Личное сообщение · #14 |
|
Создано: 21 октября 2013 16:33 · Личное сообщение · #15 |
|
Создано: 21 октября 2013 16:38 · Личное сообщение · #16 |
|
Создано: 21 октября 2013 17:01 · Поправил: vden · Личное сообщение · #17 Dr0p пишет: Очередной дизасм, чем он лучше той же олли ? Тонны их уже, но вот только годных там не появляется, а значит шлак остальное. Сейчас это дизасм начального уровня. Сделать то хочется много, но со временем пока туго. В любом случае, если есть интересные идеи, пиши в личку или через форму на сайте. Будем прибавлять "годности" со временем А если есть реализация идей, еще лучше. |
|
Создано: 21 октября 2013 18:19 · Личное сообщение · #18 |
|
Создано: 28 октября 2013 05:41 · Личное сообщение · #19 |
|
Создано: 28 октября 2013 10:46 · Личное сообщение · #20 |
|
Создано: 28 октября 2013 12:25 · Личное сообщение · #21 |
|
Создано: 28 октября 2013 12:42 · Личное сообщение · #22 Тестирование проводилось достаточно просто-были взяты несколько основных дизасмов, которые прогонялись по всем инструкциям и максимально сравнивался выход. Где не совпало-проверялось руками по манам. По результатам могу сказать, что самый нечеловеческий интерфейс вместе с минимумом полезной информации с большим отрывом взял мелкомягкий мсдис. Самыми кривыми оказались беа и дисторм, в каждом за сотню ошибок, где-то по 120-130. Где-то 3 место по ошибкам заняла медиана, порядка 80 ошибок. Самым наименее бажным оказался xed (ошибок 10-20), но по навороченности и излишней нагруженности интерфейса он уходит от беа и дисторма с большим отрывом. Там одних размеров операндов штук 40. Может это где-то и полезно, но на мой взгляд, они залезли на слишком высокий уровень и сильно перегрузили. Относительно стабильным середнячком оказался удис, всего-то 30-40 ошибок. Но и информации он даёт заметно меньше, чем беа/дисторм. Олькин дизасм тестировался достаточно мало, х64 не держит, а х86 версия была достаточно забагованой, когда я смотрел крайний раз. Всё это проводилось достаточно давно, тестирование было не полным. И пишу на память, так что данные всяко не точные. А какой из них выбирать, решайте сами А там как знать, может и дизасм, для которого было это тестирование, решат выпустить на паблик, это я хз. | Сообщение посчитали полезным: Isaev, vden, DenCoder, HandMill, VodoleY |
|
Создано: 28 октября 2013 15:23 · Поправил: vden · Личное сообщение · #23 Был еще такой тест Если не ошибаюсь, то так: - Over supported: дизасм инструкцию разбирает, а процессор не поддерживает - Not supported: дизасм инструкцию не разбирает, а процессор поддерживает - Incorrect: дизасм инструкцию разбирает неправильно | Сообщение посчитали полезным: DenCoder |
|
Создано: 28 октября 2013 16:50 · Поправил: DenCoder · Личное сообщение · #24 vden Сомнительный документ. Были проверены некоторые тесты, результаты: 1. Для иды информация устарела. Code:
В 5.5 дизассемблируется правильно. 2. Для OllyDbg натянуто, пример неудачен Code:
несущественно и некритично, поскольку fstcw и fnstcw отличаются префиксом WAIT с опкодом 9b(fstcw = wait fnstcw). Для знающего допустимо отсутствие 'n' в мнемокоде Но информация полезная, наводит на мысль провести свои тесты используемых инструментов. И также следом не мешало бы проверить надёжность виртуальных машин антивирусов, поскольку по ходу составления теста для поверки иды совершенно безобидный, взятый случайно мой exe-шник, после правки опкода был объявлен как Code:
----- IZ.RU |
|
Создано: 28 октября 2013 20:52 · Поправил: dosprog · Личное сообщение · #25 VDisasm 1.4: ---------------------------------------------------------------------- По поводу тестов http://roberto.greyhats.it/pubs/issta10-nversion.pdf - что-ж, кое-что полезное там можно почерпнуть. Понравились примеры багов. Тестанул сразу по этим примерам одну старинную примочку: 1) 000000000:2659_____pop ecx _____- Ok - лишний префикс всё равно игнорируется. 2) 000000002:0F2183___mov ebx,dr0 _____-Ok 3) 000000005:D4CD_____aam ; 0CDh ______- ВОПРОСЫ! 4) 000000007:8276E5DC_xor byte ptr [esi-0001Bh],0FFFFFFDCh _______-*Error* - Но не страшно. Выплывет при трансляции. 5) 00000000B:D97FD2___fstcw [edi-0002Eh] ______-Ok 6) 00000000E:DBE0_____<invalid> _______ OK!!!!!! Всё-таки. 7) 000000010:8E0B_____mov cs,[ebx] ______OK!!!!!! - Но стоило бы вывести предупреждение. Хотя ассемблер такое и не оттранслирует. Здесь ошибка только одна - пример 4) - надо разбираться. По примеру 3) - tasm как-то странно реагировал на аргумент не равный 10d, поэтому ";;0CDh". Редко, но выплывает. Неприятно. По примеру 6) - Это не ошибка. Если процессор 32-битный, то какая же там <fneni> ? По примеру 7) - И это не ошибка (дизассемблера). Ошибкой будет выполнять такое на процессоре, но инструкция декодируется именно так. ------------------------------------------------- Примеры хороши. DenCoder, - о префиксе 'n' - как же обойтись без мнемоник с 'n' ? А если в коде действительно нет WAIT? - А ассемблер тогда (потом) сгенерирует эту WAIT, которой не было в исходном BIN-коде. (Я когда-то столкнулся с тем, что асмом генерировалось по 2 WAIT - один действительный (от мнемоники WAIT), а один добавочный из-за отсутствия в дизассемблере мнемоник с 'n'). Скорей уж допустимо отсутствие мнемоник без этих 'n'. |
|
Создано: 29 октября 2013 00:30 · Личное сообщение · #26 |
|
Создано: 30 октября 2013 05:03 · Личное сообщение · #27 vden это все что угодно но это не тест, что таблица 3, что таблица 4 - просто ни о чем, прогнали конкретные версии на конкретном мусоре, который их фузер нафузировал, разумеется, нашли какие-то ошибки, в интеловском дизассемблере их просто не может не быть dosprog с чем разбираться в AAM ? c тем что операнд - это imm8 и байт делится на байт |
|
Создано: 30 октября 2013 08:10 · Поправил: dosprog · Личное сообщение · #28 [OFFTOP] sen, спасибо, что значит <aam> - тут разбираться не с чем. Я привёл вариант, как его пришлось реализовать (<aam;0CDh>) из-за чудачеств tasm.exe. Вопрос только в реакции tasm.exe на инструкцию <aam 0CDh>. В tasm.exe у <aam> нет аргументов и подразумевается 10. Ещё вариант - <db 0D4h,0CDh ; aam 0CDh>. [/OFFTOP] vden, так, выходит, BIN-16bit вообще не дизассемблируется VDisasmo'ом ?... |
|
Создано: 30 октября 2013 13:14 · Поправил: vden · Личное сообщение · #29 |
|
Создано: 30 октября 2013 21:06 · Поправил: dosprog · Личное сообщение · #30 |
|
Создано: 31 октября 2013 15:32 · Поправил: vden · Личное сообщение · #31 *** Я добавил загрузчик для DOS файлов. Но есть проблема с адресами. Из-за того что в дос адресация относительно сегментов, а в vd виртуальная память плоская. Например mov ax, cs:[0] посчитает ссылкой на адрес 0, но если cs=10h, то реальный адрес 100h. т.е. нужно отслеживать сегментные регистры, и дизасм должен вычислять адреса относительно сегментов. Не уверен, что это будет в скором времени сделано. *** Еще включил 16битный дизасм mediana. *** И залил примеры плагинов на делфи (те же загрузчики, dos, pe32/64, elf которые используются). Так что если у кого-то будут исправления/патчи, можно добавлять в issues на googlecode. Сами АПИ еще будут значительно меняться, в частности, для загрузчиков. Но в целом небольшие плагины уже можно писать. |
<< . 1 . 2 . 3 . 4 . 5 . 6 . >> |
eXeL@B —› Софт, инструменты —› VDisAsm |