Cacher l'execution sous 9x/me [masm32]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 767 fois - Téléchargée 28 fois

Contenu du snippet

tres pratique pour rendre invisible son programme :)
inutile de precisier dans quel but ...

Source / Exemple :


.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
CacherProg proto

.data
ClassName db "SimpleWinClass",0
AppName  db "Regarde les taches en cours ... ( marche juste avec win 9X/ME )",0
kernel_name       DB "KERNEL32.DLL", 0
kernel_function   DB "RegisterServiceProcess", 0

.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
.code
start:
	invoke GetModuleHandle, NULL
	mov    hInstance,eax
	invoke GetCommandLine
	mov    CommandLine,eax
	invoke CacherProg
	invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
	invoke ExitProcess,eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
	LOCAL wc:WNDCLASSEX
	LOCAL msg:MSG
	LOCAL hwnd:HWND
	mov   wc.cbSize,SIZEOF WNDCLASSEX
	mov   wc.style, CS_HREDRAW or CS_VREDRAW
	mov   wc.lpfnWndProc, OFFSET WndProc
	mov   wc.cbClsExtra,NULL
	mov   wc.cbWndExtra,NULL
	push  hInstance
	pop   wc.hInstance
	mov   wc.hbrBackground,COLOR_WINDOW+1
	mov   wc.lpszMenuName,NULL
	mov   wc.lpszClassName,OFFSET ClassName
	invoke LoadIcon,NULL,IDI_APPLICATION
	mov   wc.hIcon,eax
	mov   wc.hIconSm,eax
	invoke LoadCursor,NULL,IDC_ARROW
	mov   wc.hCursor,eax
	invoke RegisterClassEx, addr wc
	INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
           WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
           CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
           hInst,NULL
	mov   hwnd,eax
	invoke ShowWindow, hwnd,SW_SHOWNORMAL
	invoke UpdateWindow, hwnd
	.WHILE TRUE
		invoke GetMessage, ADDR msg,NULL,0,0
		.BREAK .IF (!eax)
		invoke TranslateMessage, ADDR msg
		invoke DispatchMessage, ADDR msg
	.ENDW
	mov     eax,msg.wParam
	ret
WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
	.IF uMsg==WM_DESTROY
		invoke PostQuitMessage,NULL
	.ELSE
		invoke DefWindowProc,hWnd,uMsg,wParam,lParam		
		ret
	.ENDIF
	xor eax,eax
	ret
WndProc endp

CacherProg     PROC
                LOCAL h_kernel:DWORD, addr_function:DWORD, return_val:DWORD
                INVOKE GetModuleHandle, ADDR kernel_name
                MOV h_kernel, EAX
                INVOKE GetProcAddress, h_kernel, ADDR kernel_function
                MOV addr_function, EAX
                .IF EAX == NULL
                      MOV return_val, -1
                .ELSE
                    PUSH 1
                    PUSH 0
                    CALL EAX

                    AND return_val, 0
               .ENDIF
                MOV EAX, return_val
                RET
CacherProg     ENDP

end start

Conclusion :


Cendra

A voir également

Ajouter un commentaire Commentaires
Messages postés
22
Date d'inscription
samedi 27 avril 2002
Statut
Membre
Dernière intervention
19 décembre 2007

Merci pour la source, mais comment faire le même chose sous XP ou Vista?
Messages postés
56
Date d'inscription
mardi 27 août 2002
Statut
Membre
Dernière intervention
4 février 2008
1
oui on peu le réduire à ca :

kernel_name DB "KERNEL32.DLL", 0
kernel_function DB "RegisterServiceProcess", 0

INVOKE GetModuleHandle, ADDR kernel_name
INVOKE GetProcAddress, EAX, ADDR kernel_function
MOV addr_function, EAX
Messages postés
77
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
18 octobre 2007

Ah, il m'a bien fallu 5 min pour comprendre ce que faisait la source :s. Enfin bref je tiens a dire que j'utilise exactement la meme méthode en c et que ca tiens en 3 lignes...
@++
Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007

Ne sois pas si négatif gg00xiv. Le principe et le geste sont pertinent. C'est vrai qu'il ya 80% de code en trop mais bon...c cool @+
Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
13
les instruction if, then else, etc ... je me demande si c vraiment de l'assembleur tout ca, ou c simplement pour se donner un genre que ya kelkeu mov de temps en temps
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.