eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Xlab0s, vitlgt (+5 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Софт, инструменты —› Плагины к отладчику Mr.eXoDia x64/x32 dbg
<< . 1 . 2 . 3 . 4 . 5 . >>
Посл.ответ Сообщение


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 1 мая 2017 07:40 · Поправил: Bronco New!
Цитата · Личное сообщение · #1

#ifdef
немного оффтопика, шапка всё таки.
Отладчик набирает потихоньку обороты, базовая платформа достаточно гибкая.
Сам проект опен сорс, как и остальные крос платформенные движки в нём из пользованные.
Неплохой pluginsdk, к сожалению мало описания в help, но по хидерам разобраться довольно не сложно.
Собственно в чём вопрос ?
Парни всё есть, но никто ничего не пишет.
//Для OllyDbg на тутсях целый раздел и с плагинами и с скриптами.
Вот по случаю решил пополнить копилку. Хз что, но пока мутил было интересно.
Рассчитываю, что это даст старт, более практичным обсуждениям и в плане программирования и в плане решения разных задач.
Топик для всех плагинов, которые либо есть, либо будут.
Многие из тех что есть так же опен сорс.
В общем не Грааль конечно, но лудоманить на этом не приветствую.
#else
О плагине !
Из того что в разработке, но частично готово.
Меню отладчика
- Чистим историю открытия приложений, скриптов и командной строки:
Меню отладчика //- Зарегистрировано пока 9 новых команд для скриптового движка.
- RipAsmCode - описание в мсг
- RipAsmInstruction - описание в мсг
- FindAsmInstruction - описание в мсг
- FunctionAsmEnd - описание в мсг
- FunctionLogClear
- FunctionLabelClear
- FunctionScriptAbort
- FunctionFindPointer - описание в мсг
- FunctionGetTime
Меню отладчика
- Параметры Деобфускатора//сохраняются в ини
Меню отладчика
-- Параметры "обхода лапши"//сохраняются в ини
Меню отладчика
-WannabeUIF под обе архитектуры
Меню диззасма:
- Деобфускатор // бетка
- В выделеном листинге перемещаем все нопы вниз.
- Обходим лапшу из jmp&jcc//статик трассировка в выделенную страницу
- Освобождаем память от выделенной страницы, и удаляем все записи в лейбах.
#endif
Под х86 тестировалось инерциально, под х64 пока только на паре тройке семплов..))
Из нерешённого, это кьют_виджеты, идея перетащить табшиты лога и скрипта в окно дампа как то не решается.
И пройтись по элементам дальше хендлов дочерних окон с ClassName Qt5QWindowIcon, пока не получается.
--> Эта <-- тема актуальна, оптимизация по шаблонам(потернам) довольна реальна, но как организовать базу данных для них, пока не решалась.
Линк запостил.
--> от 24 июля 2017<--
Дальше посмотрим, что из этого топа выйдет.
//ахах топ потыхеньку умирает, сколько бы не постил

| Сообщение посчитали полезным: mak, zNob, Haoose-GP, v00doo, jinoweb, ClockMan



Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 3 мая 2017 13:21 New!
Цитата · Личное сообщение · #2

shellstorm, я пока не разобрался сбрасывается ли этот эксепшен при обновлении сетинга, или их накапливают. при заходе в цикл на всякий случай добавил проверку от дубля сетинга вызвавшего эксепшен ("if (setting != set_setting)") вроде не егорится, ща поганяю немного. задетекчу все двиги на слабые места, и можно уже с многопоточностью разруливать.
теперь такой вопрос, довольно важный, это размер текущей подпрограммы. у меня скриптом так.
защита любезно после безусловного перехода залила интами родное место,
Code:
  1. metod_size:
  2. int_size://считаем кол-во интов.
  3. prolog = addr+5
  4. Q1:
  5. cmp 2:[prolog],CCCC
  6. jne Q2
  7. prolog++
  8. jmp Q1
  9. Q2:
  10. prolog++
  11. size_int3 = prolog - addr
  12. prolog2 = current
  13. L2:
  14. find prolog2 ,#C3#
  15. log "addr RET:{p:$result}"
  16. cmp $result, current + size_int3 //сравниваем адреса
  17. ja L1 //если результат больше самого препологаемого метода, то это плохой
  18. prolog2 = $result //если меньше сохраняем результат
  19. prolog2++
  20. jmp L2 // ищем следующий
  21. L1:
  22. cmp size_int3 - (prolog2 - current), 10 // если кол-во int3 минус размер метода меньше 16 байт то это гуд
  23. ja L3 // если больше то это BAD
  24. jmp Setup
  25. L3:
  26. size = BAD
  27. BadCodeSize++
  28. ret
  29.  
  30. Setup:
  31.  
  32. rip = current
  33. SIZE = size = prolog2 - current - 1
  34. ADDRESS = addr
  35. RipAsmCode //size for selected
  36. //fill current, CC ,size+1
  37. ret

