eXeL@B —› Софт, инструменты —› x64dbg - Плагины |
<< . 1 . 2 . 3 . 4 . 5 . >> |
Посл.ответ | Сообщение |
|
Создано: 01 мая 2017 07:40 · Поправил: Bronco · Личное сообщение · #1 #ifdef немного оффтопика, шапка всё таки. Отладчик набирает потихоньку обороты, базовая платформа достаточно гибкая. Сам проект опен сорс, как и остальные крос платформенные движки в нём из пользованные. Неплохой pluginsdk, к сожалению мало описания в help, но по хидерам разобраться довольно не сложно. Собственно в чём вопрос ? Парни всё есть, но никто ничего не пишет. //Для OllyDbg на тутсях целый раздел и с плагинами и с скриптами. Вот по случаю решил пополнить копилку. Хз что, но пока мутил было интересно. Рассчитываю, что это даст старт, более практичным обсуждениям и в плане программирования и в плане решения разных задач. Топик для всех плагинов, которые либо есть, либо будут. Многие из тех что есть так же опен сорс. В общем не Грааль конечно, но лудоманить на этом не приветствую. #else О плагине ! Из того что в разработке, но частично готово. Меню отладчика - Чистим историю открытия приложений, скриптов и командной строки: Меню отладчика //- Зарегистрировано пока 9 новых команд для скриптового движка. - RipAsmCode - описание в мсг - RipAsmInstruction - описание в мсг - FindAsmInstruction - описание в мсг - FunctionAsmEnd - описание в мсг - FunctionLogClear - FunctionLabelClear - FunctionScriptAbort - FunctionFindPointer - описание в мсг - FunctionGetTime Меню отладчика - Параметры Деобфускатора//сохраняются в ини Меню отладчика -- Параметры "обхода лапши"//сохраняются в ини Меню отладчика -WannabeUIF под обе архитектуры Меню диззасма: - Деобфускатор // бетка - В выделеном листинге перемещаем все нопы вниз. - Обходим лапшу из jmp&jcc//статик трассировка в выделенную страницу - Освобождаем память от выделенной страницы, и удаляем все записи в лейбах. #endif Под х86 тестировалось инерциально, под х64 пока только на паре тройке семплов..)) Из нерешённого, это кьют_виджеты, идея перетащить табшиты лога и скрипта в окно дампа как то не решается. И пройтись по элементам дальше хендлов дочерних окон с ClassName Qt5QWindowIcon, пока не получается. Линк запостил. Дальше посмотрим, что из этого топа выйдет. //ахах топ потыхеньку умирает, сколько бы не постил ----- Чтобы юзер в нэте не делал,его всё равно жалко.. | Сообщение посчитали полезным: mak, zNob, Haoose-GP, v00doo, jinoweb, ClockMan, fasteralex |
|
Создано: 07 мая 2017 05:38 · Личное сообщение · #2 shellstorm пишет: Если интересно погонять плагин ок.shellstorm пишет: все же пересобрал часть отладчика респект конечно, но у меня поначалу то же оптимистично всё было, пока не надоело. чтобы на исузах не толкаться, была мысль, на лябе постить все фиксы в сорцах, но воли не хватило. shellstorm пишет: Там просто список апи, никаких интеллектуальных подсказок нет ну хоть что то есть, в и вроде в меню прописывается, а на форме тупо всё вешает ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 07 мая 2017 10:21 · Личное сообщение · #3 |
|
Создано: 07 мая 2017 11:14 · Личное сообщение · #4 |
|
Создано: 08 мая 2017 06:59 · Личное сообщение · #5 Bronco пишет: но у меня поначалу то же оптимистично всё было у меня все сломалось, думал еще немного добить, а оно крашнуло и весь проект на*бнулся. но разобрался с другой штукой. отладчик умеет грузить скрипты при загрузке, нужно кидать скрипт в папку отладчика, где библиотеки и exe, при загрузке исполнит скрипт. теперь к плагинам, на питоне их тоже можно вполне годно писать, местами даже лучше чем на c\c++. нужно установить все из этого списка: лишним не будет: в аттаче приме примитивного плагина. немного о структуре: здесь прописываем настройки сборки, имя плагина, иклуды, библиотеки, опции сборки: setup.py здесь пишем код, по хорошему нужно было еще и pxd создавать, но сойдет и так: install_bp.pyx здесь код функции на c, сделано намеренно, можно было писать и на пюре питон, но кому сложно сразу с ним разобраться, показан выход, эта функция используется в install_bp.pyx: bridge.c все, остальное уже смотреть и разбираться. собирается все батником. ef66_08.05.2017_EXELAB.rU.tgz - x64dbg_plugins.zip Добавлено спустя 33 минуты забыл, в скриптовом движке самого отладчика бага. скопировать: call и вставить в окно скрипта отладчик уходит в даун. непроизвольный запуск программ на него же грешу. | Сообщение посчитали полезным: Bronco |
|
Создано: 08 мая 2017 12:24 · Поправил: Bronco · Личное сообщение · #6 shellstorm пишет: у меня все сломалось сочувствую. но там местами действительно не очень весело. наиболее качественная запись это отладочная Code:
но она не всегда булку возвращает, местами раньше на мсг уходит. и дальше аут. далее. на х64 кейстоун и асмжт при записи увеличивают размер инструкции. пример: mov->movabs для XEDParse пока критичны 2 опкода, Code:
но двиг XEDParse наоборот уменьшает местами размер инструкции Code:
Multiline Ultimate Assembler хорош тем, что он не ломает саму функцию, независимо от того изменился ли размер инструкции в цикле ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 08 мая 2017 13:01 · Личное сообщение · #7 Bronco пишет: сочувствую. но там местами действительно не очень весело. Фигня случается. Bronco пишет: но она не всегда булку возвращает, местами раньше на мсг уходит. Там еще какая то из функций форматирования строк не правильно работает, иногда режет команды в собственном скрипте, да и анализатор на них орет, но там такая портянка, не стал забираться в дебри. Автор кидает указатели, а валидность никто не проверяет и на это тоже анализатор косится в некоторых местах. Рановато скрипты внесли в сам двиг, там с ними много чего завязано, ну и 100500 движков незачем было тянуть пока хотя бы один не довели до ума. Падает на каждый чих или зависает так, что лучше бы падало. |
|
Создано: 08 мая 2017 17:19 · Личное сообщение · #8 |
|
Создано: 08 мая 2017 18:40 · Личное сообщение · #9 |
|
Создано: 08 мая 2017 21:13 · Личное сообщение · #10 shellstorm пишет: но хочется же прямо сейчас. ) если я правильно понял, то с этим проблем нет. немного поправил_протестил_и_уверен. чуть позже залью. хотел на форму кое что закинуть, а то при выделении страницы много окон, но что то в студии поломалось, не загружает файл *.rc, и обновляться не хочет, и с переустановкой траблы. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 08 мая 2017 21:50 · Личное сообщение · #11 Bronco пишет: не загружает файл *.rc, и обновляться не хочет, и с переустановкой траблы. Тоже такая фигня случалось, пришлось реестр чистить и заново устанавливать, repair нифига не ремонтировало. Тут о сигнатурах немного думал, можно взять ssdeep и немного его допилить, можно брать блоки между бранчами и вычищать указатели, чтобы универсально было и уже из вычищенного делать сигнатуру, отладчик позволяет читать блоки, сигнатуру разбирать на рекорды, при вхождении первой сканировать следующий блок, если совпало проверяем дальше, эдакий упрощенный вариант антивирусного движка, они работают по такому же принципу. Дизасм есть, адрес есть, от CIP стоящего на бранче бежим до следующего бранча или ret. |
|
Создано: 09 мая 2017 08:12 · Поправил: Bronco · Личное сообщение · #12 shellstorm пишет: repair нифига не ремонтировало. вы*бало по полной, выручил не знаю какие задачи Вы решаете, и чего ожидаете, ша с настройками разберусь, фронтовиков уважу, и чего нить залью. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 11 мая 2017 19:25 · Личное сообщение · #13 |
|
Создано: 11 мая 2017 21:14 · Поправил: difexacaw · Личное сообщение · #14 Bronco > difexacaw, менторский тон не воспринимаю априори, поэтому плезир, отредач свой --> пост <-- сам, и желательно ответом на мой вопрос, через призму текущей темы. "деды воевали" оставь для васма. Может стоит немного поспать, ну что бы разум прояснился и не употреблять, то что юзаете, это на ваш разум плохо действует, впрочем я тоже раньше долбался веществами. Так что понимаю вас лучше чем вы себя. ----- vx |
|
Создано: 12 мая 2017 02:22 · Личное сообщение · #15 hash87szf пишет: страшно, ну прям не верится что читать сигнатуры с файлцо так файл принципиально ничем не отличается от страницы памяти, взял указатель да и бегай по нему, в этом смысле даже проще чем с файлом, не нужно делать проекцию, тем более размеры страницы известны, если надо можно сразу читать структурами\в буфер. да и yara умеет искать в памяти, и она же идет в комплекте с отладчиком. |
|
Создано: 12 мая 2017 17:23 · Поправил: Bronco · Личное сообщение · #16 Dart Raiden пишет: (Linker/Compiler/Tool detector) я так понял что базы с сигнатурами прошиты. не дурно бы, для перспективы, чтобы побольше от Detect-It-Easy by hors в плагин добавить, место же ещё много. у PE-Header-Dump-Utilities один недостаток, всё в лог пишется. Bronco пишет: и чего нить залью. немного погонял на качество, в XEDParse + ещё N критических опкодов. Code:
----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 16 мая 2017 22:32 · Личное сообщение · #17 Bronco the assembler engines are not all on the same page currently, which is basically the reason there are multiple. Personally I would recommend to use asmjit because it is based on the most stable backend. XEDParse was really a project done when no other x64 assembler engine was available and it's mostly outdated with lots of bugs. As for the different sizes of the output. Often compilers don't output the most efficient representation for an instruction so re-assembling them with any assembler engine could cause the instruction to become smaller. You can use the 'Fill with NOPs' option to work around this. shellstorm Not sure what this crash is you mention when pasting a script. Could you paste the script you pasted? Some time ago I fixed a possible crash when loading an empty script, perhaps you are using an older version? difexacaw not sure what the relevance of AVL trees would be, considering that a control flow graph is not really something you model with a tree. The graph representation in x64dbg is pretty efficient, but could probably be improved by using a better hash map in combination with a pool allocator but I didn't find any performance problems on the analysis myself, even on gigantic functions. As for the graph representation, do not use the raw BridgeCFGraphList, BridgeCFNodeList and BridgeCFInstruction. They are only provided as a serialization mechanism to transport the graph representation over a C API. You should instead use BridgeCFGraph (https://github.com/x64dbg/x64dbg/blob/development/src/gui/Src/Gui/DisassemblerGraphView.cpp#L1595). You can then use "node=graph.nodes[graph.entryPoint]" to get the basic block (BridgeCFNode) of the function start. From there you can use "graph.nodes[node.brtrue]" and "graph.nodes[node.brfalse]" to traverse the graph. You can also walk the graph backwards using the "graph.parents" in a similar way. | Сообщение посчитали полезным: difexacaw, shellstorm |
|
Создано: 16 мая 2017 23:05 · Личное сообщение · #18 |
|
Создано: 17 мая 2017 00:31 · Поправил: Bronco · Личное сообщение · #19 mrexodia пишет: recommend to use asmjit угу... оригинал и XEDParse Code:
asmjit и Keystone Code:
все выравнивания нопами asmjit чаще пишет как один байт 90, иногда 2 простых нопа. а в источнике Code:
любая залоченная инструкция и мы с асмжт в ауте. Keystone частенько портит указатели, + увеличивает размер инструкций. В каждом двиге свои траблы. Играться вроде можно сетингом двигов, но изменить не успеваем. - часто на записи вылазит "COULD NOT ALLOCATE MEMORY" даже бул ретурном не возвращают. почему не посмотреть в сторону дизасма от мелких? Как отключить к *беням, регистрацию патченных байтов ? Во первых , предел 10000 байт, дальше отладчик начинает задыхаться. Во вторых, все что пишется байткодом, патчем тупо не регистрируется, в итоге от него смысла нет, приходиться дампить и ребилдить. Ещё чего нить накидать? ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 17 мая 2017 01:50 · Поправил: reversecode · Личное сообщение · #20 а что там должно быть ? загнал в сисеровский дизасм ради интереса Code:
|
|
Создано: 17 мая 2017 02:19 · Поправил: Bronco · Личное сообщение · #21 размер источника для мовика с указателем 7 байт, кеды так и пишут, остальные 2 двига инструкцию кодируют как 10 байт. причём прицепились только к rax. выравнивание нопами по коду довольно много, на примере первого, источник 4 байта, кеды записали как 4, кейстоун как 3, асмжт тупо 1 ноп. тела фунок с пост и предусловиями, и более сложными циклами. попадаются подпрограммы где есть и lock, и movss, и места под гланды. тихий шок. при долгой работе отладчика по скрипту система притормаживает, глянул по диспетчеру нажрал 2.5 гига. стартовал с 70 мб. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 17 мая 2017 12:23 · Личное сообщение · #22 mrexodia пишет: Some time ago I fixed a possible crash when loading an empty script, perhaps you are using an older version? 1. open dbg 2. paste:call 3. close dbg ... Добавлено спустя 18 минут difexacaw пишет: что мы совсем глупые Только ты. Никому не нужен ребилд инструкций или морф блока. Это отладчик, а не малварь или какой то реконструктор. Данная реализация графа позволяет проверить вхождения адресов в блок, большего от него и не требуется, этого достаточно для разбора кода под каким нибудь говнопротом. Если этого недостаточно то отладчик позволяет брать блоки кода или блоки графа и самому строить какие угодно графы с использованием любой библиотеки. |
|
Создано: 17 мая 2017 14:50 · Личное сообщение · #23 |
|
Создано: 17 мая 2017 14:55 · Поправил: v00doo · Личное сообщение · #24 |
|
Создано: 17 мая 2017 16:05 · Личное сообщение · #25 Bronco Покажите на примере. Если это константы между ветвями, то они удаляются автоматически при создании графа, так как на эти данные нет ветвления. Если ветвление косвенное, то задача усложняется - отличить код от данных. Если это паразитные инструкции, то их можно удалить через граф данных - такие инструкции не участвуют в логике работы кода, к примеру результат исполнения инструкции далее не используется(данные/контекст) теряется. ----- vx | Сообщение посчитали полезным: shellstorm |
|
Создано: 17 мая 2017 16:23 · Личное сообщение · #26 difexacaw на примере. Code:
это ячейка не заполнена, таблицы для примера не пойдут, шибко большие..)) как програмно детектить разобрался, а вот как свернуть функу на новом месте не нарушив конструкцию, пока не вкурю. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 17 мая 2017 17:01 · Личное сообщение · #27 Bronco При описании графом две add не будут включены, так как нет ветвления на этот блок. Смотрите пример: 5174_17.05.2017_EXELAB.rU.tgz - gpdt.zip ----- vx | Сообщение посчитали полезным: Bronco |
|
Создано: 17 мая 2017 17:50 · Личное сообщение · #28 |
|
Создано: 17 мая 2017 18:00 · Личное сообщение · #29 Bronco пишет: а вот как свернуть функу на новом месте не нарушив конструкцию, пока не вкурю Собственно клерк как ни странно, но все верно написал. Блок это промежуток между бранчами, смотрим вхождение адреса в блок, если его нет, значит это мусор, можно даже занопить, чтобы не отвлекало внимание. Только здесь тоже есть нюансы, в статике не всегда возможно определить вхождение адреса в блок, ведь можно и jmp eax + цифры. В целом это классическая задача по покрытию кода. Базовый анализ и сам отладчик умеет делать Берете проанализированные блоки и ищите среди них пересечения, адреса пересечений тоже умеет искать, но полноценный анализ без динамики невозможен и здесь остается вести свой лог по всяким jmp reg\call reg. Добавлено спустя 6 минут Рекомендую для ознакомления пару книг по графам написанных человеческим языком и которые можно осилить без особых знаний математики. | Сообщение посчитали полезным: Bronco |
|
Создано: 17 мая 2017 18:30 · Личное сообщение · #30 shellstorm > Блок это промежуток между бранчами, смотрим вхождение адреса в блок Блок" это ветвь. Если проверять по адресам, то это приведёт к классической ошибке - ветвление не на начало инструкции вызовет корреляции, например push 4/jcc $-1. Так как два такие "блока" будут перекрываться по адресам ----- vx |
|
Создано: 17 мая 2017 18:54 · Личное сообщение · #31 shellstorm пишет: но полноценный анализ без динамики невозможен в смысле, трассировка в живую? тогда динамики пока нет. феньки, за полезное инфо, всем потыкал. переписал_обкатываю, утечек нет, исправление размера нет, быстрее в 2,5 раза. сборкой по блокам чуть позже займусь. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
<< . 1 . 2 . 3 . 4 . 5 . >> |
eXeL@B —› Софт, инструменты —› x64dbg - Плагины |