Autor
|
Tema: Funcion WriteFile (ASM) (Leído 19,053 veces)
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola gracias pro contestar,algfinal el code queda asin: .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
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
Hola gracias pro contestar,algfinal el code queda asin: .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
Mensajes: 851
BCN CITY
|
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
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
.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...
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
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
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
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
Mensajes: 851
BCN CITY
|
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
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
.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: 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í: invoke GlobalAlloc,GPTR,eax push eax invoke ReadFile,ebx,eax,edx,addr dwBytes,0 pop eax mov dword ptr ds:[eax+2048h],"Bye"
Saludos
|
|
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
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: .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
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
quita la parte que dice .stack 100h y prueba a ver... pasaste el debugger?
|
|
|
En línea
|
|
|
|
|
|