но это не то, есть неточности, у дебагера есть в интерфейсе "Analize single function", для скрипта её нет, и сам ни разу не практиковал

Ранг: 0.0 (гость)
Статус: Участник

Создано: 3 мая 2017 14:13 New!
Цитата · Личное сообщение · #3

Bronco пишет: я пока не разобрался сбрасывается ли этот эксепшен при обновлении сетинга, или их накапливают

Сбрасывается.

Bronco пишет: для скрипта её нет, и сам ни разу не практиковал

Я этим пользовался: https://github.com/x64dbg/x64dbgpy
В нем все пробиндили, а чего нет всегда можно подключить через импорт.
Этот скрипт и на олли не осилил, пользуюсь immunity.
Глянул, есть интерфейс для списка функций и start\end функции.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 3 мая 2017 18:11 New!
Цитата · Личное сообщение · #4

shellstorm пишет:
есть интерфейс для списка функций и start\end функции.

по самой функции в скрипте есть analrecur/analr, но она ничего не возвращает, только ставит маркер от начала и до RET, вроде правильно, но на сложных я пока не смотрел.
а по апишкам залип на объявлении списка структуры FunctionInfo..
либо нихера, либо егоры.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 3 мая 2017 18:34 New!
Цитата · Личное сообщение · #5

Bronco пишет:а по апишкам залип на объявлении списка структуры

Посмотрите исходники анализатора, там немного кода и он как раз выделяет блоки, как бы что доктор прописал.
https://github.com/x64dbg/x64dbg/tree/development/src/dbg/analysis


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 3 мая 2017 19:45 New!
Цитата · Личное сообщение · #6

shellstorm пишет:
Посмотрите исходники анализатора

по началу плагин заинтриговал, отслеживал с первого релиза, но сейчас у него такой выхлоп тяжёлый, что я им перестал пользоваться.+самопроизвольный анализ при рестартах и тд, убедил в правильности решения.
+автор настойчиво загоняет всё в пользовательские комменты, а исузу с просьбой хотя бы в авто_коменты тупо удалил.
Разобрался, объявляем структуру Function::FunctionInfo info;
далее булка GetInfo(address_from, &info);
оперативненько вернёт весь список, как на ладошке..
но хз надо на сложных проверять.

| Сообщение посчитали полезным: shellstorm


Ранг: 0.0 (гость)
Статус: Участник

Создано: 3 мая 2017 20:36 New!
Цитата · Личное сообщение · #7

Bronco пишет: оперативненько вернёт весь список, как на ладошке.

У меня наоборот все сломалось, тестил api в питоновском скриптинге, все работало, закрыл отладчик и пошел пить кофе, после возвращения запускаю и выдает python exception, уже где и что только не чистил, все равно вылезает эта ебола. В самом плагине нечему ломаться, настроек никаких нет, мистика какая то.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 3 мая 2017 21:41 New!
Цитата · Личное сообщение · #8

shellstorm пишет:
У меня наоборот все сломалось,

типа да, есть и такое
но по ходу надо юзать связку, жесть кАнечно...
Code:
  1. Function::FunctionInfo info;
  2.  
  3. Function::Clear();
  4. sprintf_s(message, "analr %p\n", address_from);
  5. Cmd(message);
  6. GetInfo(address_from, &info);

Ранг: 0.0 (гость)
Статус: Участник

