Funcion WriteFile (ASM)

Iniciado por Riki_89D, 3 Enero 2010, 18:37 PM

0 Miembros y 1 Visitante están viendo este tema.

YST

Mejor que nada por que no debuggear como dice RNA ?

Te digo por experiencia si no quieres demorarte 3 años en encontrar cada error tienes que debuggear :P


Yo le enseñe a Kayser a usar objetos en ASM

Riki_89D

Pues nada quitando el Stack no funciono comop puedo debuggeear,el MASM32 lleva algo para hacerlo??

nunca lo hice,salu2

[L]ord [R]NA

OllyDbg... existen muchos manuales en la zona de ingenieria inversa.

bizco

#23
GlobalAlloc te modifica edx. no estaria de mas que verificaras que el resultado de las funciones son los esperados y no tendrias estos problemas.

yo usaria createfile,createfilemapping,mapviewoffile y con rep mov* copias lo que necesites directamente.

Riki_89D

#24
Bueno encontre un codigo en donde decian que al utilizar CreateFIleMapping
MapViewOfFile,

si no boi mal serviria para poner en memoria el ejecutable en question (memoria compartida) i entonces lo podria modificar i escribir con WriteFile,si me equivoco corriganme porfavor,


este es el code que sesupone pone al ejecutable que quiero modificar en memoria:
Código (asm) [Seleccionar]

.386
.model flat,stdcall
.stack 200h

option casemap:none
include Tot.inc

.data

Fil db 'C:\masm32\men.exe',0

.data?
tam db 32 dup(?)


.code
start:

invoke CreateFile,offset Fil,GENERIC_WRITE+GENERIC_READ,FILE_SHARE_READ+FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0
push eax
invoke GetFileSize,eax,0
push eax
pop eax; Tam
pop ebx; Handle
invoke CreateFileMapping,ebx,0,PAGE_READWRITE,0,eax,0
mov ecx,eax   ;ecx = mapp

invoke MapViewOfFile,ecx,FILE_MAP_ALL_ACCESS,0,0,0
mov edx,eax

invoke ExitProcess,0

end start


nose si estara bien

despues de eso como escribo en el????

quitar el archivo de la memoria ya lo se hacer solo necesito escribir en el,si saveis de alguna solucion mas no sera mal muchas gracias expertos

bizco

mov [edx+offset],datos o rep o de la forma que mas te guste.

YST

Código (asm) [Seleccionar]

push eax
pop eax


Para que haces eso?


y para evitar ese
Código (asm) [Seleccionar]
push eax
...
pop ebx


Vale un mov ebx,eax


Yo le enseñe a Kayser a usar objetos en ASM

[L]ord [R]NA

Y aun no puedes modificar el archivo con WriteFile o con MapViewOfFile?

Riki_89D

#28
POR FINNNNNNNNNNNNNNNNNNNNNNNNNNN!!!


Finalmente me modifica el exe i no me da errores todo perfecto!! :D:D:DD:


les dejo el code pro que os lo mereceis que soys unos cracks de verdad!! sabia k podia confian en bosotros en todos los que me abeis ayudado mucha sgracias de verdad!!
Código (asm) [Seleccionar]

.386
.model flat,stdcall
.stack 200h

option casemap:none
include Tot.inc

.data

Fil db 'C:\masm32\men.exe',0


.data?
tam db 32 dup(?)


.code
start:

invoke CreateFile,offset Fil,GENERIC_WRITE+GENERIC_READ,FILE_SHARE_READ+FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0
push eax
invoke GetFileSize,eax,0
push eax
pop eax; Tam
add eax,eax
pop ebx; Handle
invoke CreateFileMapping,ebx,0,PAGE_READWRITE,0,eax,0
mov ecx,eax   ;ecx = mapp

invoke MapViewOfFile,ecx,FILE_MAP_ALL_ACCESS,0,0,0
mov edx,eax

mov dword ptr ds:[edx+800h],'jej'

invoke ExitProcess,0

end start


[Zero]

Si lo mapeas en memoria, al cambiar los datos en memoria ya se guardan automáticamente en disco.

Con WriteFile, había editado mi post corrgiendo mi code, creo que debería de funcionar  :P.

Saludos

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