Сейчас на форуме: vsv1, r0lka, -Sanchez-, testrev1337, johnniewalker, Kybyx (+4 невидимых)

 eXeL@B —› Крэки, обсуждения —› Идея отладчика на основе принципа API-шпиона
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение


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

Создано: 17 февраля 2010 21:45 · Поправил: DenCoder
· Личное сообщение · #1

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

Идея отладчика, в основу которого положены не бряки, а апи хуки и инжект dll-модуля. А также возможность загружать программы из-под такого отладчика. Смысл идеи в том, что dll-модуль, внедрившись в усыпленный перед этим процесс, получает от приложения-сервера (своего рода отладчика) команды на перехват тех или иных функций, установку пре- и/или пост-обработчиков. Приложение-сервер получает от этого модуля всю нужную информацию от такого модуля и, в частности, по требованию может приостановить работу отлаживаемого таким образом приложения с помошью функции NtSuspendProcess. Важное преимущество пост-обработчиков перехватываемых функций - способность выявлять весь набор стековых аргументов в тех случаях, когда функции не ebp-based, то есть не используют регистр ebp для сохранения указателя фрейма. Но, конечно, никакого выигрыша при конвенциях __fastcall и __cdecl. Здесь все же придется анализировать обращения к стеку за пределами адреса возврата и первые чтения регистров без их инициализации в начале функции. Но такое уже делал для трассировщика команд Spectrum'а.

Нетрудно добавить дизассемблер в такой отладчик, такой модуль с анализом логической структуры функции наподобие Graph View в Ida 5.5 Pro уже разработан 3 года назад. Зачастую не нужно передавать весь листинг программ, передаваться и анализироваться будет только то, что мы захотим, и мз отдельного потока, экономя время на выполнение программы и наше. А накопленный листинг можно сохранять.

Как идея?

-----
IZ.RU




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

Создано: 18 февраля 2010 22:58
· Личное сообщение · #2

cppasm пишет:
Там и консольный отладчик нормальный

Нормальный? Да это просто ужоснах, с таким отладчиком можно работать только от полнейшей безысходности. Трудно придумать что-то более неудобное.

cppasm пишет:
Да и фронтэнды графические к нему есть.

Можно пару ссылок?

-----
PGP key <0x1B6A24550F33E44A>





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 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




Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 18 февраля 2010 23:32 · Поправил: cppasm
· Личное сообщение · #4

ntldr пишет:
Нормальный? Да это просто ужоснах, с таким отладчиком можно работать только от полнейшей безысходности.

Я в основном бутлоадеры отлаживал.
Не фонтан, но пользоваться можно.

ntldr пишет:
Можно пару ссылок?

http://forum.osdev.org/viewtopic.php?f=2&t=17546
http://code.google.com/p/peter-bochs/

И вроди есть уже родной GUI Debugger
http://bochs.sourceforge.net/doc/docbook/user/features.html
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.
Как включать написано тут:
http://wiki.osdev.org/Bochs#GUI_debugger
Не знаю есть ли он в собранном бинарнике (вроди должен быть).
В исходниках есть, конфигурировать надо с --enable-debugger и --enable-debugger-gui

mak пишет:
на вин версии гуи только в привате

Какой такой приват, если официальные исходники в репозитарии лежат




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

Создано: 18 февраля 2010 23:56 · Поправил: DenCoder
· Личное сообщение · #5

mak, Объявляю начало разработки после 10 марта.

cppasm, я такую картинку уже видел в WinDbg. И что? Перезапускаем винду с ключом /debug, запускаем WinDbg, Local Kernel Debugging, вводим g и он нам отвечает "No debuggee". Вот с виртуальной машиной можно.

-----
IZ.RU




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 19 февраля 2010 08:00
· Личное сообщение · #6

DenCoder
> что именно не нравится? В определении отладичка не сказано, что он обязан юзать Debugging API и определенно именно INT 3 или аппаратные точки останова.
Ондолжен использовать однобайтные инструкции генерирующие исключения, это может быть как Int3, так и привилегированные инструкции типо hlt и пр. Почему однобайтные думаю не нужно обьяснять.
Хардварные точки останова нужны для отслеживания доступа к памяти.
Дебугапи это стандартный фуикционал, по сути это способ доставки событий отладчику, таких как исключения. Если не нравится - используйте собственную реализацию в виде надстройки в ядре.
> а апи хуки и инжект dll-модуля.
Наверно имеются ввиду перехваты, зачем они, если можно записать останов. Тоесть при трассировке процедурного ветвления, без захода в него вы предлогаете вместо точки останова за процедурным ветвлением использовать джамп на код отладчика или захват адреса возврата в стеке
Если мониторить вызовы, то это логгер, а не дебуггер. Отладчик должен быть вне процесса, всмысле иным процессом или выполняться на более низком уровне привилегий в отлаживаемом процессе, либо являться частью виртуапльной машины, это также должно быть понятно. Например малварь, драйвера, либо триальные приложения я отлаживаю на варе. В данном случае лучшим решением являласьбы надстройка над варей в виде отладчика.
Далее например приложение самодостаточно, тоесть использует прерывания для своей работы. Как вы это будите отлаживать, вобщето ось на винапи не заканчивается
> И как ВЫ судите о том, новичок человек или нет? По рангу на этом форуме?
По форме мышления, уровню знаний и опыта.



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 19 февраля 2010 08:03
· Личное сообщение · #7