Создано: 3 мая 2017 22:30 New!
Цитата · Личное сообщение · #9

Bronco пишет:типа да, есть и такое

Снова заработало.

Bronco пишет: но по ходу надо юзать связку, жесть кАнечно..

Не смотрели Triton?
https://github.com/JonathanSalwan/Triton
Можно выделить функцию и загнать ее в оптимизатор llvm и пусть O2 делает свое дело.
Вот тут на его базе есть занятный проект, только требуется мощная машина.
https://github.com/JonathanSalwan/Tigress_protection


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 3 мая 2017 22:44 New!
Цитата · Личное сообщение · #10

shellstorm пишет:
Снова заработало

сорян, забыл добавить что там ещё имиджбейс надо держать под рукой.
duint rvaStart;
duint rvaEnd;
shellstorm пишет:
Не смотрели Triton?

темы эти интересные, где Вы их только находите, обязательно посмотрю, но позже.
ща с этим прогоняю, посмотрю на выхлоп, научите в плюсах многопоточности, ибо с этим не связывался ни разу.
ну и бум пробовать.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 4 мая 2017 00:01 New!
Цитата · Личное сообщение · #11

Bronco пишет:ща с этим прогоняю, посмотрю на выхлоп, научите в плюсах многопоточности, ибо с этим не связывался ни разу.
ну и бум пробовать.


сначала нужно написать функционал, разделите его на модули: поиск функций, анализатор\парсер, асм\дасм. ведь нет смысла ждать пока найдется все функции, можно во время поиска найденные отправлять на обработку.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 4 мая 2017 04:49 · Поправил: Bronco New!
Цитата · Личное сообщение · #12

shellstorm пишет:
разделите его на модули:

хз что тут разбрасывать, не считая мелких плюшек, чисто для комфорта, пока всего 3 метода, нопы, лапша и просто рип с одного места на другое .
для рипа тела подпрограммы из скрипта надо передать пока 2 аргумента, если рекурсивный анализ себя проявит_оправдает тогда один, размер уже будет не нужен, и сделать вызов плагина отдельной командой. остальное всё делает скрипт.
что касается деобфускации_оптимизации_пром кода, это пока только в планах.
Вот и крутись как хочешь.
Code:
  1. sourse::0000000145D065DE:movss xmm0, dword ptr [rdx]::engine_error::XEDParse
  2. sourse::0000000145F46916:movss xmm0, dword ptr [rsp + 0x30]::engine_error::XEDParse
  3. sourse::0000000145BB8EA8:movss dword ptr [r8], xmm0::engine_error::XEDParse
  4. sourse::00000001465D30A7:movss xmm1, dword ptr [rsp + 0x44]::engine_error::XEDParse
  5.  
  6. sourse::0000000145BA36F8:lock xadd dword ptr [0x1421d552c], eax::engine_error::AsmJit
  7. sourse::0000000145D02F67:lock cmpxchg dword ptr [rbx + 0xa0], ecx::engine_error::AsmJit
  8. sourse::0000000145F3D5D5:lock xadd dword ptr [rcx + 0x18], eax::engine_error::AsmJit
  9. sourse::00000001465AE8DC:lock xadd dword ptr [rbx + 8], eax::engine_error::AsmJit
  10.  
  11. sourse::0000000145C42DBC:comiss xmm0, xmmword ptr [rcx + 0x188]::engine_error::Keystone
  12. sourse::0000000145D37598:comiss xmm1, xmmword ptr [rdx]::engine_error::Keystone
  13. sourse::0000000145F643B7:comiss xmm0, xmmword ptr [0x141ccb9d0]::engine_error::Keystone
  14. sourse::00000001463E55F5:comiss xmm0, xmmword ptr [rcx + 0x18]::engine_error::Keystone
  15.  
  16. sourse::0000000145F71B85:???::engine_error::analr x64dbg
  17. sourse::0000000146227EF3:???::engine_error::analr x64dbg
  18. sourse::0000000146425273:???::engine_error::analr x64dbg

