Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› выполнение апи на эмуле
Посл.ответ Сообщение

Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 07 февраля 2006 14:29
· Личное сообщение · #1

есть идея выполять некоторые апи на эмуле. тоесть хотим мы выполнить например VirtualProtect и не хотим быть перехваченными. Мы могли бы прочитать эту функцию из соответствующей длл (в памяти ведь может сидеть какойнибудь джамп или инт так что лучше брать из файла) и выплнить ее на эмуле. теоретически для этого достаточно это распознаватель команд. как только мы дойдем до ненакомой нашему мулю команды мы просто сделаем джамп на эту команду в памяти.

вопрос - насколько это перспективно в плане невидимости? вы так делали? расскажите о своем опыте.
я вот делал так почти все апи начинаются с mov edi, edi достаточно проверить вход на апи и если там такое дело то прыгнуть на ApiEntry+2 и опа на сайс на bpx нас уже не ловит.

-----
power and the money money and the power




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 07 февраля 2006 14:36 · Поправил: Smon
· Личное сообщение · #2

В принципе это возможно, но для того в данном протекторе / вирусе и т.п. должен быть полноценный дизассемблер. Кроме того, бряки по типу bpx апи ставят не все, я например, обычно ставлю бряки на ret, и потому такая фишка не прокатит

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels




Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 07 февраля 2006 14:40
· Личное сообщение · #3

Smon

да с перепрыгом mov edi, edi не прокатит. но на муле и бряк на рет не пройдет. полноценный дизасм идущий по цепочке те. просто от команды к команде дело нехитрое ибо сложный анализ тут не нужен.

-----
power and the money money and the power





Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 07 февраля 2006 14:51 · Поправил: DrGolova
· Личное сообщение · #4

Боян Так делается например в SVKP
Ставишь bpm, попадаешь в эмулятор, принудительно выходишь из него. и все это можно автоматизировать скриптами.




Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 07 февраля 2006 15:05
· Личное сообщение · #5

дык так вроде почти везде делается... правда не из файла а из памяти.. например экзекриптор _очень_ основательно апи передирает =)



Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 07 февраля 2006 15:17
· Личное сообщение · #6

из памяти дергать это лажа! дернеш вместе с интом или джампом! нет именно из файлов!

-----
power and the money money and the power




Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 07 февраля 2006 15:18
· Личное сообщение · #7

да к тому же дергая из памяти на бпм и нарвшся.

-----
power and the money money and the power




Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 февраля 2006 15:40
· Личное сообщение · #8

1) Зачем находить эвристиком в файле, подгружать, эмулировать...?
Не проще сделать инлайн-функцию? Разные версии Винды - разные и ДЛЛ. Код может превратиться в жутко зависимую вещь от типа Винды и её сервис-пака.
2) В любом случае будет вызов функции ядра. Так почему бы не написать её обёртку? Ведь большинство Win32 API это переходники в ринг0.
3) В конце концов следуя таким рассуждениям получаеться что придётся писать свои собственные варианты апишек.



Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 07 февраля 2006 15:58
· Личное сообщение · #9

DelExe
проще дернуть и мульнуть до сис энтер =) и после него =)

-----
power and the money money and the power




Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 07 февраля 2006 16:16
· Личное сообщение · #10

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

-----
power and the money money and the power





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

Создано: 11 февраля 2006 18:53
· Личное сообщение · #11

Mario555 пишет:
дык так вроде почти везде делается... правда не из файла а из памяти.. например экзекриптор _очень_ основательно апи передирает =)

Да нифига он не передирает вовсе.
там импорт выглядит как обычная функция:
fn GetProcAddress(func(GetModuleHandle(lib)),funcname)
push eax
ret
где GetProcAddress полностью эмулируется, а в качестве имени функции используется хэш.
причем после вызова функции импорта ее элемент в таблице iat восстанавливается (если только такая же функция не дублируется далее в таблице импорта).

Не такой он и сложный этот экзекриптор, как кажется.
цепляемся олькой и все сразу видно, правда как зацепить ольку думайте сами, могу только подсказать, закройте доступ к процессу ольки из других процессов (маленький драйвер).
А также закройте баг с DebugOutputString в оле.




Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 11 февраля 2006 22:54
· Личное сообщение · #12

UniSoft пишет:
Да нифига он не передирает вовсе.

ну ну =) я вообще-то про те апи которые использует сам прот во время работы, а не про защиту импорта в запакованном файле и кста "передирает" - в смысле проверки (прохождения) кода апи на наличие бряков ;)

UniSoft пишет:
Не такой он и сложный этот экзекриптор, как кажется.

ты разобрался с метаморфом ? написал прогу которая способна его свернуть в читабельный код ?
PS ведь там основная защита это метаморф а не импорт и антиотладка...


 eXeL@B —› Программирование —› выполнение апи на эмуле
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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