Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Вниз

Смена заголовка файла!   Найти похожие ветки 

 
agentru   (2003-06-05 23:42) [0]

У меня такой вопрос! Как переписать один файл в другой, так, чтобы запустился сначало мой, а потом программа носитель. Не копируя себя????


 
MBo   (2003-06-06 06:00) [1]

Хлопец, ты уже достал со своими потугами на вирусописательство-членовредительство.


 
agentru   (2003-06-06 08:36) [2]

MBo ©
А вот так не обижай я не собираюсь быть вирусописателем!


 
StAL   (2003-06-06 12:51) [3]

Можно дописать к файлу секцию с кодом, а затем прочесть в заголовке PE AddressOfEntryPoint и заменить ее на адрес первой инструкции в своей секции. После выполнения нужных операций дописанный код должен выполнить безусловный переход на оригинальный AddressOfEntryPoint.
Смотри только, вирус не напиши! :)


 
NightAngel   (2003-06-06 14:20) [4]

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

С помощью рук, головы, и Господа Бога!
Извините, не сдержался.

Ну а в чём проблема-то?
Ищите документацию (описание) по формату PE файлов и переписывайте один файл в другой. Проблемы Вас ждут при этом следующие: Во первых, внедряемый исполняемый код должен быть базонезависимым (т.к. имеет место быть неопределённость базового адреса копируемого кода). Код на ЯВУ не может быть базонезависимым в силу негибкости компиляторов (уточнение: может, но только в случае неиспользования им глобальных меток, отключения оптимизации кода и т.д.). Во вторых возникает вопрос о вызовах API функций внедряемого кода (а Вы наверняка будете ими пользоваться), таблица импорта отсутствует. Вам придётся решить вопрос о том в какое место в файле Вы будете записывать внедряемый код: Добавление новой(ых) секции(й). Запись в начало/в конец какой-нибудь секции, с её увеличением (раздвигаем файл), необходима таблица фиксапов, придётся перепатчить весь файл. Запись в конец кодовой секции с предварительной ее упаковкой, длина файла не меняется. Запись в свободное место в существующих секциях. Дописывать код в последнюю секцию файла и т.д. с соответствующими сложностями. Конечно-же все эти проблемы решаемы, но я думаю Вам это быстро надоест. Ну а если нет, тогда Успехов!


 
Palladin   (2003-06-06 16:04) [5]


> agentru © (06.06.03 08:36)

а вот так приведи-ка разумное объяснение твоему вопросу


 
agentru   (2003-06-06 16:35) [6]

Palladin © (06.06.03 16:04)

Мне надо чтобы файл запускался при вводе пароля


 
NightAngel   (2003-06-06 21:57) [7]

> agentru © (06.06.03 16:35)
Мне надо чтобы файл запускался при вводе пароля


И как Вы думаете сколько понадобиться времени, чтобы снять такой пароль?

Советую Вам сделать следующее:
В качестве ключа, для шифрования/дешифрования, используется фраза, введенная пользователем, из которой учитываются только первые 16 символов. Реально же используется 64-битный ключ, являющийся результатом XOR"а обеих 8-байтных частей ключа. Закриптованую программу смогут использовать лишь те, кто знает пароль. Для криптовки можно выбрать Blowfish: плюсы в его скорости, прозрачной реализации и отсутствие необходимых для его работы данных. Шифрование производить в режиме CBC т.е. когда текущий блок данных XOR"ится с предыдущим и шифруется, и так до конца данных. Шифровать кодовую секцию, данные и импорты. После этого в файл дописывать новую секцию, содержащую декриптор/загрузчик, на который и скорректировать RVA PE-шника.
В результате этих операций:
1) Файл невозможно запустить без знания ключа.
2) Невозможно определить, что представляет собой программа - код, данные и импорты неизвестны, т.е. все пункты, указывающие неким образом на действия программы.
3) На диске содержится лишь криптованый файл, расшифровка происходит непосредственно в памяти. Но это обстоятельство не дает шифровать инсталляторы/шифровщики.
Действия загрузчика/декриптора:
1) Получить ключ.
2) Попытаться декриптовать некоторые секции.
3) Загрузить все используемые библиотеки и настроить импорт.
4) Если требуется, то использовать фиксапы и настроить адреса.
5) Если есть Tls callback, то пройти по списку функций.
6) Передать управление программе.
Конечно, можно потрассировать декриптор, но ключ естественно не хранить в нем, а хранить лишь crc32 на каждую секцию. Т.е. после ввода passkey"я происходит декриптовка всей секции, затем сравнивается crc декриптованой секции и оригинальной и если что-то не так, то завершать процесс.

Удачи!


 
agentru   (2003-06-09 13:50) [8]

NightAngel
Большой спасибо!!!!


 
StAL   (2003-06-11 09:51) [9]

Есть рабочий пример дописывания секции к PE файлу. Если нужен, пиши
С ув. Алексей



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
14-81920
Best Gun
2003-08-06 19:27
2003.08.25
Анонимный прокси


1-81607
Step[B.M.]
2003-08-15 03:48
2003.08.25
Как програмно опуститься на последнюю строчку ListView


3-81535
kserg
2003-07-25 18:51
2003.08.25
вопрос по MS SQL-серверу


14-81928
alextov
2003-08-06 10:16
2003.08.25
Альтернативные средства разработки графики


3-81555
sixep
2003-07-30 19:10
2003.08.25
Помогите открыть базу данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский