Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.25;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
4-82003
Alexander666
2003-06-18 22:06
2003.08.25
Вопрос по работе с мышью


3-81595
Eduard
2003-07-30 18:20
2003.08.25
DBGridEh, D6 And FB-1. Проблема с сохранением информации


1-81815
frost
2003-08-13 10:14
2003.08.25
Список иконок !


4-82000
3223(jab)
2003-06-24 09:38
2003.08.25
Рисуем не стандартное окно в дельфи...


1-81686
ilka
2003-08-11 14:16
2003.08.25
проблема с TStrings