Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Слить два файла в один


Автор: ne0n 10.11.2005, 15:17
Собственно по сабжу. Но надо не просто запихнуть
2 файла в один, но и сделать так чтобы они работали.
Если кто не понял обьясняю:
Есть два файла f1 и f2.
Обьединяем их таким образом что при запуске общего экзешника
сначала запускается f1 а потом f2!
Сам пробовал не получилось smile

Автор: _hunter 10.11.2005, 15:42
пишеш простой ехе-шник ( третий ) которому первые два предаеш как ресурсы ( или взад прикрепляеш ) и который эти два файла запускает ( сохранив на диск )

Автор: Alex 10.11.2005, 15:46
ne0n, и что же это вы такое пишите, уж не трояно ли?

Автор: ne0n 10.11.2005, 15:47
Втом и дело, не подходит вариант запуска этих экзешников с диска.
Так бы я и сам сделал.
Пробовал приписать к началу одного фала второй ... ни чего не вышло.

Добавлено @ 15:51
Alex нет моя натура направлена больше на созедание чем на разрушение.
Давно эта задумка была(так к слову). что то вроде маленькой утилиты которая перед запуском основного файла проверяет его CRC если все впоряде дает зеленый свет, если нет
то финит аля комедия smile

Автор: Alex 10.11.2005, 15:56
Цитата(ne0n @ 10.11.2005, 15:47)
Alex нет моя натура направлена больше на созедание чем на разрушение.
Давно эта задумка была(так к слову). что то вроде маленькой утилиты которая перед запуском основного файла проверяет его CRC если все впоряде дает зеленый свет, если нет
то финит аля комедия

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

Автор: _hunter 10.11.2005, 15:58
не подходит запуск с диска -- недавно была тема про запуск из памяти.

Цитата
Пробовал приписать к началу одного фала второй ... ни чего не вышло.

а что ты эти хотел добится

Автор: ne0n 10.11.2005, 16:00
Если взять твой вариант он будет работать только на моей программе,
А я хочу чтобы можно было таким образом защитить другой софт.
Что то типа небольшого протектора.


Добавлено @ 16:05
Цитата(_hunter @ 10.11.2005, 15:58)
Цитата
Пробовал приписать к началу одного фала второй ... ни чего не вышло.

а что ты эти хотел добится


Хотел добится чтобы запускался сначала протектор, а потом утилита.
но почемуто запускался только протектор.

Автор: _hunter 10.11.2005, 16:35
Цитата
Если взять твой вариант он будет работать только на моей программе,

это почему это? этот загрузчик будет грузить что угодно.

Цитата
Хотел добится чтобы запускался сначала протектор, а потом утилита.

я в чай положил сахар. это должно было привести к закипанию чая. не закипел. странно...

Автор: ne0n 10.11.2005, 16:40
Цитата(ne0n @ 10.11.2005, 16:00)
Если взять твой вариант он будет работать только на моей программе,
А я хочу чтобы можно было таким образом защитить другой софт.
Что то типа небольшого протектора.

Это было адресованно Alex'y
Цитата(_hunter @ 10.11.2005, 16:35)
Цитата
Хотел добится чтобы запускался сначала протектор, а потом утилита.

я в чай положил сахар. это должно было привести к закипанию чая. не закипел. странно...


_hunter Может обьяснишь что я не так делал? Я раньше с файлами почти не работал(кроме текстовых)

Автор: _hunter 10.11.2005, 17:39
у exe-шников есть строгая структура ( и процедура запуска ) и простое приписывание данных (не понимая того, что ты делаеш ) к изменению ( правильному ) этой структуры ( и, соответственно, процедуры загрузки ) не приведет...

Автор: RideX 10.11.2005, 18:33
Цитата(ne0n @ 10.11.2005, 19:00)
А я хочу чтобы можно было таким образом защитить другой софт.
Что то типа небольшого протектора.

Без обид, если честно сказать, то ничего путёвого из этого у Вас не получится, можете не тратить время и заняться чем-нибудь другим. %)

P.S. Вообще пакеры/протекторы работают по другому принципу, в общих чертах это можно сказать так: в защищаемом файле создаются новая(ые) секция(и), в них пишется код распаковщика пакера/протектора и ставится точка входа. Соответственно при запуске этого файла сначала выполняется код распаковщика, а после этого управление передается на оригинальную точку входа программы. Механизм работы пакера/протектора аналогичен работе компьютерного вируса. Есть правда исключение: UPX - полностью перестраивает файл, который после обработки им состоит из трёх секций. Его исходники Open Source, так что можете глянуть ;)

Автор: Poseidon 10.11.2005, 18:57
ne0n, то что ты хочешь сделать так как ты хочешь, не получится. И тебе уже указали почему, но Joiner (а именно так это называется) я тебе покажу как делается. Смотри прикрепленные проект, изучай... smile

Автор: ne0n 10.11.2005, 21:04
Как я понял джуниор распаковывает оба файла а потом их запускает,
а нельзя заставить запускать файлы из самого джуниора?

Если у коко есть подкиньте инфы по работе с нетипизироваными файлами!!!

Автор: FRAGNATIC 10.11.2005, 22:11
Цитата
не подходит запуск с диска -- недавно была тема про запуск из памяти.

Автор: RideX 10.11.2005, 22:21
Цитата(ne0n @ 11.11.2005, 00:04)
Как я понял джуниор распаковывает оба файла

Файлы не пакованы, они просто извлекаются из ресурсов в неизменном виде.


Цитата(ne0n @ 11.11.2005, 00:04)
а нельзя заставить запускать файлы из самого джуниора

Нет, таким способом нельзя, нужно инжектить код в другой процесс. Вообще этот код полезен, в основном, для "приготовления" троянов, т.к. совершенно не автономен - для компиляции ресурсов и сборки итогового файла нужна установленная Delphi.

Цитата(ne0n @ 11.11.2005, 00:04)
подкиньте инфы по работе с нетипизироваными файлами

BlockRead/BlockWrite

Автор: Poseidon 10.11.2005, 23:39
Цитата(ne0n @ 10.11.2005, 21:04)
подкиньте инфы по работе с нетипизироваными файлами!!!
Вот основы:
Цитата
Не типизированные файлы - это двоичные файлы, которые могут содержать самые различные данные в виде последовательности байтов. Программист при чтении этих данных сам должен разбираться, какие байты к чему относятся.

Тип файловой переменной не типизированного файла объявляется следующим образом:

var <имя файловой переменной>: file;

Открытие не типизированных фалов осуществляется процедурами Reset и Rewrite, синтаксис которых несколько отличен от аналогичных процедур для других видов файлов тем, что в этих процедурах указывается размер одной записи в байтах. Вместо процедур записи и чтения Read и Write в не типизированных файлах имеются процедуры BlockRead и BlockWrite, которые читают или записывают указанное в них число записей.

Автор: FRAGNATIC 11.11.2005, 00:10
Цитата
нужно инжектить код в другой процесс

может поможет
http://wasm.ru/article.php?article=apihook_1
http://wasm.ru/article.php?article=apihook_2
http://wasm.ru/article.php?article=apihook_3

Автор: ne0n 11.11.2005, 21:24
Я пришел к выводу чо врятли то чтоя задумал можно реализовать на дельфях.(ох как обидно)
Хотя не знаю.... Надеюсь кто о сможет опровергнкть мой вывод.
На BlockRead и BlockWrite далеко не уедешь smile
почитав вчера много-много статей по написанию вирусов в голове мелькнуло три буквы...
asm(в с мысле ассемблер)
Походу только он мне поможет. (и с++ подойдет я думаю, но asm хотел давно выучить)
Ну тогда ладно всем спасибо за помощь!!!

Автор: Albinos_x 11.11.2005, 21:37
Цитата(ne0n @ 11.11.2005, 21:24)
почитав вчера много-много статей по написанию вирусов в голове мелькнуло три буквы...
asm(в с мысле ассемблер)
Походу только он мне поможет. (и с++ подойдет я думаю, но asm хотел давно выучить)

а что тебе мешает воспользоваться asm вставками...

Автор: FRAGNATIC 12.11.2005, 00:05
Цитата
Я пришел к выводу чо врятли то чтоя задумал можно реализовать на дельфях

ой тока не надо
оно дело асм
но если это реально и на С++ то можно и на дэлфи просто если ты видел статьи на эту тему с примерами на С++ но не видел статей на эту тему с примерами на дэлфи то это ни чего не значит )

Автор: RideX 12.11.2005, 08:57
Цитата(ne0n @ 12.11.2005, 00:24)
Надеюсь кто о сможет опровергнкть мой вывод
Всем известный ASProtect писался на Delphi 2 и только последнии его версии уже на Delphi 7.

Цитата(ne0n @ 12.11.2005, 00:24)
и с++ подойдет я думаю, но asm хотел давно выучить
Конечно, можно и на С++, можно даже от Borland, например Obsidium пишется на C++ Builder 6.0, но без знания ассемблера всё равно не обойтись. А вообще, возможность реализации какого-либо проекта обычно зависит только от глубины знаний, а не языка программирования, хотя писать драйвера всё же придётся(?) на MS VС++.

Автор: ne0n 12.11.2005, 14:59

Цитата(RideX @ 12.11.2005, 08:57)
Всем известный ASProtect писался на Delphi 2 и только последнии его версии уже на Delphi 7.

Никогда бы не подумал...

Автор: Poseidon 12.11.2005, 16:11
Цитата(ne0n @ 12.11.2005, 14:59)
Никогда бы не подумал...
То есть ты хочешь сказать что на Дельфи нельзя написать что-то толковое?

Автор: ne0n 12.11.2005, 18:11
Цитата(Poseidon @ 12.11.2005, 16:11)
То есть ты хочешь сказать что на Дельфи нельзя написать что-то толковое?


Я токого не говорил!!!
просто столь удчный проект наисан на языке , который не является системным!!!

З.Ы.Если захочешь то можно все сделать!!!

Автор: FRAGNATIC 12.11.2005, 20:51
Цитата
просто столь удчный проект наисан на языке , который не является системным!!!

лоооооооооооооооооооооооооооооооооооооол smile smile

Цитата
(и с++ подойдет я думаю, но asm хотел давно выучить)

что-то одно выучи для начала и тогда отпадут вопросы как такое написать
а если ты посидишь за С++ или асм немного всё ровно ты не поймёшь как сделать то что тебе сейчас нужно )
что-то одно выучи оч хорошо!!
не надо бегать от языка к языку а с чем-то одним работать и со временем перейти на другой язык не составит ни какого труда )

Автор: Alex 12.11.2005, 20:52
Модератор: Давайте вернёмся к теме обсуждения.

Автор: bartram 13.11.2005, 10:36
ne0n, запихни файл в виде массива символов, а потом формируй образ exe в памяти и запускай его точку входа, и будет тебе счастье smile

Автор: ne0n 13.11.2005, 16:15
Цитата(bartram @ 13.11.2005, 10:36)
ne0n, запихни файл в виде массива символов, а потом формируй образ exe в памяти и запускай его точку входа, и будет тебе счастье smile


А поподробней можно?

Цитата(FRAGNATIC @ 12.11.2005, 20:51)
что-то одно выучи для начала и тогда отпадут вопросы как такое написать
а если ты посидишь за С++ или асм немного всё ровно ты не поймёшь как сделать то что тебе сейчас нужно )
что-то одно выучи оч хорошо!!
не надо бегать от языка к языку а с чем-то одним работать и со временем перейти на другой язык не составит ни какого труда )


ОК!

bartram, не надо уже почитал...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)