Создано: 2 марта 2011 12:29 · Поправил: DenCoder New! Цитата · Личное сообщение · #1
Странно - топики с вопросами по использованию Ida, Syser есть, а по использованию WinDbg нет. Понимаю, что он более менее документирован, но в его документации черт ногу сломит и в его статьях нередко нет перекрестных ссылок. Хотя сами вопросы были в других темах... Предлагаю здесь задавать вопросы по использованию отладчика WinDbg. Собственно, я первый вопрос задам:
Возникла задача, суть которой проверить предположение, что р0-файловый монитор(драйвер) отлавливает все обращения к файлу, выполняет некоторые проверки, и если условия выполняются, то передает команду (возможных схем много) р3-службе(процессу), в следствие которой эта служба открывает тот же файл. Многочисленные поиски по chm-файлу и переносы ссылок во вкладки ie, попытки методом тыка привели вот к такой команде:
bp <адрес инструкции обращения к сервису ZwCreateFile> "dd /c 1 @esp + 8 L1; dt nt!_OBJECT_ATTRIBUTES ObjectName @@masm($p); bp /1 /p <EPROCESS службы> nt!ZwCreateFile \"dd /c 1 @esp + 0xC L1; dt nt!_OBJECT_ATTRIBUTES ObjectName @@masm($p)\"; g"
Команда установки точек останова еще будет улучшаться, суть не в этом! Использование псевдорегистра $p, который дает последний вывод команд d*- тормозит весь процесс на секунду-две. В итоге составная команда dd /c 1 @esp + 8 L1; dt nt!_OBJECT_ATTRIBUTES ObjectName @@masm($p); - не лучший способ достижения описанной цели. Вопрос: можно ли заменить более быстрым аналогом в WinDbg ?
В архиве symbols.cab файлы вида autorun.pdb.dll autorun.pdb.exe WinDBG не понимает такое. Чезер Total Commander - Multi-Rename Tool... можно удалить лишние расширения , но что делать с повторяющимися файлами? UPD. Установщик создает папки exe, dll и т.д. и туда копирует файлы уже без лишнего расширения. Можно было заархивировать сразу вместе с папками. Добавлено спустя 24 минуты А то, что тут кричали, что всё скачивается, такого в принципе не может быть. windbg отправляет на этот https://vsblobprodscussu5shard90.blob.core.windows.net/
SSL:SSLv2RecordLayer, ClientHello (0x01)
но сервер не отвечает, шифронабора нет на говно-сервере . Если через браузер качать , то сервак выбирает шифронабор TLSCipherSuite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
То что у вас через виртуальную машину качает, так это сама машины отправляет запросы, которые сервер понимает
Создано: 27 апреля 2019 02:00 · Поправил: hash87szf New! Цитата · Личное сообщение · #4
Мальчики, я сижу на Win10 LTSC и без Storа. Не мог хто подхватить линк на .appx Windbg Preview Eng и закачать куда? Или предоставить линк, но он долго не живёт. Можн наверно в облако на прямую. Я слышал там Time Travel debug встроили. Интересно.
https://www.microsoft.com/en-us/p/windbg-preview/ Жмёш на Get и подхватываешь линк Fiddlerom или Wireshark.
Добавлено спустя 14 часов 32 минуты http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice/files/6e03eadf-89d8-4ac7-9992-aab4e125de85?P1=1556372639&P2=402&P3=2&P4=oRcMUiafTkNHLEesJEg4ex36pvCduepeatlhCf40DUQKuUAItr0Gk8XHrsANHP2H%2Fj5X%2BjYN%2ByxNS8Rfu%2BojjQ%3D%3D
Создано: 29 апреля 2019 00:44 New! Цитата · Личное сообщение · #5
Как приатачить Windbg с TTD (time travel debug) к х64дбг подопечному.exe? Пробовал зациклить с jmp, детач хдбг, атачить Windbg Пробовал suspend через Process Explorer, детач хдбг, атач Windbg Пробовал просто атач Windbg к стоящему процесу под хдбг. Все варианты не робят.
Как это правильно делается без TTD?
ТТД мощная штука. Например Anydesk (remote admin) распаковывает сам себя, вызывает CreateProcess через aclayer. Callstakc в попе. Стоячим на бряке в aclayer!CreateProcess, если найте все хрефы из Anydesk в aclayer из всех секций и поставить бряки на на хрефы то вызов не найти. Трейсить это дело xdbg медленно и ужасно. А Windbg делает это за минуту. DynamoRio crashes ^^ Performance у TTD раз эдак в x20 медленее, и трэйс был на 1.5 гига (не пакованный), но зато остановившись на aclayer, поставив бряк на код Anydesk, и клацнув "беги назад" восстанавливает всё. Да оно и не надо, колстэк был в теме! Штука.
Для реверса из за инструмента - не очень, а вот для дебага каких то ужасный гонок, да есчё с сорцами! Вау.
Создано: 29 апреля 2019 12:52 New! Цитата · Личное сообщение · #7
rghost ведь
Алсо, принцип работы как я понял не как у Пин'а, тоесь не JIT, хотя хз. Они инжектят длл: TTDWriter, TTDRecordCPU. Алсо, стринги шо вводили в апп под дебагом находятся в трэйс файло, но их позицию найти в Windbg не ясно как. Так как heap, stack подставляются частично, в зависимости от EIP. s -a 0 L0000000 "тормоз" - не робит глобально по всему трэйсу. Был бы формат tracefilа...
symbols included...
Добавлено спустя 13 минут это идёт индексирование трейса старт и сразу выход самого Windbg под ТТД на laptop'чиках это лучше не запускать индекс трейса живёт в РАМе видать картинка когда было 500/3000 keyframes индекса сделано "Successfully created the index in 490820ms." +5gig index file
Добавлено спустя 16 минут TTDinject подписанный инжектор, проверяет ли он шо он инжектит?
Создано: 29 апреля 2019 14:42 · Поправил: difexacaw New! Цитата · Личное сообщение · #8
hash87szf
Обычное апп без защиты даже, можно визором крутнуть и всё что только пожелаете получить. А какие то инжекты из ядерного отладчика - изврат, это портит сам отладчик. Вопрос только в задаче, зачем стек вызовов сохранять в файл ? Он нужен при определённом событии, иначе файлик получится огромным и не нужным.
Создано: 29 апреля 2019 15:15 New! Цитата · Личное сообщение · #10
hash87szf
Я этот пример тоже посмотрю, но задача в чём, что с ним нужно сделать ?
На каждом процедурном ветвлении можно апдейтить лог процедурных вызовов, но опять зачем и что с ним делать ? Какая задача конкретно с этим апп ? Или само апп не важно, а это нужно что бы поюзать новые инструменты ?
Создано: 29 апреля 2019 16:43 · Поправил: hash87szf New! Цитата · Личное сообщение · #11
С каким апп? Анидеск? Ни каких конкретных задач нет.
Хочется всем и всегда хотелось иметь контекст при анализе в статике. Логи вызовов мало, если данные важнее. Так: https://raw.githubusercontent.com/neuroo/runtime-tracer/master/screenshot/ida-pin-traces-plugin.png
А ТТД не только даёт контекст но ещё бежит назад, ловит всё аллоки сам, итд.
Его можно использовать параллельно с Ида но не удобно.
Например я пользуюсь DIE (dynamic ida enrichement) + Alleycat
DIE ловит dynamic calls, а Alleycat находит проход. И даже думать о коде не надо... https://i.imgur.com/1AUdc4N.png https://i.imgur.com/54wPjyb.png Но DIE допиливать надо, и он тормознутый Питон, буквально ставит/отпускает бряки Идавским API
Создано: 30 апреля 2019 11:16 · Поправил: Модератор New! Цитата · Личное сообщение · #12
hash87szf, а вы знакомы с >Processor Tracing'ом<? Если да, то какое у вас мнение по поводу этого инструмента? Может он быть полезным в деле реверсинга?
Создано: 30 апреля 2019 17:22 New! Цитата · Личное сообщение · #13
hash87szf
Я посмотрел софтину, она себя клонирует и пути запуска клонов разные, так что я записал на EP загрузочный стаб. Крутится оно довольно долго при старте(какой то большой цикл по расшифровке).
Для теста там простейшая длл, которая смотрит стек вызовов.
Создано: 30 апреля 2019 21:32 New! Цитата · Личное сообщение · #14
пути одинаковые, просто cmdline разная, гуй, -service, -control зачем всё так хитро не ясно, наверно фрэймворк для кроспрлатформенности, враперы для функций типа createprocess/fork
Создано: 30 апреля 2019 21:41 · Поправил: difexacaw New! Цитата · Личное сообщение · #15
hash87szf
Изначально я написал простейшую обработку запуска нового процесса на NtResumeThread. Это не отслеживает запуски новых процессов(не все), так как для этого юзаются иные способы(пути"), какой то запуск клонируется напрямую через создание процесса, некоторый запускается как служба, это можно посмотреть визуально в psexplorer. Поэтому что бы не городить огород с загрузкой по имени(опции реестра) пути решения два - добавить импорт, но так как импорта нет и самопроверок, то добавить загрузочный стаб вариант идеальный.
Мне не нравится только одно - что этот цикл при запуске длительный. Это можно убрать, отключив например адресную раскодировку, она там не нужна и использовать пакетное исполнение. Но это получится не общее решение, а конкретный допил под целевое апп, что не годится.
Кстате нюанс - вывод в консоль в 8-ке происходить не будет, я знаю это давно и почему(нужно включить флажёк в отладочный в PEB), но не использую её на вм, так что эту мелкую деталь не думал фиксить.
Создано: 2 мая 2019 00:46 New! Цитата · Личное сообщение · #16
Интересная статья про >Time Travel Debugging (TTD)<. В самой статье есть ссылки на интересную информацию. Думаю, что ветка про WinDbg, от ссылки на статью про Time Travel Debugging - хуже не станет. Пусть будет все в одной ветке для удобства.
Создано: 4 июня 2019 21:11 New! Цитата · Личное сообщение · #19
TTD - а как это работает ?
Как я понял апп запускается под визором типо SDE, сохраняется лог(трасса етц). Затем при отладке на любом адресе имеется трасса от предыдущего запуска. Как то сомнительно что это работает, даже если это повторный запуск апп, его поведение обычно отличается, к примеру адресный ранд(aslr).
Интересно как реализован визор, пин как в сде ? Этот сде слишком сырой что бы под ним что то работало стабильно.
Создано: 5 июня 2019 01:48 New! Цитата · Личное сообщение · #20
difexacaw, хорошая тема. VOLKOFF годика полтора назад давал хорошую ссылку на -->хабр-статью<-- - там основной принцип вроде раскрывается. Ну а о плюсах и минусах этого инструмента вы можете порассуждать в этой ветке и выслушать мнения других людей, кто более-менее знает этот инструмент. Я думаю, многим было бы интересно. Только вот сезон жалко сейчас для этого неподходящий - лето, отпуска, юга... Ну может кто и откликнется...
LiveCloudKd was the first utility to focus on Virtual Machine introspection for memory forensics purposes, it was released in 2010 after some initial research on Hyper-V v1.
Создано: 10 августа 2019 22:55 · Поправил: plutos New! Цитата · Личное сообщение · #22
mak пишет: Существует несколько интересных плагинов для подсветки синтаксиса WinDBG по этому линку --> Link <--К сожалению у меня они не работают
Я знаю, что прошло много времени с тех пор, как mak поместил это сообщение, но я попробовал на Windows 7 WinDbg 10.0.17763.162 (remote guest Windows 10 Enterprise): работает хорошо и очень удобно выделяет нужные вещи. Возможно, что автор за два года устранил те недостатки, на которые жаловался mak. Установка простейшая: распаковал архив, скопировал пару файлов, а потом в WinDbg .load path\blwdbgue.dll и всего делов. Ну, как бы то ни было, --> рекомендую <--!
Создано: 11 августа 2019 02:14 New! Цитата · Личное сообщение · #23
Спасибо, Плутос, нужно будет у себя проверить. Точно помню, ставил себе какой-то плагин для подсветки ассемблерных инструкций и он был глючный. Нашел у себя в архиве, чтобы сверить номера версий, а у меня оказывается и название плагина другое. Так что для меня это хорошая новость.
Windbg2ida lets you dump each step (instruction) in Windbg then give you a dump file and you can use it later in your IDA to put color on each line of the instructions that you've run to show code coverage. You can use Windbg2ida to see differences between two or more code coverages in IDA.
Создано: 24 сентября 2019 23:54 · Поправил: dma New! Цитата · Личное сообщение · #28
plutos пишет: Вы бы прежде чем лепить новые сообщения использовали функцию --> ПОИСК <--.
А вы бы прежде чем "ЛЕПИТЬ" безапелляционные обвинения - думали бы логически, где более уместней размещать ту или иную информацию и научились бы выражать свои мысли более культурно, прежде чем обвинять в этом, хотя бы, того же Инди. А то у тех кто мало знаком с "внутренней кухней" кл, может возникнуть подозрение, что вы и Инди, это одно и то же лицо. Подумайте, Плутос, об этом на досуге. Это, во-первых. Во-вторых, очень внимательно слежу за всеми изменениями в ветке по WinDbg - поэтому даже поиск в этот раз не задействовал, полагаясь на свою память. Теперь буду знать, что доверять логике Плутоса нельзя - лучше ее перепроверять поиском.
This tutorial demonstrates how to debug C++ code using a Time Travel Debugging recording. This example focuses on the use of Queries to find information about the execution of the code in question.
PS где-то читал, что source code Time Travel Debug доступен для изучения, но найти сам код нигде не могу. Может кто скинет ссылку?