Joiner
|
xXxSh@dowxXx
|
Дата: Среда, 25.12.2013, 23:36 | Сообщение # 1
|
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
|
Всем как всегда доброго времени суток!
Ребята, прошу вашей помощи, так как у меня уже мозг-off на кануне нового года.
Кстати говоря ВСЕХ ВСЕХ ВСЕХ С НАСТУПАЮЩИМ! 
ну так вот, есть у меня исходник одного джойнера, правда если я правильно понял, где то в коде стаба ошибка (хотя может и не в стабе), файлы склеивает, хекс-редактором правда не проверял, но вроде склеивает, а вот при запуске, получается так что результативный файл как бы остается тем же файлом но с полезной нагрузкой в размере того с чем его клеили, целостность исходного файла вроде бы не нарушается, но распаковка почему то не происходит, хотя вроде бы в исходнике стаба все прописано, в общем кто может разобраться, гляньте пожалуйста.
Зарание огромное спасибо!
Сообщение отредактировал xXxSh@dowxXx - Среда, 25.12.2013, 23:38
|
|
|
|
|
d4rkzy
|
Дата: Пятница, 27.12.2013, 18:29 | Сообщение # 2
|
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
|
В стабе ошибку и ищи, яб посмотрел что там не так - ну в чужой код разобрать мне трудно =) По этому проще с нуля написать. (10 минут делов то) |
|
|
|
|
xXxSh@dowxXx
|
Дата: Пятница, 27.12.2013, 19:45 | Сообщение # 3
|
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
|
Цитата d4rkzy ( )
(10 минут делов то)
ну для меня это явно не 10 минут, да и джойнеры я раньше не писал.
|
|
|
|
|
d4rkzy
|
Дата: Пятница, 27.12.2013, 22:09 | Сообщение # 4
|
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
|
xXxSh@dowxXx, завтра тогда намучу простенький джойнер на дельфах - сюда выложу) |
|
|
|
|
xXxSh@dowxXx
|
Дата: Пятница, 27.12.2013, 22:37 | Сообщение # 5
|
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
|
Цитата d4rkzy ( )
завтра тогда намучу простенький джойнер на дельфах - сюда выложу)
ну в принципе с простыми функциями джойнера все понятно, в нете вон простых джойнеров пруд пруди, меня конкретно интересует склеивание различных файлов любых форматов без нарушения целостности файлов, так же интересует функция выдергивания иконок прямо из файлов, хотя вроде у меня где то был код такой, ну и конечно же склеивание любого количества файлов, а так же распаковка файлов прямо в памяти без лишнего копирования во всякие темп и тп.
что касается распаковки в мемори, то мне Волк-1024 скинул кое какие функции, пока сижу разбираюсь.
|
|
|
|
|
d4rkzy
|
Дата: Пятница, 27.12.2013, 22:49 | Сообщение # 6
|
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
|
Цитата xXxSh@dowxXx ( )
меня конкретно интересует склеивание различных файлов любых форматов без нарушения целостности файлов
Ты только что сказал что простыми функциями джойнера все понятно, значит тебе не понятно стало вдруг.
Пишешь стаб - в который билдер будет добавлять ресурсы (.RES) или писать файлы в конец твоего стаба.
(можно обойтись обычным writeln - правда скорость медляк)
Можно stream юзать - скорость быстрая - для джойнера самое то
Цитата xXxSh@dowxXx (  )
ыдергивания иконок прямо из файлов
Ресурсы опять. Выдераешь ресурс Icon из файла и сейвишь как .ico
Цитата xXxSh@dowxXx (  )
склеивание любого количества файлов, а так же распаковка файлов прямо в памяти без лишнего копирования во всякие темп и тп.
В другую твою тему кинул исходник запуск ехе из памяти.
А вообще - не понимаешь как сделать тупое склеивание файлов, читай ГУГЛ.
Ты щас просишь дать тебе исходник мега крутого джойнера+криптора или что?
Если хочешь узнать как написать - я все расписал.
Если сорец - гугл.
|
|
|
|
|
xXxSh@dowxXx
|
Дата: Пятница, 27.12.2013, 22:59 | Сообщение # 7
|
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
|
Цитата d4rkzy ( )
Ты щас просишь дать тебе исходник мега крутого джойнера+криптора или что?
Да нет, что ты, да и криптование меня сейчас пока что не интересует, за ненадобностью, вобщем то на основные мои вопросы ты уже ответил, за что большое спасибо, буду собирать
|
|
|
|
|
Anton93
|
Дата: Суббота, 28.12.2013, 17:15 | Сообщение # 8
|
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
|
xXxSh@dowxXx, он у меня вообще не работает, не пойму пока почему. выбираю файлы для склейки - выбивает ошибку. до стаба дело не доходит. он даже файл не собирает...
Проанализировал код стаба, заметил следующее.
Код
CopyFile(PChar(paramstr(0)),
PChar(TempFile), false);
//ну тут все поняно, тупо себя скопировали
.....
Pos := FileSize(F);
//а потом получили размер всего файла, что является стратовой позицией ниже
.....
LoadFromFile(TempFile, Temp +
IntToStr(l) + '.exe', Pos, Pos);
//и тут мы передаем как раз тот самый байт для оклейки. но был передан размер всего файла... в итоге он его не распакует
.....
это на глаз. в иделае конечно бы откомпилировать, но у меня даже сборшик не работает. системную ошибку выдает.
Цитата
меня конкретно интересует склеивание различных файлов любых форматов без нарушения целостности файлов
тут все очень просто. работай с файлами как НЕ с типизированными и все. а чтобы разделять надо какой-нить уникальный разделитель придумать (последовательность байт), или жестко прописывать размеры блоков. по которым он будет их отделять
d4rkzy,
Цитата
(можно обойтись обычным writeln - правда скорость медляк)
Можно stream юзать - скорость быстрая - для джойнера самое то
writeln крайне не рекомендую для таких вещей. в большинстве случаев файлы неработоспособны после такой записи. так как она типизированные данные пишет. в этом случае бинарник надо жестко обработать во время чтения, чтобы сделать понятной для этой процедуры и чтобы данные не потерялись/повредились.
что касается скорости, - blockread и blockwrite в помощь. задаем буфер и получаем быстрое копирование. последний раз тетстил на черве поражающем exe'шки - скорость записи была примерно 20mb в секунду. мало? думаю нет
ICQ: 41896
Сообщение отредактировал Anton93 - Суббота, 28.12.2013, 17:28
|
|
|
|
|
xXxSh@dowxXx
|
Дата: Суббота, 28.12.2013, 18:10 | Сообщение # 9
|
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
|
Anton93, очень познавательно, спасибо большое)
а не подскажите, возможно ли запустить файл из мемори, или из массива не создавая новых процессов, как бы программа работающия в адресном пространстве другой программы что ли, и реально ли это вобще? |
|
|
|
|
Anton93
|
Дата: Суббота, 28.12.2013, 18:32 | Сообщение # 10
|
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
|
xXxSh@dowxXx,
Цитата
а не подскажите, возможно ли запустить файл из мемори, или из массива не создавая новых процессов, как бы программа работающия в адресном пространстве другой программы что ли, и реально ли это вобще?
безусловно!
есть несколько методов

Внедрение в PE-заголовок

Внедрение в хвост секции

Внедрение в регулярную последовательность байт

и все это работает как один процесс, не создавая новых. возможности открываются большие 
реализовывается на чистом делфи без asm.
ICQ: 41896
|
|
|
|
|
d4rkzy
|
Дата: Суббота, 28.12.2013, 19:40 | Сообщение # 11
|
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
|
Цитата
writeln крайне не рекомендую для таких вещей. в большинстве случаев файлы неработоспособны после такой записи.
Ну это конечно, я имел виду blockwrite =)
Stream можно вполне использовать для таких целей - на каком то сайте видел функцию attach any code to any exe - из этой просто функции можно джойнер за 5 минут слепить (С шифрованием и тк)
Цитата xXxSh@dowxXx ( )
а не подскажите, возможно ли запустить файл из мемори
я вроде уже дал тебе исходник, который делает инжект ехе в память любого процесса, причем который работате на всех версиях винды
Anton93, Оверлей думаю лучший вариант =)
|
|
|
|
|