|
1056
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Ayuda api hoking :P
|
en: 4 Mayo 2011, 20:55 pm
|
Muchas gracias una vez más  jajaja Este es el código funcional, lo comente para que mas gente lo comprenda tambien  ;########################################################## ;## Ejemplo API Hoking by Drinky94 ## ;## Agradecimientos a: ## ;## [Zero] por todo en lo que me ayuda ## ;## YST por su funcion ASCIITOUNICODE ## ;########################################################## format PE GUI 4.0 DLL entry DllEntryPoint include 'win32ax.inc' section '.code' code readable executable proc DllEntryPoint hinstDLL,fdwReason,lpvReserved locals proteccion dd ? endl stdcall ASCIITOUNICODE,mensajito,buffer;pasamos la cadena que se mostrara en MessageBoxW a Unicode invoke LoadLibrary,'user32.dll' ;Cargamos User32 invoke GetProcAddress,eax,"MessageBoxA" ;obtenemos la direccion de la api mov ebx,eax; ebx = direccion MessageBoxA mov eax,hook ;Calculamos la distancia entre el jmp y la funcion donde saltaremos sub eax,ebx sub eax,4 mov ecx,eax push ebx push ecx invoke VirtualProtect,ebx,5,PAGE_EXECUTE_READWRITE,addr proteccion ;le damos a 5 bytes permiso de escritura pop ecx pop ebx mov byte[ebx],0xE9 ;escribimos un jmp inc ebx mov dword[ebx],ecx ;escriimos la longitud del salto add ebx,4 ret endp proc hook,uno,dos,tres,cuatro ;funcion que remplaza a MesasgeBoxA invoke MessageBox,0,buffer,0,0 ;Si se llama a MessageBoxA, mostramos nuestro mensagito :PP mov eax,0 ;devolvemos cero jmp ebx ;saltamos donde nos quedamos para continuar la ejecucion. endp proc ASCIITOUNICODE,Cadena,Buffer ;Funcion By YST push ecx ebx mov eax,[Cadena] mov ebx,[Buffer] dec eax sub ebx,2 .bucle: inc eax cmp byte[eax],0 je .salir add ebx,2 mov cl,byte[eax] mov byte[ebx],cl mov byte[ebx+1],0 jmp .bucle .salir: pop ebx ecx ret endp proc ShowErrorMessage hWnd,dwError local lpBuffer:DWORD lea eax,[lpBuffer] invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,[dwError],LANG_NEUTRAL,eax,0,0 invoke MessageBox,[hWnd],[lpBuffer],NULL,MB_ICONERROR+MB_OK invoke LocalFree,[lpBuffer] ret endp ; VOID ShowLastError(HWND hWnd); proc ShowLastError hWnd invoke GetLastError stdcall ShowErrorMessage,[hWnd],eax ret endp section '.data' data readable writeable mensajito db 'Msgbox Hookeado',0 buffer db ? section '.idata' import data readable writeable library kernel,'KERNEL32.DLL',\ user,'USER32.DLL' import kernel,\ GetLastError,'GetLastError',\ SetLastError,'SetLastError',\ FormatMessage,'FormatMessageA',\ LocalFree,'LocalFree',\ LoadLibrary,'LoadLibraryA',\ GetProcAddress,'GetProcAddress',\ VirtualProtect,'VirtualProtect' import user,\ MessageBox,'MessageBoxW' section '.edata' export data readable export 'ERRORMSG.DLL',\ ShowErrorMessage,'ShowErrorMessage',\ ShowLastError,'ShowLastError' section '.reloc' fixups data discardable
salu2!
|
|
|
1058
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Ayuda api hoking :P
|
en: 4 Mayo 2011, 19:34 pm
|
Este es el código que he reparado con los errores que me diiste Zero pero sigue sin funcionar: format PE GUI 4.0 DLL entry DllEntryPoint include 'win32ax.inc' section '.code' code readable executable proc DllEntryPoint hinstDLL,fdwReason,lpvReserved locals proteccion dd ? endl invoke LoadLibrary,'user32.dll' invoke GetProcAddress,eax,"MessageBoxA" mov ebx,eax; ebx = direccion MessageBoxA invoke VirtualProtect,ebx,5,PAGE_EXECUTE_READWRITE,addr proteccion mov byte[ebx],0xE9 inc ebx call distancia distancia: pop ecx add ecx,4 sub ecx,hook mov dword[ebx],ecx add ebx,4 ret endp proc hook,uno,dos,tres,cuatro invoke MessageBox,0,'Juan te hookeo',0,0 mov eax,0 ret endp ; VOID ShowErrorMessage(HWND hWnd,DWORD dwError); proc ShowErrorMessage hWnd,dwError local lpBuffer:DWORD lea eax,[lpBuffer] invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,[dwError],LANG_NEUTRAL,eax,0,0 invoke MessageBox,[hWnd],[lpBuffer],NULL,MB_ICONERROR+MB_OK invoke LocalFree,[lpBuffer] ret endp ; VOID ShowLastError(HWND hWnd); proc ShowLastError hWnd invoke GetLastError stdcall ShowErrorMessage,[hWnd],eax ret endp section '.data' data readable writeable mensajito db ? section '.idata' import data readable writeable library kernel,'KERNEL32.DLL',\ user,'USER32.DLL' import kernel,\ GetLastError,'GetLastError',\ SetLastError,'SetLastError',\ FormatMessage,'FormatMessageA',\ LocalFree,'LocalFree',\ LoadLibrary,'LoadLibraryA',\ GetProcAddress,'GetProcAddress',\ VirtualProtect,'VirtualProtect' import user,\ MessageBox,'MessageBoxA' section '.edata' export data readable export 'ERRORMSG.DLL',\ ShowErrorMessage,'ShowErrorMessage',\ ShowLastError,'ShowLastError' section '.reloc' fixups data discardable
salu2! y gracias por la ayudaaa
|
|
|
1059
|
Seguridad Informática / Análisis y Diseño de Malware / Ayuda api hoking :P
|
en: 3 Mayo 2011, 20:41 pm
|
Bueno estoi intentando hookear una API desde una DLL creada en Fasm pero no lo consigo y nose que estoi haciendo mal, este es el código de la dll: format PE GUI 4.0 DLL entry DllEntryPoint include 'win32ax.inc' section '.code' code readable executable proc DllEntryPoint hinstDLL,fdwReason,lpvReserved locals proteccion dd ? endl invoke LoadLibrary,'user32.dll' invoke GetProcAddress,eax,"MessageBoxA" mov ebx,eax; ebx = direccion MessageBoxA invoke VirtualProtect,-1,ebx,5,PAGE_EXECUTE_READWRITE,edx mov ebx,0xE9 inc ebx mov dword[ebx],hook add ebx,4 ret endp proc hook,uno,dos,tres,cuatro invoke MessageBox,0,0,0,0 mov eax,0 ret endp ; VOID ShowErrorMessage(HWND hWnd,DWORD dwError); proc ShowErrorMessage hWnd,dwError local lpBuffer:DWORD lea eax,[lpBuffer] invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,[dwError],LANG_NEUTRAL,eax,0,0 invoke MessageBox,[hWnd],[lpBuffer],NULL,MB_ICONERROR+MB_OK invoke LocalFree,[lpBuffer] ret endp ; VOID ShowLastError(HWND hWnd); proc ShowLastError hWnd invoke GetLastError stdcall ShowErrorMessage,[hWnd],eax ret endp section '.data' data readable writeable mensajito db ? section '.idata' import data readable writeable library kernel,'KERNEL32.DLL',\ user,'USER32.DLL' import kernel,\ GetLastError,'GetLastError',\ SetLastError,'SetLastError',\ FormatMessage,'FormatMessageA',\ LocalFree,'LocalFree',\ LoadLibrary,'LoadLibraryA',\ GetProcAddress,'GetProcAddress',\ VirtualProtect,'VirtualProtectEx' import user,\ MessageBox,'MessageBoxA' section '.edata' export data readable export 'ERRORMSG.DLL',\ ShowErrorMessage,'ShowErrorMessage',\ ShowLastError,'ShowLastError' section '.reloc' fixups data discardable
Esperando repuesta... salu2!
|
|
|
|
|
|
|