Вроде отладил, 6 мин 1000 подпрограм, с общим размером 105 000 байт.
По рекурсивному анализу очень даже не плохо, но есть и ошибки.
И что то мне не прёт аналог апишки найти.
2 эксепшена подряд, мсг о крт и уже без вариантов по клику на выход . тру катч не срабатывает, в сдк на эту тему глухо.

Ранг: 15.6 (новичок)
Статус: Участник

Создано: 5 мая 2017 00:43 New!
Цитата · Личное сообщение · #13

For analysis you can use: DbgAnalyzeFunction it will return inside BridgeCFGraphList, when using C++ you can convert it to BridgeCFGraph and inspect the control flow graph of the function.

For assembler you can just directly call asmjit, it uses the same API as XEDParse: https://github.com/x64dbg/asmjit_xedparse

Also more plugins/sources can be found at http://plugins.x64dbg.com

Take a look at ScriptDLLs: https://github.com/x64dbg/ScriptDllTemplate with this you can more easily perform some tasks like stepping and then calling some C++, might be more suitable for your usage. Also make sure to use the plugload and plugunload commands for faster development of your plugin.

Some more good resources to understanding of x64dbg and plugins:

http://x64dbg.com/blog/2016/07/30/x64dbg-plugin-sdk.html
http://x64dbg.com/blog/2016/10/04/architecture-of-x64dbg.html
http://x64dbg.com/blog/2016/10/20/threading-model.html


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 5 мая 2017 05:16 · Поправил: Bronco New!
Цитата · Личное сообщение · #14

mrexodia пишет:
DbgAnalyzeFunction it will return inside BridgeCFGraphList

посмотрел структуру, возвращает кол во узлов (то бишь бранчи), указатель на массив с данными(очевидно для построения), и чего то размер. но не смой функции, может массива.
хз графы интерактивность подразумевают, тут банально автоматизация ручной работы.
повторюсь, рекурсивный анализ функции, очень хорош.
mrexodia, в двух темах накидал текущие егоры. стоит ли и дальше выкладывать, или это никому не нужно?
==================
в апишках есть
BRIDGE_IMPEXP void DbgScriptStep();
выполнение самого скрипта по ходу разбивают на потоки, из-за этого бывает что то пропускают.
к примеру вкл_откл_лог пишет в лог только свои события. а вот если табом проходить, то пропусков нет.
хз попробую stepbystep в окно скрипта добавить..

Добавлено спустя 2 часа 25 минут
обновил шапку приаттачил апдейт.
семпл для теста пока один, так что могут быть бокарезы...
ре портим.

{ Атач доступен только для участников форума } - ScriptCmdForAsmCode.rar

| Сообщение посчитали полезным: shellstorm


Ранг: 0.0 (гость)
Статус: Участник

Создано: 5 мая 2017 14:34 New!
Цитата · Личное сообщение · #15

Bronco пишет: Вот и крутись как хочешь

Здесь вариантов немного, либо прикручивать еще какие то движки или собрать список ошибок и отослать их авторам движка. Кседовцы слоупоки, а вот у capstone шустрые и инициативные ребята, можно конечно самому править таблицы, муторно только лазить по всей это портянке.
Code:
  1. def set_assembler_engine(engine=0):
  2.     try:
  3.         if engine >= 0 and engine <= 2:
  4.             if bridge.BridgeSettingSetUint('Engine', 'Assembler', engine):
  5.                 return True
  6.             else:
  7.                 return False
  8.     except AttributeError:
  9.         print 'assembler engine: attribute error'
  10.     return None

Прогонял 1000'000 раз, переключение работает как часы, дизассемблер тоже нормально работает, не считая того, что иногда возвращает какую то фигню, это в x64, на x86 все более менее стабильно, по крайне мере у себя не нашел достаточно кривого семпла.

Добавлено спустя 3 минуты
mrexodia

Планируется ли делать скрипты плагины на python, как это сделано в IDA?
Там скрипт можно сделать плагином и своим поведением ничем не отличается от нативного плагина написанного на том же C++.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 5 мая 2017 16:44 · Поправил: Bronco New!
Цитата · Личное сообщение · #16

shellstorm пишет:
или собрать список ошибок и отослать их авторам движка

