Распаковка exe в память на лету.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Распаковка exe в память на лету.

Сообщение GAGArin » 28.07.2009 (Вт) 19:30

Итак вопрос, есть идея методики защиты, хотелось бы попробовать сделать. Представления обо всех операциях нулевое, так что извиняйте за незнание терминологии и литературы.

Итак есть защищаемый файл. Мы его шифруем, дописываем к нему маленький распаковщик который спрашивает ключ/пароль/серийник, после получения - распаковывает этим ключем защищаемый файл в память и передает ему управление. На диске пусто, покуда добрые какеры не вырежут нужный кусок памяти защита работает. Итак вопрос в том как его лучше распаковать в память? И, главное, как ему после этого передать управление?

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Распаковка exe в память на лету.

Сообщение ANDLL » 28.07.2009 (Вт) 20:14

Распаковать так - выделить память с правами rw, в нее дешифровать, заменить разрешения на re. Ключевые слова: VirtualAlloc, VirtualProtect
Что бы передать управление - jmp xxx. Ключевое слово - jmp
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Распаковка exe в память на лету.

Сообщение Admiralisimys » 04.12.2009 (Пт) 19:24

ANDLL с функциями VirtualAlloc, VirtualProtect проблем не возникло (прототип набрал в Visual C++) спасибо за подсказку. А вот как передавать управление пока не разобрался. По ключевому слову (jmp) нахожу заметку на wasm.ru – СТАТЬИ ⇒ Секреты Win32 ⇒ Запуск файла из памяти. Не затруднит ли уточнить критерии поиска/показать пример для языка высокого уровня? И возможно ли, при передачи управление на бинарник в памяти, передавать параметры командной строки?
Спасибо.

P.S.
Внимание отвечающим на первый пост, тема поднята для уточнение по второму посту, обратите внимание на даты постов.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Распаковка exe в память на лету.

Сообщение FireFenix » 04.12.2009 (Пт) 20:46

Admiralisimys писал(а):А вот как передавать управление пока не разобрался.

http://rsdn.ru/article/baseserv/peloader.xml
Admiralisimys писал(а):И возможно ли, при передачи управление на бинарник в памяти, передавать параметры командной строки?

1) Через сторонние примочки (файлы, реестр и др)
2) Вызывающая программа записывает в участки памяти (которые являются константами или прочим типом) зашифрованной программы
3) Системные сообщения
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Распаковка exe в память на лету.

Сообщение Admiralisimys » 04.12.2009 (Пт) 21:04

FireFenix БОЛЬШОЕ спасибо за ссылку!

Второй вариант предпочтительнее: делаю оболочку для консольной программы, желательно всё держать в одном файле, что бы по неосторожности пользователь не забыл скопировать все файлы, да и что бы программа не мусорила, и могла работать с лазерных носителей, а также директорий с правами только на чтение.
Да и просто хочу разобраться с этим вопросом - как оно бездисковое взаимодействие процессов.

Предполагал что при передачи параметров регистры или/и память может быть задействована (впрочем в бездисковом варианте больше нечего и задействовать ;)), видимо стоит углубится в изучение этого вопроса.

Ещё раз спасибо.

P.S.
Находил так же исходники на Делфи, так там используются недокументированные функции ntdll.dll


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 88

    TopList