Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых) |
eXeL@B —› Программирование —› выполнение апи на эмуле |
Посл.ответ | Сообщение |
|
Создано: 07 февраля 2006 14:29 · Личное сообщение · #1 есть идея выполять некоторые апи на эмуле. тоесть хотим мы выполнить например VirtualProtect и не хотим быть перехваченными. Мы могли бы прочитать эту функцию из соответствующей длл (в памяти ведь может сидеть какойнибудь джамп или инт так что лучше брать из файла) и выплнить ее на эмуле. теоретически для этого достаточно это распознаватель команд. как только мы дойдем до ненакомой нашему мулю команды мы просто сделаем джамп на эту команду в памяти. вопрос - насколько это перспективно в плане невидимости? вы так делали? расскажите о своем опыте. я вот делал так почти все апи начинаются с mov edi, edi достаточно проверить вход на апи и если там такое дело то прыгнуть на ApiEntry+2 и опа на сайс на bpx нас уже не ловит. ----- power and the money money and the power |
|
Создано: 07 февраля 2006 14:36 · Поправил: Smon · Личное сообщение · #2 В принципе это возможно, но для того в данном протекторе / вирусе и т.п. должен быть полноценный дизассемблер. Кроме того, бряки по типу bpx апи ставят не все, я например, обычно ставлю бряки на ret, и потому такая фишка не прокатит ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 07 февраля 2006 14:40 · Личное сообщение · #3 |
|
Создано: 07 февраля 2006 14:51 · Поправил: DrGolova · Личное сообщение · #4 |
|
Создано: 07 февраля 2006 15:05 · Личное сообщение · #5 |
|
Создано: 07 февраля 2006 15:17 · Личное сообщение · #6 |
|
Создано: 07 февраля 2006 15:18 · Личное сообщение · #7 |
|
Создано: 07 февраля 2006 15:40 · Личное сообщение · #8 1) Зачем находить эвристиком в файле, подгружать, эмулировать...? Не проще сделать инлайн-функцию? Разные версии Винды - разные и ДЛЛ. Код может превратиться в жутко зависимую вещь от типа Винды и её сервис-пака. 2) В любом случае будет вызов функции ядра. Так почему бы не написать её обёртку? Ведь большинство Win32 API это переходники в ринг0. 3) В конце концов следуя таким рассуждениям получаеться что придётся писать свои собственные варианты апишек. |
|
Создано: 07 февраля 2006 15:58 · Личное сообщение · #9 |
|
Создано: 07 февраля 2006 16:16 · Личное сообщение · #10 |
|
Создано: 11 февраля 2006 18:53 · Личное сообщение · #11 Mario555 пишет: дык так вроде почти везде делается... правда не из файла а из памяти.. например экзекриптор _очень_ основательно апи передирает =) Да нифига он не передирает вовсе. там импорт выглядит как обычная функция: fn GetProcAddress(func(GetModuleHandle(lib)),funcname) push eax ret где GetProcAddress полностью эмулируется, а в качестве имени функции используется хэш. причем после вызова функции импорта ее элемент в таблице iat восстанавливается (если только такая же функция не дублируется далее в таблице импорта). Не такой он и сложный этот экзекриптор, как кажется. цепляемся олькой и все сразу видно, правда как зацепить ольку думайте сами, могу только подсказать, закройте доступ к процессу ольки из других процессов (маленький драйвер). А также закройте баг с DebugOutputString в оле. |
|
Создано: 11 февраля 2006 22:54 · Личное сообщение · #12 UniSoft пишет: Да нифига он не передирает вовсе. ну ну =) я вообще-то про те апи которые использует сам прот во время работы, а не про защиту импорта в запакованном файле и кста "передирает" - в смысле проверки (прохождения) кода апи на наличие бряков ;) UniSoft пишет: Не такой он и сложный этот экзекриптор, как кажется. ты разобрался с метаморфом ? написал прогу которая способна его свернуть в читабельный код ? PS ведь там основная защита это метаморф а не импорт и антиотладка... |
eXeL@B —› Программирование —› выполнение апи на эмуле |