| 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 |
|
|
Создано: 01 мая 2017 15:46 · Личное сообщение · #2 анти анти дебаг, китайский... https://github.com/stonedreamforest/NaiHeQiao авто хуки на CreateProcess etc, vs малварь https://github.com/David-Reguera-Garcia-Dreg/DbgChild итд... https://github.com/search?q=topic%3Ax64dbg-plugin&type=Repositories хм, а Вудман RCE Tools - Collaborative RCE Tool Library прикрыли... х64дбг бажное, Иду даж приятней применять... ![]() |
|
|
Создано: 01 мая 2017 19:31 · Личное сообщение · #3 |
|
|
Создано: 01 мая 2017 19:48 · Личное сообщение · #4 difexacaw > - Как это реализовано, что за конструктор ? да все нужные данные на ладошке SELECTIONDATA select; BASIC_INSTRUCTION_INFO currentdata; Code:
GuiSelectionGet(GUI_DISASSEMBLY, &select); Code:
----- Чтобы юзер в нэте не делал,его всё равно жалко.. ![]() |
|
|
Создано: 01 мая 2017 19:54 · Личное сообщение · #5 |
|
|
Создано: 01 мая 2017 19:54 · Поправил: VodoleY · Личное сообщение · #6 Bronco та да.. ток это можно сделать ток в динамике (трассировка). статик анализ будет чертовски адский и глючный.. либо в конце концов получится микровиртуальная машина. ЗЫ к чему я это веду... динамик построенние трассы.. чертовски тормознутая тема. Добавлено спустя 3 минуты difexacaw пишет: А как связываются эти BASIC_INSTRUCTION_INFO в списки да блин все просто.. у тебя 1ая инструкция.. а потом инструкция + ее размер.. типа следующая инсрукция.. и так до посинения. я таку байду чисто на дизасемблере делал Walker называл. все норм работает.. пока нету jmp eax или call [ebx] ну в этом роде .... те работает ток для простых вещей. но зато кода.. 30 строчек ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
|
Создано: 01 мая 2017 20:09 · Поправил: Bronco · Личное сообщение · #7 VodoleY пишет: это можно сделать ток в динамике (трассировка). в процессе чтения_записи в секцию_страницу, чем не динамика ? либо уже позже с пром_кодом в живую в самой странице, VodoleY пишет: пока нету jmp eax или call [ebx] ну в этом роде duint addr; //addrvalue (jumps + calls) если поле в структуре равно 0, то это либо переходники в таблицы, либо переходники по содержимому указателей в регистрах общего пользования. тут так же всё просто, повторюсь плагинсдк неплохой. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. ![]() |
|
|
Создано: 01 мая 2017 20:16 · Личное сообщение · #8 |
|
|
Создано: 01 мая 2017 21:04 · Личное сообщение · #9 |
|
|
Создано: 01 мая 2017 21:42 · Поправил: Bronco · Личное сообщение · #10 |
|
|
Создано: 01 мая 2017 22:08 · Личное сообщение · #11 |
|
|
Создано: 01 мая 2017 22:28 · Поправил: Bronco · Личное сообщение · #12 shellstorm пишет: зачем вообще хвататься за MUA? он хорошо справляется со свёрткой цикличных конструкций, с дистанциями операторов пост и пред условий. автор предоставил хоткеи, воспользоваться этим самое простое решение. есть keystone и xed Ок...а как переключать режим асемблирования ? я этого в сдк не нашёл. и потом, каждый из этих движков на каких то инструкциях спотыкается, кеды на каких то хмм и выше, кейстоун чуть получше, асмжт ещё лучше, но и у него есть пределы. ну а так полностью согласен, возможность своей реализации всегда есть. но и тут подводные ----- Чтобы юзер в нэте не делал,его всё равно жалко.. ![]() |
|
|
Создано: 01 мая 2017 22:39 · Личное сообщение · #13 Bronco пишет: Ок...а как переключать режим асемблирования ? В смысле x86/x64? asmjit флагом x64 \ false\true. Keystone завязан на разрядности отладчика, x86 отладчик и опция выставлена x86, в x64 соответственно x64. Можно совсем радикально подойти, прикрутить fasm.dll, компилить bin и уже его лить, тем более дизасм есть и можно разбить по инструкциям. Это все же проще чем связывать два плагина. Добавлено спустя 3 минуты #ifdef _WIN64 parse.x64 = true; #else //x86 parse.x64 = false; #endif ![]() |
|
|
Создано: 01 мая 2017 22:57 · Личное сообщение · #14 shellstorm пишет: В смысле x86/x64? не в архитектуре препятствие. в интерфейсе дизасма есть выбор движка (space). аналог в аписдк не нашёл. MUA выдаёт эксепшены , в зависимости от возможностей текущуго активного движка. ну а два плага увязать через регистрацию новых скриптовых команд, задача не сложная. так то всё шустро, за минуту до 100 подпрограмм, с размером от 60 до 600 и выше байт, переносит на родные места, а тут их порядка 17000. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. ![]() |
|
|
Создано: 01 мая 2017 23:24 · Личное сообщение · #15 Выставляется в настройках. Code:
Добавлено спустя 17 минут забыл привести сами настройки. ![]() Code:
| Сообщение посчитали полезным: Bronco |
|
|
Создано: 01 мая 2017 23:52 · Личное сообщение · #16 |
|
|
Создано: 02 мая 2017 00:07 · Личное сообщение · #17 Bronco пишет: может что и по кьютвиджетам там есть, помимо стандарта адд ; шоу и тд? все gui здесь: https://github.com/x64dbg/x64dbg/blob/development/src/gui/Src/Bridge/Bridge.h остальное самому дописывать или подменять через хаки и надеяться, что ничего не рухнет, ну или как вариант получить размеры виджета и рисовать все поверх родного. ![]() |
|
|
Создано: 02 мая 2017 08:38 · Личное сообщение · #18 shellstorm пишет: все gui здесь оки. посмотрю shellstorm пишет: достаточно набросать небольшой парсер и обойтись без костылей с MUA. вот теперь полностью согласен. для этой задачи вышло где то 30 строчек. при отключенном гуе шустро получается. порядка 300х подпрограм с общими размером 30000 байт за минуту. весьма оптимистично. ну и как плуг теперь назвать? ![]() с AssemblerEngine ещё не разбирался но это нужно. без тру катч падать будем. вот первая инструкция что попалась с которой -кеды и кейстоун не дружат, асмжт проглатывает не морщась. COMISS XMM0, XMMWORD PTR [RCX + 0x188] ----- Чтобы юзер в нэте не делал,его всё равно жалко.. ![]() |
|
|
Создано: 02 мая 2017 09:09 · Личное сообщение · #19 |
|
|
Создано: 02 мая 2017 13:44 · Поправил: shellstorm · Личное сообщение · #20 Bronco пишет: оки. посмотрю еще этот шаблон можно глянуть, если требуется что то кастомное: https://github.com/x64dbg/QtPlugin Bronco пишет: порядка 300х подпрограм с общими размером 30000 байт за минуту. весьма оптимистично. можно еще выжать скорости добавив многопоточность, задача неплохо масштабируется. ![]() |
|
|
Создано: 02 мая 2017 13:46 · Личное сообщение · #21 ajax пишет: репорти авторам пусть кто ближе, или в теме тот и репостит. ![]() LOCK XADD DWORD PTR [0x1421D552C], EAX - RW XED&CAPSTON, аasmjt онли R MOVSS DWORD PTR [R8], XMM0 RW CAPSTON& , XEDparser онли R COMISS XMM0, XMMWORD PTR [RCX + 0x188] RW аasmjt , XED&CAPSTON онли R чтобы все в ауте такого не было. одна инструкция с указателем либо пересчитвать, либо мнемоника, так что таскать бинариным не вариант Ексепшен "could not allocate memory", как из плага перехватить_обработать пока не разабрался ----- Чтобы юзер в нэте не делал,его всё равно жалко.. ![]() |
|
|
Создано: 02 мая 2017 18:36 · Поправил: ajax · Личное сообщение · #22 |
|
|
Создано: 03 мая 2017 03:54 · Поправил: Bronco · Личное сообщение · #23 ajax пишет: я не из этой "оперы" да у меня так же гранаты не той системы... ![]() Bronco пишет: как из плага перехватить_обработать пока не разабрался у нас булка, тут и перехватывать ничего не надо., BRIDGE_IMPEXP bool DbgAssembleAt(duint addr, const char* instruction) а вот с AssemblerEngine пока разбираюсь shellstorm пишет: можно еще выжать скорости добавив многопоточность по моему частному случаю слишком много , поэтому в первую очередь качество. чтобы бокарезы потом не искать. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. ![]() |
|
|
Создано: 03 мая 2017 05:10 · Личное сообщение · #24 Bronco пишет:а вот с AssemblerEngine пока разбираюсь Скиньте проект вашего макета плагина и опишите кратко, что именно хочется и что не получается, допилю эту часть. Bronco пишет: по моему частному случаю слишком много , поэтому в первую очередь качество. чтобы бокарезы потом не искать. Да нет, если использовать нормальную библиотеку никаких проблем не будет, тем более думаю в будущем все равно появятся cfg, иначе как код чистить.
![]() |
|
|
Создано: 03 мая 2017 05:19 · Поправил: Bronco · Личное сообщение · #25 shellstorm пишет: Скиньте проект вашего макета плагина и опишите кратко, что именно хочется и что не получается, допилю эту часть. по умолчанию использую asmjt, энум в хидер бриджа закинул, пока так, но уже не закрываеимся. Code:
вопрос по SetCIP, это универсальный IP под обе архитектуры ? по задаче которую надо решить. у меня в двух секциях с таблицами перебито порядка 40000 указателей, по секции кода порядка 17 000 уникальных безусловных переходов на оригинальный код приложения. Нахожу прыжки, ищу в таблицах указатели с аналогичной дистанцией, перебиваю на секцию кода, возвращаю тело подпрограммы на ролное место ..)) ----- Чтобы юзер в нэте не делал,его всё равно жалко.. ![]() |
|
|
Создано: 03 мая 2017 06:04 · Личное сообщение · #26 Bronco пишет: вопрос по SetCIP, это универсальный IP под обе архитектуры ? Да, универсально, зависит от разрядности отладчика. За настройки отвечают функции BridgeSetting\Get\Set\Update : читаем\пишем\обновляем. Bronco пишет: Нахожу прыжки, ищу в таблицах указатели с аналогичной дистанцией, перебиваю на секцию кода В принципе вполне рабочий вариант, в IDA был плагин который делал аналогичное. Вечером гляну что там можно сделать с движками и запилю шаблон плагина. ![]() |
|
|
Создано: 03 мая 2017 06:53 · Личное сообщение · #27 shellstorm пишет: BridgeSetting\Get\Set\Update хм...я то думал Диа сдк в снапшотах обновляет, но собственно оно работает. немного не так как Вы предложили, но суть та же Code:
но надо делать в цикле while (true) до посинения...
----- Чтобы юзер в нэте не делал,его всё равно жалко.. ![]() |
|
|
Создано: 03 мая 2017 07:29 · Личное сообщение · #28 Bronco пишет: немного не так как Вы предложили, но суть та же Так выше скидывал куски кода из объявлений, то бишь из самих сурсов x64dbg, сам я не писал, показал лишь интерфейс и контекст использования. ![]() В аттаче ман по api x64dbg. 2d2d_03.05.2017_EXELAB.rU.tgz - x64dbg.zip
| Сообщение посчитали полезным: Bronco |
|
|
Создано: 03 мая 2017 08:48 · Личное сообщение · #29 shellstorm пишет: В аттаче ман по api x64dbg. ок..феньку тыкнул. вышло где то так. Code:
плаг дебажу в студии, но не могу понять почему прерывания в ней на участке кода не стабильные, надо так понимать что в среде винды будет то же самое? ----- Чтобы юзер в нэте не делал,его всё равно жалко.. ![]() |
|
|
Создано: 03 мая 2017 13:07 · Личное сообщение · #30 |
| . 1 . 2 . 3 . 4 . 5 . >> |
| eXeL@B —› Софт, инструменты —› x64dbg - Плагины |











Для печати