All pastes #818749 Raw Edit

Something

public text v1 · immutable
·published 2007-12-16 14:45 UTC
rendered paste body
;************************************************************;
;		КОММЕНТЫ!!! заебало на след день как после 	    ;
;		пьянки его разбирать..Че и нахуй я хотела		    ;
;************************************************************;

.586
.model flat, stdcall
option casemap:none

STD_OUTPUT_HANDLE equ -11
STD_INPUT_HANDLE equ -12
RESOURSETYPE_DISK equ 1h

;лень подключать инки... легче так процедуры определить. Не ходите дети в школу)
extern lstrcatA@8:NEAR
extern lstrlen@4:NEAR
extern GetStdhandle@4:NEAR
extern WriteConsoleA@20:NEAR
extern ExitProcess@4:NEAR
extern GetCommandLineA@0:NEAR
extern WNetAddConnection2A@16:NEAR

NETRESOURCE struct
		dwScope			DWORD	?		;подсоединен, запоминаемый или глобальный ресурс
		dwType			DWORD	?		;диск, люой или сетевой принтр
		dwDisplayTipe	DWORD	?		;представление ресурса сет броузером
		dwUsage			DWORD	?		;нулл
		ipLocalName		DWORD	?		;локальное имя устройства
		ipRemoteName	DWORD	?		;Имя самого устройства. к примеру ЭПСОН или еще что
		ipComment		DWORD	?		;комментарий к данному устройству
		ipProvide		DWORD	?		;имя провайдера
NETRESOURSE ends 		

	includelib \masm32\lib\kernel32.lib
	includelib \masm32\lib\user32.lib
	includelib \masm32\lib\mpr.lib			
	;mrp.lib необходима для получения ресурсов локальной сети
	
.data

Error1		db			"Слишком мало параметров", 0		;если структура заполнится не до конца
Error2		db			"Ошибка", 0
TextStr		db			"-->", 0
Obnarujenie db 			"Были обнаружены следующие устройства: ", 0

.data?



NR		NETRESOURCE 		<0>
Buffer 		db 			?
BuffSize	db			100 dup(0)
BufferTwo	db			?
BuffZise	db 			100 dup(0)
Dero4kO		db 			0
DlinnaSimv	DWORD 		?
handl3		DWORD		?

.code

entry:

deskript:				;получение хэндлов.количеств параметров и прочей херни

push STD_OUTPUT_HANDLE
call GetStdHandle@4
mov handl3, eax
call NUMPAR 
cmp eax, 3				;хватит ли у нас параметров?
jnb okay				;если да.
lea ebx, Error1			;отобразим ошибку и с вещами на выход
call SETMSG
jmp ExitO_o

deskript endp

okay:					;если все параметры на месте, то едем дальше
						;получаем их
mov edi, 2
lea ebx, Buffer
call GETPAR				;param
mov edi, 3
lea ebx, BufferTwo
call GETPAR
;заполняем структуру
mov NR.dwType, 0
lea eax, BufferTwo
mov NR.IpLocalName, eax
lea eax, Buffer
mov NR.IpRemoteName, eax
mov NR.IpProvider, 0
;идем на коннект, хуле
push 0
push offset Dero4kO
push offset Dero4kO
push offset NR
call WNetAddConnection2A@16
cmp eax, 0
je edem_dalwe
lea ebx, Error2
call SETMSG
jmp ExitO_o

okay endp

edem_dalwe:

push offset TextStr
push offset Buffer
call lstrcatA@8
lea ebx, Buffer
call SETMSG 
jmp Perv

edem_dalwe endp

ExitO_o:

push 0
call ExitProcess@4

ExitO_o endp

perv:

cmp byte ptr [esi], 0
je chetv
cmp byte ptr [esi], 0
je vtor
add ecx, edx		;nomer parametra
xor edx, edx
jmp tret

perv endp

vtor:

or edx, 1

vtor endp

tret:

inc esi
jmp pjat

tret endp

chetv:

mov eax, ecx
ret
NUMPAR endp
;EBX ukazevaet na bufer, kuda belpomewen param
;stroka s NULL-okon4aniem
;EDI - nome parametra
get CommandLineA@0
mov esi, eax 		;pointer na strolu
xor ecx, ecx		;obNULL chet4ik
mov edx, 1

chetv endp

pjat:

cmp byte ptr [esi], 0
je devjat
cmp byte ptr [esi], 32
je shest
add ecx, edx		;n0m3r param
xor edx, edx
jmp sem

pjat endp

shest:

or edx, 1

shest endp

sem:

cmp ecx, edi
jne vosem
mov al, byte ptr [esi]
cmp al, 32
je vosem
mov byte ptr [ebx], al
inc ebx

sem endp

vosem:

inc esi
jmp pjat

vosem endp

devjat::

mov byte ptr [ebx], 0
ret
GETPAR endp
;vevod soobw
;ebx ---> str
SETMSG proc
	push ebx
	call lstrlen@4
	push 0
	push offset DlinnaSimv
	push eax
	push ebx
	push HANDL
	call WriteConsoleA@20
	ret
SETMSG endp	
devjat endp

end entry