по списку ошибок вышло больше, только они все типичные для каждого движка.
по х86, чуйка что таких проблем быть не должно.
mrexodia по ходу мониторит веб ресурсы, да и ближе к ним , может чего то и пофиксят, пока выкрутился. почти за 2 часа рипнул все 17000 стыренных методов, ошибки только на рекурсивном анализе подпрограммы, но большая часть отмечена в букмекере.
shellstorm пишет:
def set_assembler_engine(engine=0):

это питон?
хорошо видно в нём, раз эксепшены перехватывает.
Bronco пишет:
хз попробую stepbystep в окно скрипта добавить..

визуализировать можно, 2 структуры предоставлено ( SCRIPTLINETYPE и SCRIPTBRANCH), но как исполнять то что в скрипте пока не вкурился.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 5 мая 2017 17:03 New!
Цитата · Личное сообщение · #17

Bronco пишет:это питон? хорошо видно в нём, раз эксепшены перехватывает.

Нет, это внутренняя кухня питона, защита от неправильных параметров.
Вот с этой функцией все не так радужно AssembleEx, при исполнении по крайне мере из скрипта иногда программа сама запускается, а x64dbg наглухо зависает, ну или я не дождался когда он отвиснет и допишет крашдамп. Эту функцию тоже прогонял 1000'000 DbgAssembleAt, работает стабильно, не считая того, что иногда транслирует какую то хню, но это уже проблема движков.

Добавлено спустя 3 минуты
Bronco пишет: по ходу мониторит веб ресурсы, да и ближе к ним , может чего то и пофиксят

Только для этого желательно сделать список проблемных инструкций и указать движок на котором не работает.
Денува думаю неплохой сборник подобного хлама. Я сижу жду анпакми вмпрота x64, тоже интересно поковырять этот хлам.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 5 мая 2017 17:18 New!
Цитата · Личное сообщение · #18

shellstorm пишет:
Денува думаю неплохой сборник подобного хлама.

угу...то что раньше было под дерьмопротом, ща размазали псевдо_вм, пот типу раннего старика, разбавили тонами мусора и безалаберной обфускацией. вот как раз на демке призрака3 и гоняю. но это уже с зачищенной и выделенной трассой отдельным скриптом.
на дерьмопроте хз что собрёшь, там всё важное в массиве, а тела примитивов не большие

Ранг: 15.6 (новичок)
Статус: Участник

Создано: 5 мая 2017 17:26 New!
Цитата · Личное сообщение · #19

shellstorm I'm having some difficulties understanding the google translate, but someone wrote a plugin that allows you to do something like this: https://github.com/jdavidberger/chaiScriptPlugin

Bronco I'm not sure if there was a question because of the translation...


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 5 мая 2017 17:34 · Поправил: Bronco New!
Цитата · Личное сообщение · #20

mrexodia пишет:
I'm not sure if there was a question because of the translation...

ок..
in two posts
{
--> 1 <--,
--> 2 <--
}
the name of the API SDK functions and outcomes of errors. Such information on the engines need?


Ранг: 264.9 (наставник)
Статус: Участник

Создано: 6 мая 2017 00:31 New!
Цитата · Личное сообщение · #21

Bronco

> посмотрел структуру, возвращает кол во узлов (то бишь бранчи), указатель на массив с данными(очевидно для построения), и чего то размер. но не смой функции, может массива.

Сформировать примитивный список это примитивная задача. Вы не сможить нормально никакие действия с графом выполнять, если не содержит обратных ссылок. Тоесть есть ссылка на структуру, в этой структуре должна быть обратная ссылка. Это в общем, реально же должны вестись массивы ссылок, короче сложно это всё, думать нужно.

Фишка вся в том, что структура графа должна быть оптимальна для алгоритмической работы с ним. Если это просто slist, то это никак не граф. Это просто связанный примитивный список, к которому не могут применяться стандартные алгосы работы с графом.

Размер функции - это абстракция, смысла не имеющая обычно. Так выделение тела функции размазанной по модулю позволяет узнать размер её - это суммарный размер инструкций, но как обьекта цельного в таком случае функции не существует. Корреляция понятий.

Ранг: 73.2 (постоянный)
Статус: Участник

Создано: 6 мая 2017 01:02 · Поправил: sefkrd New!
Цитата · Личное сообщение · #22

Offtopic: difexacaw
Джедай..

Ранг: 0.0 (гость)
Статус: Участник

Создано: 6 мая 2017 01:22 New!
Цитата · Личное сообщение · #23

difexacaw пишет:Это просто связанный примитивный список, к которому не могут применяться стандартные алгосы работы с графом.

а из списков мы построим граф, вся информация для этого есть, к тому же мы можем использовать данные из регистров\стека, что существенно облегчает чистку кода.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 6 мая 2017 05:01 New!
Цитата · Личное сообщение · #24

difexacaw
Вы не сможить нормально никакие действия с графом выполнять
забавный синтез решения чужих задач. откуда Вы знаете что нет обратных ссылок ?
и из какого контекста пришли к выводу, что мне нужно строить графы?
фабула предложенного mrexodia, воспользоваться готовым функционалом, или как Вам любезно алгосами, для получения нужных мне данных размера функции, но как промежуточный результат, и не больше.
размер или масса объекта, в любом пространстве или системе координат, далеко не абстракция, потому что взаимодействует с другими объектами и механизмами.
но я бы предложил, не искать единомышленников для обсуждения обратного, подобных утверждений, дабы у пользователей не началась рефлекторная дефекация от подобного чтива.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 6 мая 2017 05:16 New!
Цитата · Личное сообщение · #25

Bronco пишет: фабула предложенного mrexodia, воспользоваться готовым функционалом

Здесь еще смешнее, mrexodia использует те самые базовые блоки которые наш наркоман из Могилева так победоносно открыл для себя в относительно недавней теме.

Добавлено спустя 1 минуту
https://en.wikipedia.org/wiki/Basic_block

| Сообщение посчитали полезным: Bronco



Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 6 мая 2017 11:43 · Поправил: Bronco New!
Цитата · Личное сообщение · #26

Bronco пишет:
хз попробую stepbystep в окно скрипта добавить

хз есть ли смысл изголяться плагином.
отсутствие визуализации в скриптовом поле - это наверное просто прихоть автора.
на самом деле всё готово, и ждёт только желания потребителя ( simplescript.cpp).
в метод static int scriptinternalstep(int fromIp), достаточно добавить по 2 строчки перед каждым ретурном
GuiScriptSetIp(fromIp); Sleep(1);
shellstorm пишет:
Здесь еще смешнее, mrexodia использует те самые базовые блоки

в том то и дело, что если посмотреть реализацию рекурсивного анализа , первая мысль, а зачем это повторять, а вторая - Диа просто прикололся, предложив повозиться с этим.
печалька что пока нет обёртки для этого метода, но хсм...хоть что то да есть.
shellstorm пишет:
Я этим пользовался: https://github.com/x64dbg/x64dbgpy

у отладчика окно скрипта пока мало информативно и отлаживать сложные выражения на си подобном языке, не видя контекста, тяжко. чайнаскрипт этим же и грешит.
а у автора есть дополнение к плагину, редач скриптов с мордой в_студии, но у меня отладчик зависает на старте из- за него. он просто редач, без базы данных по синтаксису?

Ранг: 0.0 (гость)
Статус: Участник

Создано: 6 мая 2017 12:40 · Поправил: shellstorm New!
Цитата · Личное сообщение · #27

Bronco пишет: Диа просто прикололся, предложив повозиться с этим.

Использовать можно, интерфейсы есть, игрался вчера, получал список ссылок на текущий адрес, остальное еще не смотрел, да и мне проще в питоне взять нормальную библиотеку графов.

Bronco пишет: отсутствие визуализации в скриптовом поле - это наверное просто прихоть автора.
Все это добро можно использовать и в питоне, ну и плюс питон конечно. Небольшой пример по части апишек, они все равно все на одну трубу.
Code:
  1.     script_branch = bridge.SCRIPTBRANCH()
  2.     bridge.DbgScriptGetBranchInfo(8,script_branch) # первое значение в функции номер строки
  3.     print script_branch.branchlabel
  4.     print script_branch.dest
  5.     bridge.GuiScriptClear() # очищаем историю скриптов
  6.     bridge.DbgScriptStep() # выполняем скрипт пошагово
  7.     basic_info = bridge.BASIC_INSTRUCTION_INFO()
  8.     address = bridge.GetCIP()
  9.     bridge.DbgDisasmFastAt(address, basic_info) #дизассамблируем инструкцию по CIP
  10.     bridge.DbgScriptCmdExec('bp ' + hex(address + basic_info.size) ) # ставим BP на следующий после CIP аддресс


