Сейчас на форуме: -Sanchez-, Alf, Adler (+4 невидимых)

 eXeL@B —› Софт, инструменты —› x64dbg - Плагины
<< . 1 . 2 . 3 . 4 . 5 . >>
Посл.ответ Сообщение


Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 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, пока не получается.
--> Эта <-- тема актуальна, оптимизация по шаблонам(потернам) довольна реальна, но как организовать базу данных для них, пока не решалась.
Линк запостил.
--> от 24 июля 2017<--
Дальше посмотрим, что из этого топа выйдет.
//ахах топ потыхеньку умирает, сколько бы не постил

-----
Чтобы юзер в нэте не делал,его всё равно жалко..


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


Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 03 мая 2017 13:21
· Личное сообщение · #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.7 (гость), 170thx
Активность: 0.540
Статус: Участник

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

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

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

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

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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 03 мая 2017 18:11
· Личное сообщение · #4

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 03 мая 2017 18:34
· Личное сообщение · #5

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

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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 03 мая 2017 19:45
· Личное сообщение · #6

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..


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

Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 03 мая 2017 20:36
· Личное сообщение · #7

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

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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 03 мая 2017 21:41
· Личное сообщение · #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.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 03 мая 2017 22:30
· Личное сообщение · #9

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

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

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

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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 03 мая 2017 22:44
· Личное сообщение · #10

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

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 04 мая 2017 00:01
· Личное сообщение · #11

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


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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 04 мая 2017 04:49 · Поправил: Bronco
· Личное сообщение · #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 эксепшена подряд, мсг о крт и уже без вариантов по клику на выход . тру катч не срабатывает, в сдк на эту тему глухо.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 17.6 (новичок), 118thx
Активность: 0.02=0.02
Статус: Участник

Создано: 05 мая 2017 00:43
· Личное сообщение · #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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

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

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

02b3_05.05.2017_EXELAB.rU.tgz - ScriptCmdForAsmCode.rar

-----
Чтобы юзер в нэте не делал,его всё равно жалко..


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

Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 05 мая 2017 14:34
· Личное сообщение · #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++.




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

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

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 05 мая 2017 17:03
· Личное сообщение · #17

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

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

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

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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 05 мая 2017 17:18
· Личное сообщение · #18

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 17.6 (новичок), 118thx
Активность: 0.02=0.02
Статус: Участник

Создано: 05 мая 2017 17:26
· Личное сообщение · #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...




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 05 мая 2017 17:34 · Поправил: Bronco
· Личное сообщение · #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?

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 06 мая 2017 00:31
· Личное сообщение · #21

Bronco

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

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

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

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

-----
vx





Ранг: 77.2 (постоянный), 73thx
Активность: 0.190.15
Статус: Участник

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

Offtopic: difexacaw
Джедай..



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 06 мая 2017 01:22
· Личное сообщение · #23

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

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





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 06 мая 2017 05:01
· Личное сообщение · #24

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 06 мая 2017 05:16
· Личное сообщение · #25

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

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

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

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


Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

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

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 06 мая 2017 12:40 · Поправил: shellstorm
· Личное сообщение · #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 и в принципе жить можно, там в основном всего то пара ошибок бывает.




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 06 мая 2017 12:49
· Личное сообщение · #28

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 06 мая 2017 12:54
· Личное сообщение · #29

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

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

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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 06 мая 2017 17:41
· Личное сообщение · #31

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

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

Добавлено спустя 6 часов 11 минут
В общем добил я питон, теперь можно меня заголовки окон, выставлять чекбоксы и все такое.
Самое забавное, что функцию из за которой все началось я все же сломал, но в принципе она теперь и нафиг не нужна.
Если интересно погонять плагин, могу дать ссылку в ЛС.
Осталось добить точку входа, чтобы скрипты воспринимались как плагины и совсем будет хорошо.


<< . 1 . 2 . 3 . 4 . 5 . >>
 eXeL@B —› Софт, инструменты —› x64dbg - Плагины
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати