elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Funcion WriteFile (ASM)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 5 Ir Abajo Respuesta Imprimir
Autor Tema: Funcion WriteFile (ASM)  (Leído 18,980 veces)
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Funcion WriteFile (ASM)
« Respuesta #10 en: 4 Enero 2010, 13:46 pm »

Hola gracias pro contestar,algfinal el code queda asin:
Código:
.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
invoke ReadFile,ebx,addr lpBuffer,eax,addr dwBytes,0
mov eax,lpBuffer
mov dword ptr ds:[eax+2048h],"Bye"
pop ecx ;ecx=Tamaño archivo
pop ebx ;ebx=Handle Archivo
push ebx
invoke WriteFile,ebx,addr lpBuffer,ecx,addr dwBytes,0
pop ebx
invoke CloseHandle,ebx

invoke ExitProcess,0

end start

no me da eeror al ensamblarlo peor cuando lo ejecuto me sale un eeror de windows de esos que dice Windows detecto un problema i debe cerrarse,por lo que no me modifica aun el ejecutable men.exe ppffff esto parece imposible,no pensava k fuera tan dificil,alomeujor no uso bien el editor Hexa para ver el offset donde esta la cadena que quiero modificar,uso el WinHex,con el abro el ejecutable men.exe,busco la cadena que quiero modificar i al lado me sale el  offset: 0002048

que puedo hacer???

gracias de antemano


En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Funcion WriteFile (ASM)
« Respuesta #11 en: 4 Enero 2010, 15:57 pm »

Hola gracias pro contestar,algfinal el code queda asin:
Código:
.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
invoke ReadFile,ebx,addr lpBuffer,eax,addr dwBytes,0
mov eax,lpBuffer
mov dword ptr ds:[eax+2048h],"Bye"
pop ecx ;ecx=Tamaño archivo
pop ebx ;ebx=Handle Archivo
push ebx
invoke WriteFile,ebx,addr lpBuffer,ecx,addr dwBytes,0
pop ebx
invoke CloseHandle,ebx

invoke ExitProcess,0

end start

no me da eeror al ensamblarlo peor cuando lo ejecuto me sale un eeror de windows de esos que dice Windows detecto un problema i debe cerrarse,por lo que no me modifica aun el ejecutable men.exe ppffff esto parece imposible,no pensava k fuera tan dificil,alomeujor no uso bien el editor Hexa para ver el offset donde esta la cadena que quiero modificar,uso el WinHex,con el abro el ejecutable men.exe,busco la cadena que quiero modificar i al lado me sale el  offset: 0002048

que puedo hacer???

gracias de antemano


Tienes varios errores:

1) La variable lpBuffer es muy pequeña

lpBuffer dd ?

si quieres usar la variable buffer de tan solo 4bytes deberias en ella almacenar un puntero a una direccion de memoria reservada para datos creada con GlobalAlloc, pasando como parametro el tamaño que obtienes con GetFileSize. asi no deberia de dar problemas.

2) Tratas de escribir el una direccion de memoria que seguramente no tienes permisos.

mov eax,lpBuffer
mov dword ptr ds:[eax+2048h],"Bye"

Como te dije lpBuffer solo tiene 4 bytes... cuando dices que quieres escribir "Bye" en la direccion que esta a 2048h bytes de distancia no sabes en que direccion estas tratando de escribir. no se si me doy a entender. si la variable lpBuffer tuviera como minimo ese desplazamiento que propones mas 4 bytes seria posible, de lo contrario no.


En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Funcion WriteFile (ASM)
« Respuesta #12 en: 4 Enero 2010, 18:28 pm »

Hola R.N.A,gracias por tu respuesta

y si que te explikas bn,soy yo k no me enterono entendi mucho lo que dijiste,ya me save mal i todo preguntaros tanto pero es que me urge lograr eso,podrias poner el codigo tal i como seria para que funcionara???


es k yo no entendi mucho lo que debo hacer segun tu :S:S:S:S

me arias un grandisimo favor!!


salu2 amigo!
En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Funcion WriteFile (ASM)
« Respuesta #13 en: 4 Enero 2010, 18:34 pm »

Código
  1. .386
  2. .model flat,stdcall
  3. .stack 100h
  4. option casemap:none
  5. include Tot.inc
  6.  
  7. .data
  8.  
  9. Fil db 'men.exe',0
  10.  
  11. .data?
  12.  
  13. lpBuffer dd ?
  14. dwBytes dd ?
  15.  
  16.  
  17. .code
  18. start:
  19.  
  20. invoke CreateFile,offset Fil,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0
  21. push eax
  22. invoke GetFileSize,eax,0
  23. pop ebx ;ebx=Handle Archivo
  24. push ebx
  25. push eax
  26. mov edx, eax
  27. invoke GlobalAlloc,GPTR,eax
  28. invoke ReadFile,ebx,eax,edx,addr dwBytes,0
  29. mov dword ptr ds:[eax+2048h],"Bye"
  30. pop ecx ;ecx=Tamaño archivo
  31. pop ebx ;ebx=Handle Archivo
  32. push ebx
  33. invoke WriteFile,ebx,eax,ecx,addr dwBytes,0
  34. pop ebx
  35. invoke CloseHandle,ebx
  36.  
  37. invoke ExitProcess,0
  38.  
  39. end start

