Сейчас на форуме: 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





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

Создано: 01 апреля 2010 06:22
· Личное сообщение · #2

Разобрался, почему в БСОД вылетает. Дело в упраляющем коде dwIoControlCode. Когда программа шлет драйверу код 9C402494, то во входном буфере по смещению 0x00 адрес закриптованной функции. (Зачем - непонятно). Драйвер декриптует и передает проге имя ф-ции и имя модуля (NtTerminateThread и ntdll.dll), из которого импортировать ее. Это прописывается по смещению 0x10. Далее прога получает адрес этой ф-ции, шлет второй раз этот же код с тем же буфером, но по смещению 0x08 адрес этой импортированной ф-ции. Моя тулза подменяет адреса, полученные ф-цией GetProcAddress, поэтому адрес отправляется совсем не тот. Так вот, реализовал первую автоподмену, в которой для драйвера hardlock.sys дается оригинальный адрес. И бсод наконец проехал. Ура! Но...

Через некоторое время начались нескончаемые RtlMoveMemory... Остановил прогу, залез в нее олей. Много много много циклов с перемещением областей памяти. Вот это зачем? Между циклами перемещения встречаются некоторые ф-ции VB. vbaAryLock, например. Поискал гуглом, гугл нашел 5 ссылок, где ничего толком. Рамблер вообще ничего. Яндекс - с 40 ссылей, большинство из к-рых ссылаются на исследования вирей и антивирей. Понятно, на бейсике еще и антивири пишут ))). Не нашел ниодного толкогого описания ф-ций из msvbvm60.dll...

RtlMoveMemory надо исключить из списка перехватываемых. Позже список реализую, чего не надо перехватывать.

Первая автоподмена реализована для DeviceIoControl
Исправлены ошибки рекурсивности с GetProcAddress
Подправлена синхронизация потоков
Улучшен алгоритм менеджера памяти

Кому надо, могу выложить.

-----
IZ.RU




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

Создано: 06 апреля 2010 00:33
· Личное сообщение · #3

DenCoder пишет:
Не нашел ниодного толкогого описания ф-ций из msvbvm60.dll...

скачай для нее символы и исследуй дальше.

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




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

Создано: 06 апреля 2010 01:02
· Личное сообщение · #4

HiEndsoft пишет:
скачай для нее символы и исследуй дальше.

мну плачет, я уже два года мечтаю дописать справочник по функциям, лень этим заняться.

Сложности:
1. Без знания VB, уйдёт гораздо больше времени.
2. Почти все функции работают с типом Variant (go to MSDN).
3. Нихрена не документировано, ну просто вообще ничего, кроме отдельных статей на разных RE сайтах.




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

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

Поинтересуюсь, когда будет готов отладчик?

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





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

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

progopis прав! Скачал даже малополезный pdf на испанском или итальянском, в котором кое-как догадываешься до смысла. Добавлю только, что у этой msvbvm60.dll есть функции, которые почти самостоятельно работают. То есть указал им callback и со всякими из нее VarSub, VarCat и т.д. производится, например, полная инициализация окна... Еще интересно, что программа, попавшаяся мне, довольно часто через этот VB проверяет наличие NTICE (SoftIce)...

Дописал до какого-то уровня утилиту. Собственно, пока у нее остались заточки под проект, в планах много всего. Писал ее 3 недели, пока не совершенна, много чего еще можно улучшить, но уже она помогла проехать тонну антиотладки и добиться цели!

Нет пока настроек, пока не сделан импорт (он почти и не пригодился - программа его мало использует), много чего нет... Все по мере надобности будет сделано. Пока то, что есть:

P.S. Ctrl-Alt-F5 - восстановление видеорежима до его смены программой. Кнопка <В игру> - обратно.

0983_07.04.2010_CRACKLAB.rU.tgz - RemCodeView.rar

-----
IZ.RU




Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 08 апреля 2010 11:26 · Поправил: _ruzmaz_
· Личное сообщение · #7

про msvbvm60.dll спрашивали не так давно)
http://exelab.ru/f/action=vthread&forum=5&topic=15605&page =0




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

Создано: 09 апреля 2010 08:49 · Поправил: DenCoder
· Личное сообщение · #8

Да, ссыль от Vovan666 может пригодиться. Особенно chm в архиве по ссыли. И есть еще ricardonarvaja.info/WEB/OTROS/HERRAMIENTAS/" target="_blank">много чего про VB (поправка ссыли от neoBlinXaker).

Заинтересовался сейчас Ime/Imm. -----
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 » Выход » ЛС
   Для печати Для печати