(Не знаю, в какую тему писать, наверное Низкоуровневое программирование самое близкое). Изучаю обратную разработку. Использую Гидру. В ней разобрался. А вот дебаггер в Гидре — это, как говорил Борат, боль в моя дырка задница. Для дебага я использую WinDbg. Изучаемый процесс запускается, и делает свою работу. Но я не понимаю, как в Гидре ставить брейпоинты? Простое действие, но три для нахожусь во фрустрации от непонимания, что делать и куда копать.
Здравствуйте, Aniskin, Вы писали:
A>(Не знаю, в какую тему писать, наверное Низкоуровневое программирование самое близкое). Изучаю обратную разработку. Использую Гидру. В ней разобрался. А вот дебаггер в Гидре — это, как говорил Борат, боль в моя дырка задница. Для дебага я использую WinDbg. Изучаемый процесс запускается, и делает свою работу. Но я не понимаю, как в Гидре ставить брейпоинты? Простое действие, но три для нахожусь во фрустрации от непонимания, что делать и куда копать.
ghidra давно не щупал, она по юзабилити фуфуфу. Пробовал как гугле пишут?
Set Breakpoint, press K on the keyboard, or double-click the margin.
Здравствуйте, pva, Вы писали:
pva>она по юзабилити фуфуфу.
Возможно, мне не с чем сравнить.
pva>Пробовал как гугле пишут? pva>
Set Breakpoint, press K on the keyboard, or double-click the margin.
Если бы было все так просто, то я бы не спрашивал на форуме )
Гидра настроена на использование WinDbg. Есть два окошка. 1) Listing. В нем отображается ассемблерный код, который видит Гидра при открытии файла. 2) Dynamic — Auto PC. В этом окне, как я понимаю, отображено содержимое памяти запущенного процесса. И эти окно не синхронизированы. Если я выберу какую-то команду из первого окна, то содержимое второго окно перемотается до какого-то положения, которое как бы соответствует команде из первого окна. Но содержимое окон разное по байтам. Если я жму K в окне Listing или в окне Dynamic — Auto PC, то появляется сообщение Error caused by front end: Debuggee is Running.
Есть команда меню Emulate Program in new Trace (что это обозначает?). Если ее выбрать, то в окне Dynamic — Auto PC появляется вторая вкладка Emulate appname.exe [Read-only], и байтовое содержимое совпадает с окном Listing. И если в этой второй вкладке нажимать K, то брейкпоинт ставится, что хорошо. Но не срабатывает, что плохо.
Здравствуйте, Aniskin, Вы писали:
A>Гидра настроена на использование WinDbg.
Вот с этого места подробнее. Через что настроена? WinDbg не входит в стандартную поставку плагов гидры.
A>Есть команда меню Emulate Program in new Trace (что это обозначает?).
Это трассировка в эмуляторе, но и там должны бы работать бряки.
Здравствуйте, pva, Вы писали:
A>>Гидра настроена на использование WinDbg. pva>Вот с этого места подробнее. Через что настроена? WinDbg не входит в стандартную поставку плагов гидры.
Гидра позволяет использовать разные сторонние дебаггеры, включая WinDbg. Просто скачиваем и устанавливаем WinDbg обычным способом, после чего выбираем в меню Debugger\Configure and Launch appname.exe using\dbgeng. Это укажет Гидре использовать WinDbg.
У меня ощущение, что после запуска дебага нужно делать какой-нибудь rebase адресов. Но пока не могу понять, как это делать.
Здравствуйте, Aniskin, Вы писали:
A>У меня ощущение, что после запуска дебага нужно делать какой-нибудь rebase адресов. Но пока не могу понять, как это делать.
Да, воспроизвел. Насколько я помню это проблема конкретно WinDbg. У него такое же поведение при отладке приложений. Гидра выступает просто мордой для виндбг.
ВинДбг требует для останова явного задания int3/CC.
Здравствуйте, pva, Вы писали:
pva>Здравствуйте, Aniskin, Вы писали:
A>>У меня ощущение, что после запуска дебага нужно делать какой-нибудь rebase адресов. Но пока не могу понять, как это делать. pva>Да, воспроизвел. Насколько я помню это проблема конкретно WinDbg. У него такое же поведение при отладке приложений. Гидра выступает просто мордой для виндбг. pva>ВинДбг требует для останова явного задания int3/CC.
Я сдался и решил изучать BinaryNinja, у него дебаг заработал искаропки. И формируемый им C-подобный листинг мне больше нравится. Теперь бьюсь над тем, как смотреть содержимое структур при дебаге.
Здравствуйте, Aniskin, Вы писали:
A>Я сдался и решил изучать BinaryNinja, у него дебаг заработал искаропки. И формируемый им C-подобный листинг мне больше нравится. Теперь бьюсь над тем, как смотреть содержимое структур при дебаге.
Ты не ищешь легких путей, да.
Нинзя сейчас тоже становится отраслевым инструментом, но мне кажется что больше для batch/automatic анализа бинарей. Возьми IDA и не мучайся. Она стандарт уже много лет.
Еще новички любят ollydbg/x64dbg, но это чисто отладчик. Для статики он слабоват.
Здравствуйте, pva, Вы писали:
pva>Возьми IDA и не мучайся.
В бесплатной версии IDA нет C-подобного представления кода, а покупать ее для разовой задачи мне не хочется. Передо мной стояла задача отреверсить метод шифрования. А современная разработка — это абстракция на абстракции и абстракцией погоняет, и как следствие логика очень размыта по коду. А я не любитель рассматривать километры ассемблера, мне бы лучше рассматривать километры сишечки, мне ее проще понять. И BinaryNinja помогла мне очень сильно. Совместно с DeepSeek. Я ради интереса скопировал C-представление функции с кучей циклов из анализируемой утилиты в DeepSeek и спросил, что тут вообще происходит, и DeepSeek с ходу мне ответил: "Хули тут думать, это же генерация раундовых ключей AES, зуб даю". А дальше было дело техники. Удивляет, что до сих пор не приплели какой-нибудь AI-Ассистент в какой-нибудь дизассемблер.
Здравствуйте, Aniskin, Вы писали:
A>В бесплатной версии IDA нет C-подобного представления кода, а покупать ее для разовой задачи мне не хочется.
Чой-то нет? В бесплатной версии входят облачные декомпили х86/х64, насколько я помню. А задача детекта криптоалго обычно решается плагом findCrypt либо yara без всяких рассмотрений километров сишечки. Обычно таблицы и константы однозначно детектят.
A>Удивляет, что до сих пор не приплели какой-нибудь AI-Ассистент в какой-нибудь дизассемблер.
Раньше использовался сигнатурный матчинг. Сейчас есть разработки и в АИ. На профильных форумах мелькали модели, объясняющие дизасм выхлоп, но оно сырое еще. Китайцы сейчас активно пилят в этом направлении, но коммерция.
Впрочем, сырой выхлоп обычно проблемы и так не представляет. Проблемы начинаются когда обфускаторы вступают в дело.
Здравствуйте, pva, Вы писали:
pva>Чой-то нет? В бесплатной версии входят облачные декомпили х86/х64, насколько я помню.
Т.е. анализируемый код отправляется в куда-то в сеть, там анализируется, и возвращается C-представление? Смогу я в дальнейшем делать рефакторинг (переименования, создание структур и т.д.) этого C-представления?
pva>А задача детекта криптоалго обычно решается плагом findCrypt либо yara без всяких рассмотрений километров сишечки. Обычно таблицы и константы однозначно детектят.
Это был мой первый опыт обратной разработки, многих вещей и инструментов я не знаю в силу отсутствия опыта и практики.
pva>На профильных форумах
Что за форумы?
Здравствуйте, Aniskin, Вы писали:
A>Т.е. анализируемый код отправляется в куда-то в сеть, там анализируется, и возвращается C-представление?
Да, на официальные сервера. Вообще можешь просто посмотреть детали тут.
В коммерческих версиях декомпили доступны локально.
A>Смогу я в дальнейшем делать рефакторинг (переименования, создание структур и т.д.) этого C-представления?
Да, вполне. Правда я на облачных не тестил какой контекст там улетает, но должно работать идентично с локальными версиями.
A>Это был мой первый опыт обратной разработки, многих вещей и инструментов я не знаю в силу отсутствия опыта и практики.
Без проблем. Может оно и не нужно Реверс стал очень нишевым интересом в последние годы в связи с развитием инструментов защиты. Очень высокий порог входа в темы, которые актуальны.
A>Что за форумы?
Это домашнее задание на профпригодность
Здравствуйте, pva, Вы писали:
pva>Это домашнее задание на профпригодность
Ok)
Еще пользуясь случаем хочу спросить, а возможно ли в коммерческой IDA дебажить сторонний сервис (антивирусной программы), работающий от имени SYSTEM в сессии 0, и который скорее всего защищен Protected Process Light?
Здравствуйте, Aniskin, Вы писали:
A>Еще пользуясь случаем хочу спросить, а возможно ли в коммерческой IDA дебажить сторонний сервис (антивирусной программы), работающий от имени SYSTEM в сессии 0, и который скорее всего защищен Protected Process Light?
Не изучал этот вопрос. На мой взгляд это задача уровня Expert и вряд ли ты к ней готов. Можешь спросить парней на форумах, когда найдешь последние. Там аверы тусят в том числе.
Здравствуйте, mike_rs, Вы писали:
_>Или аппаратной точки, если ты не через bp а через ba поставил бряку. Так работают абсолютно все отладчики, по другому просто невозможно.
С виндбг проблема немного в другом. Он процесс запускает сразу на исполнение и если нет явной СС или EBFE то ты брякаешься уже черт знает где. Может, конечно, в случае фиксированной базы и удастся брякнуться на HWBP, но это явно не вариант топикстартера. Другие отладчики либо загружают процесс в Suspended состоянии, либо (как делает ИДА), трекают адрес загрузки процесса и после маппинга в память выставляют отмеченные bp/hwbp по нужным адресам.
Здравствуйте, pva, Вы писали:
pva>С виндбг проблема немного в другом. Он процесс запускает сразу на исполнение и если нет явной СС или EBFE то ты брякаешься уже черт знает где.
есть же "sxe ld", будет останов на загрузке первого модуля (это сам exe)
Здравствуйте, mike_rs, Вы писали:
pva>>С виндбг проблема немного в другом. Он процесс запускает сразу на исполнение и если нет явной СС или EBFE то ты брякаешься уже черт знает где. _>есть же "sxe ld", будет останов на загрузке первого модуля (это сам exe)
Ага, прикольно! Я о таком и не знал. Последний раз пытался в него лет 10 назад, но ида победила
Сейчас виндбг использую только для крашдамп анализа раз в три месяца.
Здравствуйте, pva, Вы писали:
A>>Еще пользуясь случаем хочу спросить, а возможно ли в коммерческой IDA дебажить сторонний сервис (антивирусной программы), работающий от имени SYSTEM в сессии 0, и который скорее всего защищен Protected Process Light? pva>это задача уровня Expert и вряд ли ты к ней готов.
Ты, конечно, напугал меня, но я решил проверить. ) Два дня боли и страданий у меня ушло на то, что бы научиться в BinaryNinja дебажить антивирусный сервис из сессии 0. Разумеется, мой внутренний смузихлеб не очень доволен тем, что приходится пользоваться не только мышкой, но и консолькой, но (моя конкретная) задача вполне решаема.
Здравствуйте, Aniskin, Вы писали:
A>Ты, конечно, напугал меня, но я решил проверить. ) Два дня боли и страданий у меня ушло на то, что бы научиться в BinaryNinja дебажить антивирусный сервис из сессии 0. Разумеется, мой внутренний смузихлеб не очень доволен тем, что приходится пользоваться не только мышкой, но и консолькой, но (моя конкретная) задача вполне решаема.
Красавчик! Ну, чтоб в новом году и не такие задачи решались!