What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Удаленная отладка

br0

Midle Weight
Депозит
$0
Как удаленно отладить софт? помимо IDA remote debugger есть варианты ? На ботах отладка софта сущий ад, практически в слепую или в лучшем случае методом научного самотыка, особенно если отлаживать приходится код который работает в доверенном процессе( в explorer например) и если его придушить идой той же, то у юзера на компе все застынет.
Какие вообще есть варианты ? Ошибка происходит именно на реальных тачках, на собственной виртуалке или дедике - все в порядке. Кто как справляется с этой болью ? Может купить 10 тачек и на них тестировать ?? но думаю это не панацея потому что на реальных машинах у ботов специфический софт может стоять, очень все индивидуально.
ПАМАГИТЕ, очень заебался мучиться удаленно, есть ли смысл углубиться в крашдампы ? оттуда полезное что-то можно вытащить будет если шеллкод крошит критический процесс ?
 
br0 сказал(а):
ПАМАГИТЕ, очень заебался мучиться удаленно, есть ли смысл углубиться в крашдампы ?

Ты пытаешься лечить симптом, а не болезнь. Раз ты страдаешь, то скорее всего речь идет о Сишечке или Плюсах. Подучи практики безопасного программирования, типа defensive programming; паттерны, упрощающие управления памятью, типа RAII; правильную архитектуру приложения: логируй большое количество событий, дели функционал на модули с минимальной связностью между ними, отлавливай исключения через SEH или VEH, проверяй все результаты работы любых API. Если это не помогает, попробуй статические анализаторы, которые будут тыкать тебя в конкретный код, который может вызывать проблемы. Если и это не помогает, то подумай о том, чтобы перейти на более простой и безопасный язык, типа Шарпов, или (прости хоспаде) Петухон.
 
Единственное что тебе поможет это - очень плотное покрытие логами, это я тебе по личному опыту.
Отладчик в данном кейсе это путь в никуда.
Про вех совет неплохой в связке с плотным покрытием логами, но знай что аверы этого не любят.
В рамках кейса кривожоп тебе в общем верно расписал, добавлю - осваивай TDD(test driven development).
 
DildoFagins сказал(а):
Ты пытаешься лечить симптом, а не болезнь. Раз ты страдаешь, то скорее всего речь идет о Сишечке или Плюсах. Подучи практики безопасного программирования, типа defensive programming; паттерны, упрощающие управления памятью, типа RAII; правильную архитектуру приложения: логируй большое количество событий, дели функционал на модули с минимальной связностью между ними, отлавливай исключения через SEH или VEH, проверяй все результаты работы любых API. Если это не помогает, попробуй статические анализаторы, которые будут тыкать тебя в конкретный код, который может вызывать проблемы. Если и это не помогает, то подумай о том, чтобы перейти на более простой и безопасный язык, типа Шарпов, или (прости хоспаде) Петухон.

Речь про ассемблер, только на нем пишу из религиозных убеждений. TDD полезная штука, думаю можно его и в контексте ассемблера пристроить на питухоне том же стресстесты погонять на разных входным параметрах
Последнее редактирование: 01.09.2023
 
Whisper сказал(а):
Единственное что тебе поможет это - очень плотное покрытие логами, это я тебе по личному опыту.

Видимо так и придется делать, какую-то дебаг версию пилить с логированием по шагам буквально чтоб было..
А про краш дампы стандартные микрософта никто не сказал ничего, они могут быть реально полезны ? там смещение вроде относительно модуля можно выцепить где рухнуло, хотя там ведь ASLR наверное и толку смещение это не даст, можно ли попробовать какими-то стандартными средствами мелкомягких типа крашдампов выцепить ошибку
?
Спасибо заранее всем, полезные советы, по крайней мере вселяют уверенности ) а то руки опускаются пиздец, ловить иголку в стоге сена без магнита
ps. речь вообще идет про шеллкод исполняемый в контексте explorer.exe, для понимания ситуации
 
Краш дамп разбирать это на много дороже чем прочитать логи это раз, и два умножь этот оверхед на тот милион багов которые у тебя вылезут.
Логи и ТДД, других вариантов для тебя нет, просто нет, смирись.
Для начала автоматом раскидай лог типа зашел в процедуру, вышел из процедуры, где то словишь что зашел и не вышел, накидвай туда логи подробностей. Если у тебя не обложено все логами то это самый быстрый для тебя вариант.
 
Apocalypse сказал(а):
VEH + MiniDumpWriteDump

Например так - https://habr.com/ru/articles/163745/comments/, на асм перекинуть без проблем

шеллкод внедряется в доверенный процесс explorer, придется руками тогда патчить указатели на обработчики ошибок или трамплины делать в коде обработчиков. что давольно не тривиальная тема да и может повлиять на работоспособность. Свои обработчики добавлять вроде как нельзя сейчас в процессе выполнения ( хотя могу и ошибаться, видится мне что скорее всего можно, но нужно ресерчить ), обработчики вкомпиливаются, в любом случае тут тогда либо регистры отладки применять, которые и так уже задействованы кхм... в другой области, либо мудрить что-то с изменением существующих обработчиков.
к тому же локально не всегда есть возможность логи вытащить, оптимальный вариант нашел с покрытием логиварония участка интересующего кода (логивание через обращения к вебу контролируемому)
например через $_GET[id] == 1, значит участок кода выполнился где 1 телеметрия остылается итд..
PS: MiniDumpWriteDump интересная функа, спасибо!
Последнее редактирование: 04.09.2023
 
br0 сказал(а):
Речь про ассемблер, только на нем пишу из религиозных убеждений. TDD полезная штука, думаю можно его и в контексте ассемблера пристроить на питухоне том же стресстесты погонять на разных входным параметрах
Пожалуйста, обратите внимание, что пользователь заблокирован

Чтобы у тебя не было проблем с отладкой, в первую очередь перед применением советов которые тебе дали ассемблер надо выбросить и взять нормальный ЯП для разработки. Это же пздц, ты тратишь кучу времени на написание велосипеда, потом ещё долго дебажишь его. Учитывая что у тебя шеллкод в эксплорере, нужно писать два отдельных проекта под две разных архитектуры, если мы охватываем и х86 и х64. Ты тратишь кучу времени не получая никакого профита и сам создаёшь себе сложности
 
Top