Сейчас на форуме: 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 |
|
Создано: 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 |
|
Создано: 06 апреля 2010 00:33 · Личное сообщение · #3 |
|
Создано: 06 апреля 2010 01:02 · Личное сообщение · #4 HiEndsoft пишет: скачай для нее символы и исследуй дальше. мну плачет, я уже два года мечтаю дописать справочник по функциям, лень этим заняться. Сложности: 1. Без знания VB, уйдёт гораздо больше времени. 2. Почти все функции работают с типом Variant (go to MSDN). 3. Нихрена не документировано, ну просто вообще ничего, кроме отдельных статей на разных RE сайтах. |
|
Создано: 06 апреля 2010 23:18 · Личное сообщение · #5 |
|
Создано: 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 |
|
Создано: 08 апреля 2010 11:26 · Поправил: _ruzmaz_ · Личное сообщение · #7 про msvbvm60.dll спрашивали не так давно) http://exelab.ru/f/action=vthread&forum=5&topic=15605&page =0 |
|
Создано: 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-шпиона |