Ese codigo deberia de funcionar...
En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Funcion WriteFile (ASM)
« Respuesta #14 en: 4 Enero 2010, 18:40 pm »

Ensamblar me lo ensambla i obtengo el EXE,peor me sale el maldito error: pro.exe ha detectado un problema y debe cerrarse,por que pasa eso?

puede ser eso que decias de los permisos??

como puedo solucionar eso si es el caso??



gracias por el code ;) ere sun crack!
En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Funcion WriteFile (ASM)
« Respuesta #15 en: 4 Enero 2010, 18:55 pm »

Ensamblar me lo ensambla i obtengo el EXE,peor me sale el maldito error: pro.exe ha detectado un problema y debe cerrarse,por que pasa eso?

puede ser eso que decias de los permisos??

como puedo solucionar eso si es el caso??



gracias por el code ;) ere sun crack!

Verifica el tamaño del archivo... creo que el problema aun reside en que estas excediendo el lugar donde puedes escribir.

Si  tienes un Debugger ejecuta el programa instruccion por instruccion y dinos en que lugar falla
En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Funcion WriteFile (ASM)
« Respuesta #16 en: 4 Enero 2010, 19:02 pm »

El tamaño del programa que modifica el otro exe es de 2,50 kb (2.560 bytes)
i el del ejeutable que sesupone sera modificado es del mimso tamaño :S


i lo del debugger lo probare aver,puede ser eso del tamaño???
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Funcion WriteFile (ASM)
« Respuesta #17 en: 4 Enero 2010, 20:08 pm »

Código
  1. .386
  2. .model flat,stdcall
  3. .stack 100h
  4. option casemap:none
  5. include Tot.inc
  6.  
  7. .data
  8.  
  9. Fil db 'men.exe',0
  10.  
  11. .data?
  12.  
  13. lpBuffer dd ?
  14. dwBytes dd ?
  15.  
  16.  
  17. .code
  18. start:
  19.  
  20. invoke CreateFile,offset Fil,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0
  21. push eax
  22. invoke GetFileSize,eax,0
  23. pop ebx ;ebx=Handle Archivo
  24. push ebx
  25. push eax
  26. mov edx, eax
  27. invoke GlobalAlloc,GPTR,eax
  28. invoke ReadFile,ebx,eax,edx,addr dwBytes,0
  29. mov dword ptr ds:[eax+2048h],"Bye"
  30. pop ecx ;ecx=Tamaño archivo
  31. pop ebx ;ebx=Handle Archivo
  32. push ebx
  33. invoke WriteFile,ebx,eax,ecx,addr dwBytes,0
  34. pop ebx
  35. invoke CloseHandle,ebx
  36.  
  37. invoke ExitProcess,0
  38.  
  39. end start

Ese codigo deberia de funcionar...

Tiene un error ese código:
Código
  1. invoke GlobalAlloc,GPTR,eax
  2. invoke ReadFile,ebx,eax,edx,addr dwBytes,0
  3. mov dword ptr ds:[eax+2048h],"Bye"
  4.  

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

Código
  1. invoke GlobalAlloc,GPTR,eax
  2. push eax
  3. invoke ReadFile,ebx,eax,edx,addr dwBytes,0
  4. pop eax
  5. mov dword ptr ds:[eax+2048h],"Bye"
  6.  

Saludos

En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Funcion WriteFile (ASM)
« Respuesta #18 en: 4 Enero 2010, 20:42 pm »

Hola hacker_Zero acao de probar tu code i ensambla bien pero cuanod ejectuo aun me aparece el Hijo**** del error,el de que se encontro un eeror i debe cerrarse :(

me estoi cacho desanimado :(



es impobile!!!!

:(

poniendo el siguiente code:
Código:
.386
.model flat,stdcall
.stack 100h
option casemap:none
include Tot.inc
 
.data
 
Fil db 'C:\masm32\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
push eax
invoke ReadFile,ebx,eax,edx,addr dwBytes,0
pop eax
mov dword ptr ds:[eax+800h],"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

aveces me da error aveces no,i una vez me a modificado el otro exe,pero cuando e ejecutado el otro exe se abria unaventana ms-dos i me decia porgrama demasiado extenso para colocarlo en meoria :S
« Última modificación: 4 Enero 2010, 21:15 pm por Riki_89D » En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Funcion WriteFile (ASM)
« Respuesta #19 en: 4 Enero 2010, 21:05 pm »

quita la parte que dice  .stack 100h y prueba a  ver... pasaste el debugger?
En línea

Páginas: 1 [2] 3 4 5 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines