Форум: "Система";
Текущий архив: 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