> Объявляю начало разработки после 10 марта.
Вначале продумайте все нюансы, дабы появилась архитектура. Иначе в процессе коденга окажется что всё зря и идея не жизнеспособна



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 19 февраля 2010 09:36
· Личное сообщение · #8

DenCoder пишет:
Помогли исходники W32Dasm

поделишся?

-----
продавец резиновых утёнков




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

Создано: 19 февраля 2010 11:12
· Личное сообщение · #9

cppasm
Спасибо за ссылки. С гуи будет куда приятней работать.

-----
PGP key <0x1B6A24550F33E44A>





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

Создано: 19 февраля 2010 13:48
· Личное сообщение · #10

HiEndsoft, сомневаюсь, что они сохранились в чистом виде, что-то я там добавил или изменил, не помню - давно было.



05cc_19.02.2010_CRACKLAB.rU.tgz - w32dasm.rar

-----
IZ.RU





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

Создано: 18 марта 2010 01:53 · Поправил: DenCoder
· Личное сообщение · #11

17 марта - день начала. Есть одна прога, обфусцирована до ужаса, с антиотладкой, палит все дебаггеры, даже если они не лезут в нее и отказывается работать. Так вот, в помощь реверсу пишу заявленную тулзу. Пока под определенный проект. За ним на очереди второй.

Уже готов скелет и потихоньку обрастает мясом. Планируется добавить простенький скрипт для управления. Собственно, пока все идет хорошо. Единственное, что скоро может понадобиться - быстрый модуль дизассемблера, еще лучше, если с исходниками. w32Dasm пятилетней давности плохо подходит, поскольку там есть некоторые нюансы, которые долго переписывать так, чтоб сразу не глючило. Например поиск команды в нем заключается в последовательном переборе команд по маске. Это должно быть быстрее.

-----
IZ.RU





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 18 марта 2010 18:45
· Личное сообщение · #12

Тут дизасм лежит достаточно хороший в плане возможности анализировать код mika0x65.livejournal.com Ещё не релиз, но близок к этому.




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 19 марта 2010 04:50
· Личное сообщение · #13

Archer пишет:
mika0x65.livejournal.com


у кого-нибудь по его ссылкам качается?



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

Создано: 19 марта 2010 07:14 · Поправил: Kiev78
· Личное сообщение · #14

---



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 19 марта 2010 08:46
· Личное сообщение · #15

Kiev78, очень даже хорош




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 19 марта 2010 09:09
· Личное сообщение · #16

Kiev78 пишет:
не знаю, насколько он хорош


не плох, на его основе FullDisasm под ольгу делается



Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 19 марта 2010 12:05 · Поправил: HandMill
· Личное сообщение · #17

Разнообразные дизасм движки(раз тут ссылки выкладывают):
// продвинутые
distorm поддержка x64
beaengine поддержка x64
udis86 поддержка x64
движок от mika0x65 поддержка x64
hde дизассемблер длин, поддержка x64.
X86IME ассемблирование инструкций, поддержка x64
X86IME patch to compile in UNIX by nibble
pvdasm

ollydbg official disasm engine(supports x86 only) source code
ollydbg Fixed OllyDbg disasm DLL by CondZero

// устаревшее
catchy32
cadt (masm 1.1 version by cyberdoomsystems)

[cadt c version]
cadt.h
cadt.c

disit

p.s.: Может стоит завести отдельную тему по дизасм/отладочным движкам, где постить только ссылки и описания?

-----
все багрепорты - в личные сообщения




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 19 марта 2010 12:08
· Личное сообщение · #18

Gideon Vi пишет:
у кого-нибудь по его ссылкам качается?

Пнул автора, думаю перевыложит.




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 19 марта 2010 14:40
· Личное сообщение · #19

HandMill пишет:
Может стоит завести отдельную тему по дизасм/отладочным движкам, где постить только ссылки и описания?


до-до, поддерживаю

progopis пишет:
Пнул автора, думаю перевыложит.


спасибо



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

Создано: 19 марта 2010 19:45 · Поправил: Kiev78
· Личное сообщение · #20

---




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 20 марта 2010 05:02
· Личное сообщение · #21

с движками ушел туда, там и ответил.



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 21 марта 2010 13:39 · Поправил: HiEndsoft
· Личное сообщение · #22

DenCoder
Прикрути дров или через обработку исключений - как минимум, т.к. идея сплайсинга давно уже как померла.
ADD: за сорцы w32dasm спасибо.

-----
продавец резиновых утёнков




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 21 марта 2010 18:52
· Личное сообщение · #23

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




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 22 марта 2010 03:42
· Личное сообщение · #24

Вам бы посмотреть, чем ТС в своем дневнике занят и заканчивать советовать актуальное




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

Создано: 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




Ранг: 115.1 (ветеран), 3thx
Активность: 0.070
Статус: Участник

Создано: 27 марта 2010 07:47
· Личное сообщение · #26

cppasm пишет:
Ты дизассемблированный код какой-нибудь CRC32


Пример супер. Прям дебри из одной функи =)




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

Создано: 27 марта 2010 08:52 · Поправил: DenCoder
· Личное сообщение · #27

Ну, код не выбирал, на паузу нажал в этом абчолютно случайно... 2 достоинства есть у тулзы:

1) Проезжает детект отладки (если на нем прога не зациклена) и можно в любой отладчик, не оснащенный плагином типа фантома
2) Не меняет первые байты апи-функций, другой механизм хука.

Дизасм с эвристикой потом прикручу. Сейчас под задачу точу.

Выкладываю

4d4e_26.03.2010_CRACKLAB.rU.tgz - Release.rar

-----
IZ.RU





Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 27 марта 2010 09:09 · Поправил: Gideon Vi
· Личное сообщение · #28

DenCoder пишет:
кто считает, что я месяц времени впустую потратил


Я такого не говорил.

DenCoder пишет:
поставьте себе 16-битный драйвер для какого-нить устройства, запустите сиську и посмотрите, как она посинеет


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




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

Создано: 27 марта 2010 13:58 · Поправил: DenCoder
· Личное сообщение · #29

)) ну ладно, я только сейчас выспался. Почему hardlock.sys бсодит и как его победить?

Code:
  1. f546ac20 f58d0bc6 00479008 f546ac90 83657b08 hardlock+0x183ab
  2. f546ac50 8057fc67 8360f780 00000001 00479008 hardlock+0x25bc6
  3. f546ad00 8057fbfa 00000128 00000000 00000000 nt!IopXxxControlFile+0x261
  4. f546ad34 804df06b 00000128 00000000 00000000 nt!NtDeviceIoControlFile+0x2a
  5. f546ad34 7c90eb94 00000128 00000000 00000000 nt!KiFastCallEntry+0xf8
  6. 0131fe94 7c90d8ef 7c801671 00000128 00000000 ntdll!KiFastSystemCallRet
  7. 0131fe98 7c801671 00000128 00000000 00000000 ntdll!ZwDeviceIoControlFile+0xc
  8. 0131fef8 001505b6 00000128 9c402494 00479008 kernel32!DeviceIoControl+0xdd
  9. 0131ff54 00465dfb 00000128 9c402494 00479008 0x1505b6 - мой перехватчик


команда, которая сбоит
f58c3814 8a1408 mov dl,byte ptr [eax+ecx] ds:0023:6cd17bd3=??

________________________________________________________________

Разберусь с этим багом, прикручу код подмены SEH обработчика. Как раз для этой проги, офигела она бряки игнорировать, что INT 3, что Hardware.

-----
IZ.RU




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 27 марта 2010 21:46
· Личное сообщение · #30

DenCoder
> Почему hardlock.sys бсодит
Смотрите контекст, определяете причину падения, далее уже бактрейс и параметры функи разбираете. За вас нет желания делать это, в сети есть куда более интересные крэши в системных драйверах.




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

Создано: 28 марта 2010 01:27 · Поправил: DenCoder
· Личное сообщение · #31

Clerk
> в сети есть куда более интересные крэши в системных драйверах.
Интересно...

Вообще интересно, капризная у меня система: чуть что - сразу бсод. Фантом тоже как-то в бсод вылетел... С hardlock немного поразбирался - заметил на момент креша, что данные, которые передавались - строки ntdll.dll и NtTerminateThread. И еще несколько данных. Для 2 функций добавлю явные пре и пост-обработчики: DeviceIoControl и CreateFile (A, W)...

Подмену импорта еще не забыть бы...

-----
IZ.RU



<< . 1 . 2 . 3 . >>
 eXeL@B —› Крэки, обсуждения —› Идея отладчика на основе принципа API-шпиона
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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