eXeL@B —› Основной форум —› Нормальный API шпийон для висты. |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 23 июня 2009 12:08 · Личное сообщение · #1 Нужно мне было недавно отловить с какими параметрами одна прога запускает другой процесс, поитогу выкрутился тем, что приатачился дебагером и поставил брейкпоинт на CreateProcess(). Но до того как я до этого дошел я решил посмотреть, а смогу ли я получить подобную инфу через какой-нить API spy. Из тех что есть на скачивание на крэклабе: 1) kerberos v1.13 инжектился через раз. Получить хотя бы какой-то лог не получилось. 2) API Monitor 1.5b ловит все что угодно только не CreateProcess. 3) APISpy32 3.0 не работает вообще. Дальше уже взял Auto Debug System - да он ловит, но не показывает более 32 символов. Итого получается, что приходится все делать руками. Есть ли нормальный халявный api spy для висты? ----- Реверсивная инженерия - написание кода идентичного натуральному |
|
Создано: 06 июля 2009 09:39 · Личное сообщение · #2 |
|
Создано: 06 июля 2009 14:26 · Личное сообщение · #3 |
|
Создано: 09 июля 2009 15:58 · Личное сообщение · #4 Rustem для UTF8 можно пробовать вот так (на Си) #ifndef UTF8_BYTE #define UTF8_BYTE BYTE #endif BOOL _IsUTF8String(const UTF8_BYTE *pUTF8String) { DWORD i = 0; BYTE b0, b1, b2; ASSERT(pUTF8String != NULL); if(pUTF8String == NULL) return FALSE; if(pUTF8String[0] == 0xEF) if(pUTF8String[1] == 0xBB) if(pUTF8String[2] == 0xBF) i += 3; while(1) { b0 = pUTF8String[i]; i++; if(b0 >= 0x80) { b1 = pUTF8String[i]; i++; if((b1 & 0xC0) != 0x80) return FALSE; if((b0 & 0xE0) != 0xC0) { b2 = pUTF8String[i]; i++; if((b2 & 0xC0) != 0x80) return FALSE; } } if(b0 == 0) break; } return TRUE; } |
|
Создано: 22 июля 2009 16:20 · Личное сообщение · #5 Я так понимаю API логеры делятся на два вида: 1) Графические. У них есть GUI. У них есть возможность выбрать птичками те API которые интересны, и скорость программы выполняемой под таким логером будет зависеть от скорости того, насколько быстро gui будет успевать отрисовывать информацию пришедшую с хуков. Если инфы много скрол умирает. И настает смерть. Как правило имеют свою базу верных API (те, которые они могут мониторить), неверные посылаюстся на йух. 2) Не-графические. Все что надо логировать, надо забивать руками. Надо досконально знать сколько у каждой функции параметров и знать все имена функций наизусть. Лог выписывается в текстовый файл. Просмотреть какие именно параметры пришли в функцию, как правило не возможно, потому что парсинга нет. Все во имя скорости. Вопрос: а бывают ли какие-нить неграфические апилогеры, которые через msdia из pdb получают инфу о параметрах и пишут текстовый лог с передаваемыми данными? ----- Реверсивная инженерия - написание кода идентичного натуральному |
|
Создано: 27 августа 2009 23:06 · Личное сообщение · #6 |
|
Создано: 28 августа 2009 06:54 · Личное сообщение · #7 Hexxx У моего апилоггера, досконально знать количество параметров НЕ надо, можешь писать хоть ноль. Просто параметры не будут выведены в лог. Насчет гуя-мне гораздо удобнее поправить текстовый файл, чтобы объяснить какие функции нужны, чем тыкаться мышкой, и с настройками тоже самое- переделывать интерфейс из-за каждой новой фичи не особо хотелось sendersu Версия 1.2 готова давно Пока что поддержку UTF8 не добавлял, т.к. не вижу смысла. Кому надо сами выведут плагином |
|
Создано: 28 августа 2009 23:17 · Личное сообщение · #8 |
|
Создано: 02 января 2010 22:32 · Личное сообщение · #9 |
|
Создано: 28 января 2011 18:05 · Личное сообщение · #10 |
|
Создано: 28 января 2011 18:21 · Личное сообщение · #11 |
|
Создано: 28 января 2011 20:11 · Личное сообщение · #12 |
|
Создано: 28 января 2011 21:18 · Личное сообщение · #13 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 28 января 2011 22:59 · Личное сообщение · #14 Не совсем в тему. Может кому-то покажется этот способ диким, но я в ntdll запихивал свой асм код, переводил на него управление с интересующей функции интересующей проги и MessageBox'ом выводил инфу Несмотря на кажущейся ужас, при корректной реализации не хуже чем обычный API шпион, при этом протекторы и т.д. ничего не подозревают. |
|
Создано: 29 января 2011 00:35 · Личное сообщение · #15 |
|
Создано: 29 января 2011 01:15 · Поправил: Hexxx · Личное сообщение · #16 |
|
Создано: 29 января 2011 07:42 · Личное сообщение · #17 |
|
Создано: 29 января 2011 10:31 · Личное сообщение · #18 |
|
Создано: 29 января 2011 11:30 · Личное сообщение · #19 |
|
Создано: 29 января 2011 13:39 · Личное сообщение · #20 |
|
Создано: 29 января 2011 13:44 · Поправил: alt76 · Личное сообщение · #21 Rustem Да, время тоже хотел добавить. В версии 1.6 будет клева, спасибки Tools\imex2spy.exe этой утилите сто лет в обед, баги могут быть. Ее переделывать надо полностью может найдешь как нить время ? плиз... она, лично для меня, важная часть функционала твоего api_logger. возможность по быстрому промониторить вызовы с параметрами неизвестной dll с неизвестными функциями - существенное премущество твоего api_logger-а по сравнению с аналогами. а помогает это все сделать легко и быстро именно imex2spy. |
|
Создано: 29 января 2011 14:05 · Личное сообщение · #22 alt76 для создания баз от неизвестных длл лучше всего подходит ида. в ней же можно и количество параметров у функции узнать, в болшинстве случаев автоматом (для stdcall) трудности будут вызывать только функции с fastcall, thiscall итп IDC скриптом можно пройтись по экспорту, и сохранить в файл, потом скормить шпиону Насчет неизвестных длл с неизвестными параметрами, да , специально заточил возможности шпиона под реверс. Скрипт для иды нашел, делает базу шпиона Code:
|
|
Создано: 29 января 2011 14:31 · Поправил: alt76 · Личное сообщение · #23 Rustem за скрипт спасибо, но это уже для более глубоких исследований. иногда надо по быстрому вникнуть в логику взаимодействия проги со своими dll и грузить каждую dll в иду, особенно если их штук 10-20 как-то не кошерно намного проще и эффективнее прогнать их все через imex2spy, запустить твой apilogger, а там по логу уже судить какая dll заслуживает чести быть проанализированной поглубже. [добавлено] кста, одна идея появилась - возможно тебе покажется заслуживающей внимания. если добавить окошко, в которое дублировать вывод лога, то тогда будет хорошо визуально видно то, что на какое-то действие с прогой, идет какой-то вызов функций из выбранных dll. |
|
Создано: 29 января 2011 17:49 · Личное сообщение · #24 |
|
Создано: 30 января 2011 00:46 · Личное сообщение · #25 alt76 пишет: багарепорт:Tools\imex2spy.exeне извлекает export без имени, заданный только по Ordinal а если так? c2f1_29.01.2011_CRACKLAB.rU.tgz - imex2spy.exe | Сообщение посчитали полезным: alt76 |
|
Создано: 30 января 2011 12:45 · Поправил: alt76 · Личное сообщение · #26 sendersu а если так? для apilog15pub.zip должно быть примерно так: [dllname.dll] !1 , f1 , 3 а получается так: [] !1 , 3 т.е. нет "имени функции" и нет имени dll то, что нужно еще и "имя функции" это "баг" apilog15pub т.к. к доке написано ;Format of DB ;!Ordinal,ParamsCnt,Options но такой формат apilog15pub не понимает: ERROR: Empty function name in line near 2 а вот формат !Ordinal, FunctionName, ParamsCnt она понимает и нормально логгирует: Function "f1" from dllname.dll hooked |
|
Создано: 30 января 2011 14:21 · Личное сообщение · #27 |
|
Создано: 30 января 2011 15:21 · Поправил: alt76 · Личное сообщение · #28 |
|
Создано: 30 января 2011 20:33 · Поправил: Rustem · Личное сообщение · #29 |
|
Создано: 30 января 2011 20:54 · Личное сообщение · #30 |
|
Создано: 30 января 2011 22:34 · Поправил: sendersu · Личное сообщение · #31 Archer согласно текущим правилам парсера шпиона - ".#" невалидные поетому сделал так, пример [OLEAUT32.dll] !16 , OLEAUT32_16 , 3 alt76 а длл-ка ваша с хитринкой, пустое имя от того что *(char*)(imageBase + pExport->Name) == '\0' ;( в таком случае я теперь беру имя входного файла пойдет? 36f8_30.01.2011_CRACKLAB.rU.tgz - imex2spy.exe | Сообщение посчитали полезным: alt76 |
<< . 1 . 2 . 3 . >> |
eXeL@B —› Основной форум —› Нормальный API шпийон для висты. |