Сейчас на форуме: vsv1, r0lka, -Sanchez-, testrev1337, johnniewalker, Kybyx (+4 невидимых) |
eXeL@B —› Крэки, обсуждения —› Идея отладчика на основе принципа API-шпиона |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 17 февраля 2010 21:45 · Поправил: DenCoder · Личное сообщение · #1 В голову хорошая идея пришла. Хотя, если точнее, она уже давно формировалась и частично реализовывалась, но сейчас сформировалась до нового уровня. Я не прочь поделиться ей на обсуждение. Идея отладчика, в основу которого положены не бряки, а апи хуки и инжект dll-модуля. А также возможность загружать программы из-под такого отладчика. Смысл идеи в том, что dll-модуль, внедрившись в усыпленный перед этим процесс, получает от приложения-сервера (своего рода отладчика) команды на перехват тех или иных функций, установку пре- и/или пост-обработчиков. Приложение-сервер получает от этого модуля всю нужную информацию от такого модуля и, в частности, по требованию может приостановить работу отлаживаемого таким образом приложения с помошью функции NtSuspendProcess. Важное преимущество пост-обработчиков перехватываемых функций - способность выявлять весь набор стековых аргументов в тех случаях, когда функции не ebp-based, то есть не используют регистр ebp для сохранения указателя фрейма. Но, конечно, никакого выигрыша при конвенциях __fastcall и __cdecl. Здесь все же придется анализировать обращения к стеку за пределами адреса возврата и первые чтения регистров без их инициализации в начале функции. Но такое уже делал для трассировщика команд Spectrum'а. Нетрудно добавить дизассемблер в такой отладчик, такой модуль с анализом логической структуры функции наподобие Graph View в Ida 5.5 Pro уже разработан 3 года назад. Зачастую не нужно передавать весь листинг программ, передаваться и анализироваться будет только то, что мы захотим, и мз отдельного потока, экономя время на выполнение программы и наше. А накопленный листинг можно сохранять. Как идея? ----- IZ.RU |
|
Создано: 18 февраля 2010 22:58 · Личное сообщение · #2 cppasm пишет: Там и консольный отладчик нормальный Нормальный? Да это просто ужоснах, с таким отладчиком можно работать только от полнейшей безысходности. Трудно придумать что-то более неудобное. cppasm пишет: Да и фронтэнды графические к нему есть. Можно пару ссылок? ----- PGP key |
|
Создано: 18 февраля 2010 23:26 · Поправил: mak · Личное сообщение · #3 на вин версии гуи только в привате , те что в свободном доступе только под линуксы и т.п. В основном их разрабатывают активно любителя создания новых ОС , там в ихних командах вообще даже конкуренция на гуи) Кто лучше сделает) Кто хочет се оторвать , ищите там. DenCoder а ты кодить будешь? Добавлено - тогда закрывай тему и пиши , делать тут больше нечего , одобрения ты всеравно не найдешь в любом случае. cppasm Приватный , с давних пор , на том же форуме где вы искали. Если еще поищите мож еще что найдете 6a07_18.02.2010_CRACKLAB.rU.tgz - doc.rar ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 18 февраля 2010 23:32 · Поправил: cppasm · Личное сообщение · #4 ntldr пишет: Нормальный? Да это просто ужоснах, с таким отладчиком можно работать только от полнейшей безысходности. Я в основном бутлоадеры отлаживал. Не фонтан, но пользоваться можно. ntldr пишет: Можно пару ссылок? И вроди есть уже родной GUI Debugger GUI Debugger Yes Chourdakis Michael and Bruce Ewing contributed very powerful GUI frontend for Bochs internal debugger. GUI debugger frontend is supported for Win32 and GTK hosts. Как включать написано тут: Не знаю есть ли он в собранном бинарнике (вроди должен быть). В исходниках есть, конфигурировать надо с --enable-debugger и --enable-debugger-gui mak пишет: на вин версии гуи только в привате Какой такой приват, если официальные исходники в репозитарии лежат |
|
Создано: 18 февраля 2010 23:56 · Поправил: DenCoder · Личное сообщение · #5 |
|
Создано: 19 февраля 2010 08:00 · Личное сообщение · #6 DenCoder > что именно не нравится? В определении отладичка не сказано, что он обязан юзать Debugging API и определенно именно INT 3 или аппаратные точки останова. Ондолжен использовать однобайтные инструкции генерирующие исключения, это может быть как Int3, так и привилегированные инструкции типо hlt и пр. Почему однобайтные думаю не нужно обьяснять. Хардварные точки останова нужны для отслеживания доступа к памяти. Дебугапи это стандартный фуикционал, по сути это способ доставки событий отладчику, таких как исключения. Если не нравится - используйте собственную реализацию в виде надстройки в ядре. > а апи хуки и инжект dll-модуля. Наверно имеются ввиду перехваты, зачем они, если можно записать останов. Тоесть при трассировке процедурного ветвления, без захода в него вы предлогаете вместо точки останова за процедурным ветвлением использовать джамп на код отладчика или захват адреса возврата в стеке Если мониторить вызовы, то это логгер, а не дебуггер. Отладчик должен быть вне процесса, всмысле иным процессом или выполняться на более низком уровне привилегий в отлаживаемом процессе, либо являться частью виртуапльной машины, это также должно быть понятно. Например малварь, драйвера, либо триальные приложения я отлаживаю на варе. В данном случае лучшим решением являласьбы надстройка над варей в виде отладчика. Далее например приложение самодостаточно, тоесть использует прерывания для своей работы. Как вы это будите отлаживать, вобщето ось на винапи не заканчивается > И как ВЫ судите о том, новичок человек или нет? По рангу на этом форуме? По форме мышления, уровню знаний и опыта. |
|
Создано: 19 февраля 2010 08:03 · Личное сообщение · #7 |
|
Создано: 19 февраля 2010 09:36 · Личное сообщение · #8 |
|
Создано: 19 февраля 2010 11:12 · Личное сообщение · #9 |
|
Создано: 19 февраля 2010 13:48 · Личное сообщение · #10 HiEndsoft, сомневаюсь, что они сохранились в чистом виде, что-то я там добавил или изменил, не помню - давно было. 05cc_19.02.2010_CRACKLAB.rU.tgz - w32dasm.rar ----- IZ.RU |
|
Создано: 18 марта 2010 01:53 · Поправил: DenCoder · Личное сообщение · #11 17 марта - день начала. Есть одна прога, обфусцирована до ужаса, с антиотладкой, палит все дебаггеры, даже если они не лезут в нее и отказывается работать. Так вот, в помощь реверсу пишу заявленную тулзу. Пока под определенный проект. За ним на очереди второй. Уже готов скелет и потихоньку обрастает мясом. Планируется добавить простенький скрипт для управления. Собственно, пока все идет хорошо. Единственное, что скоро может понадобиться - быстрый модуль дизассемблера, еще лучше, если с исходниками. w32Dasm пятилетней давности плохо подходит, поскольку там есть некоторые нюансы, которые долго переписывать так, чтоб сразу не глючило. Например поиск команды в нем заключается в последовательном переборе команд по маске. Это должно быть быстрее. ----- IZ.RU |
|
Создано: 18 марта 2010 18:45 · Личное сообщение · #12 |
|
Создано: 19 марта 2010 04:50 · Личное сообщение · #13 |
|
Создано: 19 марта 2010 07:14 · Поправил: Kiev78 · Личное сообщение · #14 |
|
Создано: 19 марта 2010 08:46 · Личное сообщение · #15 |
|
Создано: 19 марта 2010 09:09 · Личное сообщение · #16 |
|
Создано: 19 марта 2010 12:05 · Поправил: HandMill · Личное сообщение · #17 Разнообразные дизасм движки(раз тут ссылки выкладывают): // продвинутые // устаревшее [cadt c version] p.s.: Может стоит завести отдельную тему по дизасм/отладочным движкам, где постить только ссылки и описания? ----- все багрепорты - в личные сообщения |
|
Создано: 19 марта 2010 12:08 · Личное сообщение · #18 |
|
Создано: 19 марта 2010 14:40 · Личное сообщение · #19 |
|
Создано: 19 марта 2010 19:45 · Поправил: Kiev78 · Личное сообщение · #20 |
|
Создано: 20 марта 2010 05:02 · Личное сообщение · #21 |
|
Создано: 21 марта 2010 13:39 · Поправил: HiEndsoft · Личное сообщение · #22 |
|
Создано: 21 марта 2010 18:52 · Личное сообщение · #23 |
|
Создано: 22 марта 2010 03:42 · Личное сообщение · #24 |
|
Создано: 27 марта 2010 07:31 · Поправил: DenCoder · Личное сообщение · #25 Clerk, у Вас хорошие эвристические решения системных задач. Может, подскажете, как Олю попросить переключиться на неё, если отлаживаемая прога переключила видеорежим и блокирует Alt-tab? Но вот в остальном Вам эвристика плохо помогает делать правильные выводы. Я сам за ядерный отладчик, трейсер и все ядерное. )) Пишу эту тулзу, пробую ее на проге, защищенной HASP и в одном том же месте вылетаю в бсод. n-ый по счету вызов DeviceIoControl с хендлом hardlock.sys последнее, что я вижу в лог-файле.... после перезарузки. А чуть выше, в другом потоке начал вызываться еще один DeviceIoControl с хендлом от другого драйвера, но еще не завершился... Создается ощущение, что юзермодная тулза в неравной схватке против ядерной защиты. Что ж делать, придется учиться писать дрова... надеюсь, что скоро... Нет, мне не нужен эмулятор хаспа, он стоит. Мне нужно пока оттрейсить прогу до конца работы и без бсодов. Затем подменять на лету некоторые параметры. Пробую найти причину бсода, буду делать все возможное, пока не исчерпаю юзермод. )) Уже есть первая версия. Требует еще большой работы. Внизу ссылка на ее скриншот в действии. P.S. На счет дневника: кто считает, что я месяц времени впустую потратил, поставьте себе 16-битный драйвер для какого-нить устройства, запустите сиську и посмотрите, как она посинеет 938a_26.03.2010_CRACKLAB.rU.tgz - MyTool3.JPG ----- IZ.RU |
|
Создано: 27 марта 2010 07:47 · Личное сообщение · #26 |
|
Создано: 27 марта 2010 08:52 · Поправил: DenCoder · Личное сообщение · #27 Ну, код не выбирал, на паузу нажал в этом абчолютно случайно... 2 достоинства есть у тулзы: 1) Проезжает детект отладки (если на нем прога не зациклена) и можно в любой отладчик, не оснащенный плагином типа фантома 2) Не меняет первые байты апи-функций, другой механизм хука. Дизасм с эвристикой потом прикручу. Сейчас под задачу точу. Выкладываю 4d4e_26.03.2010_CRACKLAB.rU.tgz - Release.rar ----- IZ.RU |
|
Создано: 27 марта 2010 09:09 · Поправил: Gideon Vi · Личное сообщение · #28 DenCoder пишет: кто считает, что я месяц времени впустую потратил Я такого не говорил. DenCoder пишет: поставьте себе 16-битный драйвер для какого-нить устройства, запустите сиську и посмотрите, как она посинеет выдерни шнур из системного блока и увидишь, как экран почернеет. Вот твой пример из той же оперы |
|
Создано: 27 марта 2010 13:58 · Поправил: DenCoder · Личное сообщение · #29 )) ну ладно, я только сейчас выспался. Почему hardlock.sys бсодит и как его победить? Code:
команда, которая сбоит f58c3814 8a1408 mov dl,byte ptr [eax+ecx] ds:0023:6cd17bd3=?? ________________________________________________________________ Разберусь с этим багом, прикручу код подмены SEH обработчика. Как раз для этой проги, офигела она бряки игнорировать, что INT 3, что Hardware. ----- IZ.RU |
|
Создано: 27 марта 2010 21:46 · Личное сообщение · #30 |
|
Создано: 28 марта 2010 01:27 · Поправил: DenCoder · Личное сообщение · #31 Clerk > в сети есть куда более интересные крэши в системных драйверах. Интересно... Вообще интересно, капризная у меня система: чуть что - сразу бсод. Фантом тоже как-то в бсод вылетел... С hardlock немного поразбирался - заметил на момент креша, что данные, которые передавались - строки ntdll.dll и NtTerminateThread. И еще несколько данных. Для 2 функций добавлю явные пре и пост-обработчики: DeviceIoControl и CreateFile (A, W)... Подмену импорта еще не забыть бы... ----- IZ.RU |
<< . 1 . 2 . 3 . >> |
eXeL@B —› Крэки, обсуждения —› Идея отладчика на основе принципа API-шпиона |