Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - [Zero]

#481
ASM / Re: Funcion WriteFile (ASM)
4 Enero 2010, 20:08 PM
Cita de: R.N.A. en  4 Enero 2010, 18:34 PM
Código (asm) [Seleccionar]
.386
.model flat,stdcall
.stack 100h
option casemap:none
include Tot.inc

.data

Fil db 'men.exe',0

.data?

lpBuffer dd ?
dwBytes dd ?


.code
start:

invoke CreateFile,offset Fil,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0
push eax
invoke GetFileSize,eax,0
pop ebx ;ebx=Handle Archivo
push ebx
push eax
mov edx, eax
invoke GlobalAlloc,GPTR,eax
invoke ReadFile,ebx,eax,edx,addr dwBytes,0
mov dword ptr ds:[eax+2048h],"Bye"
pop ecx ;ecx=Tamaño archivo
pop ebx ;ebx=Handle Archivo
push ebx
invoke WriteFile,ebx,eax,ecx,addr dwBytes,0
pop ebx
invoke CloseHandle,ebx

invoke ExitProcess,0

end start


Ese codigo deberia de funcionar...

Tiene un error ese código:
Código (asm) [Seleccionar]

invoke GlobalAlloc,GPTR,eax
invoke ReadFile,ebx,eax,edx,addr dwBytes,0
mov dword ptr ds:[eax+2048h],"Bye"


Al llamar a ReadFile, el valor de eax se sobreescribe con el retorno de esa API. Prueba así:

Código (asm) [Seleccionar]

invoke GlobalAlloc,GPTR,eax
push eax
invoke ReadFile,ebx,eax,edx,addr dwBytes,0
pop eax
mov dword ptr ds:[eax+2048h],"Bye"


Saludos

#482
ASM / Re: Funcion WriteFile (ASM)
3 Enero 2010, 23:12 PM
Yo uso FASM, por lo que no hablo a ciencia cierta, pero creo que:
Código (asm) [Seleccionar]

invoke CreateFile,offset Fil,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0


Esa lína está mal, Fil ya es un puntero, no es necesario el 'offset':
Código (asm) [Seleccionar]

invoke CreateFile,Fil,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0


Me equivoqué, está bien tal como o pusiste, parece que FASM y MASM tratan a los punteros de formas opuestas sintácticamente  :xD.



Edito:

Además en el segundo code pusiste:
Código (asm) [Seleccionar]

invoke ReadFile,eax,addr lpBuffer,eax,addr dwBytes,0


en vez de:
Código (asm) [Seleccionar]

invoke ReadFile,ebx,addr lpBuffer,eax,addr dwBytes,0




Edito2: Corregí algunos errores que tenía mi code  :P.

Saludos
#483
ASM / Re: Funcion WriteFile (ASM)
3 Enero 2010, 19:28 PM
A ver, lo primero sería abrir el ejecutable con un editor hexadecimal, como dice YST y ver donde empieza la cadena "Hola", una vez tengas la dirección, pongamos que por ejemplo es 0x220 sería algo como:

Código (asm) [Seleccionar]
lpBuffer dd ?
dwBytes dd ?

invoke CreateFileA,"C:\ElFichero.exe",GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0
push eax
invoke GetFileSize,eax,0
pop ebx ;ebx=Handle Archivo
push ebx
push eax
invoke GlobalAlloc,GPTR,eax
mov [lpBuffer],eax
pop ecx
pop ebx
push ebx
push ecx
invoke ReadFile,ebx,[lpBuffer],ecx,addr dwBytes,0
mov eax,[lpBuffer]
mov dword ptr ds:[eax+0x220],"Bye" ;Si fueran más de 4 bytes tendrías que usar mCopyMemory, pero siempre sin superar el tamaño de la cadena original
pop ecx ;ecx=Tamaño archivo
pop ebx ;ebx=Handle Archivo
push ebx
;Tal vez necesites llamar a SetFilePointer antes de escribir
invoke WriteFile,ebx,[lpBuffer],ecx,addr dwBytes,0
pop ebx
invoke CloseHandle,ebx


Saludos
#484
ASM / Re: Funcion WriteFile (ASM)
3 Enero 2010, 19:06 PM
 :rolleyes:. Que tipo de variable? Una cadena de caracteres? Supongo que será una que se guarde en el archivo en disco. Debes estudiarte bien el Formato PE para hacer esas cosas, si es para una cosa puntual puedes simplemente hardcodear la direccion y lo sobreescribes, primero llamas a CreateFile, luego a ReadFile, y cuando tengas el archivo en memoria te desplazas a donde está la variable que quieres cambiar, la cambias y luego guardas los cambios con WriteFile.

No entiendo del todo que es lo que quieres hacer  :P.

Saludos
#485
Si añades la url del foro a un gadget de contenido rss puedes ver las noticias del foro.

Saludos
#486
Abril negro / Re: Proyecto Metamorph
31 Diciembre 2009, 12:01 PM
Aún  no está lista  :P.

Saludos
#487
Abril negro / Re: Proyecto Metamorph
30 Diciembre 2009, 18:36 PM
Pero es inviable hacer un virus que haga lo que ésta herramienta, creo que no entendiste muy bien el funcionamiento. La herramienta analizará el ejecutable e intentará modificarlo con el fin de romper las firmas de los antivirus, siempre sin colocar código que pueda generar una nueva. La mayoría de las firmas que ponen las compañías antivirus siguen patrones bastante predecibles, y el objetivo de la herramienta es cambiar ese patrón.

Saludos
#488
Bueno, pues cómo dice el título del tema, a mi parecer, éste subforo está un poco escondido, cosa que no debería de pasar en un foro de ésta temática. La ingeniería inversa es una de las ramas más gruesas del "mundo underground", véase su relación con la programación (sobre todo a bajo nivel), la búsqueda de vulnerabilidades en aplicaciones, y el análisis y el diseño del malware. Son temas que se tratan en gran parte de los subforos, sin embargo el de más peso está medio escondido:

No hay sección sobre Cracking?
Sugerencia: Una sección de Cracking¿?
¿Donde está la sección Ingeniería Inversa?
Las preguntas de Cracking en q foro van?
Me presento y sugerencia

Entiendo que no puede haber demasiados subforos en la página principal del foro, pero veo como un error esconder subforos de "tanto peso".

Saludos
#489
Abril negro / Re: Proyecto Metamorph
30 Diciembre 2009, 18:03 PM
Es más fácil sacar la estructura de los virus polimórficos, que a menudo no son más que una cifrado un poco variada. Las actuales heurísticas de los antivirus son capaces de romper éstas encriptaciones.

Saludos
#490
Más que la compresión lo que no me gustaba de GDI+ era la lentitud/consumo de cpu. Comprimía aproximadamente 25 capturas en 2-3 segundos, pero claro, a 100 de cpu, y eso para un RAT no es viable  :xD. El algoritmo LZ77 destaca por su rapidez, sobre todo en tiempo de descompresión, por lo que, aunque no tenga tanto ratio, no hay el problema de la cpu  :P.

Saludos