До гуи тоже можно добраться.)

Добавлено спустя 6 минут
Там просто список апи, никаких интеллектуальных подсказок нет, я пишу в sublime и в это время открыт отладчик с загруженным тестовым семплом, по мере написания запускаю скрипт и смотрю где проблемы и в чем они.

Добавлено спустя 8 минут
там отладчик и не требуется, главное не влететь с бесконечными циклами, если зависнет то уже само не отвиснет, а так проверку на True, try except и в принципе жить можно, там в основном всего то пара ошибок бывает.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 6 мая 2017 12:49 New!
Цитата · Личное сообщение · #28

shellstorm пишет:
До гуи тоже можно добраться.)

ок..значит будем добираться, ибо фиксить каждый снапшот, уже приелось.
со строковыми данными, как переменные, делать ничего не хотят, формат строки для каждой команды надо клянчить.
угнетает кол - во событий регистрируемых в основной журнал...
надо забирать то что логируем по скрипту куда -то отдельно. ох-ох....

Ранг: 0.0 (гость)
Статус: Участник

Создано: 6 мая 2017 12:54 New!
Цитата · Личное сообщение · #29

Bronco пишет: значит будем добираться, ибо фиксить каждый снапшот, уже приелось.

У меня с идой так же, в крайнем случае можно по быстрому набросать библиотеку и через swig собрать модуль для питона.

Добавлено спустя 43 минуты
Глянул реализацию лога, максимальный размер 100mb, это не серьезно. Функцию void LogView::saveSlot() не экспортируют, только черзжопными способами. В настройках можно выставить, чтобы при закрытии все отправилось в файл, но сбрасывается после закрытия отладчика и никто не думает автоматически создавать новые текстовики при исчерпании несчастных ста мегабайт. Вот чего реально не хватает, так опции автолога, чтобы содержимое окна синхронизировалось с окном логирования и при исчерпании размера создавался новый файл лога. ну или нормальную функцию чтения окна и отдать пользователям апишку сохранения файла.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 6 мая 2017 14:11 · Поправил: Bronco New!
Цитата · Личное сообщение · #30

shellstorm пишет:
Глянул реализацию лога, максимальный размер 100mb, это не серьезно

всё что по скрипту , надо забирать себе, для скриптового окна , в сорцах дебагера своя апишка для формата есть, можно и до неё добраться.
или лог при визуализации ( кста обалденно смотрится!) и слипе, по необходимости вкл, регистрировать событие. и выкл. пропускать не должно+ на задержке хоть какая то синхронизация потоков.
и быстрей воркать будет, на принтах скорость и производительность теряем.
а не обязательных событий там много в журнал пишут.// милисеки вкл_выкл, рефы и тп.
хз надо попробовать добавить свой таб_виджет, туда можно вести лог.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 6 мая 2017 17:41 New!
Цитата · Личное сообщение · #31

Bronco пишет: можно и до неё добраться

Я сегодня озадачился и все же пересобрал часть отладчика. сохранения лога теперь работает, можно в любое время дропать текстовик, нужно и остальное забытое добавить.

Добавлено спустя 6 часов 11 минут
В общем добил я питон, теперь можно меня заголовки окон, выставлять чекбоксы и все такое.
Самое забавное, что функцию из за которой все началось я все же сломал, но в принципе она теперь и нафиг не нужна.
Если интересно погонять плагин, могу дать ссылку в ЛС.
Осталось добить точку входа, чтобы скрипты воспринимались как плагины и совсем будет хорошо.
<< . 1 . 2 . 3 . 4 . 5 . >>
 eXeL@B —› Софт, инструменты —› Плагины к отладчику Mr.eXoDia x64/x32 dbg

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS