Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Иōҳ en 9 Marzo 2010, 23:54 pm



Título: [?]Registros de Windows <.<
Publicado por: Иōҳ en 9 Marzo 2010, 23:54 pm
Hola que tal tengo una duda la verdad, quisiera saber por que no puedo crear un valor dword dentro de varias carpetas la verdad no se que estoy haciendo mal y si alguien me hecha una mano seria genial

Código
  1. .386
  2. .model flat, stdcall
  3. option casemap :none
  4.  
  5. include windows.inc
  6. include user32.inc
  7. include kernel32.inc
  8. include advapi32.inc
  9.  
  10. includelib user32.lib
  11. includelib kernel32.lib
  12. includelib advapi32.lib
  13.  
  14. .data
  15.  
  16. SubKey db "Software\Microsoft\Windows Live\Messenger",0
  17. Nombre db "Multiple Instances",0
  18.  
  19. Mensaje db "Carpeta No Encontrada",0
  20. Titulo db "Error",0
  21.  
  22. .data?
  23. hKey dd ?
  24. Buffer dd ?
  25.  
  26. .code
  27.  
  28. Main:
  29.  
  30. invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE, addr SubKey,0,KEY_ALL_ACCESS,addr hKey
  31. .if al==NULL
  32. invoke MessageBox,NULL,addr Mensaje,addr Titulo,MB_OK + MB_ICONINFORMATION
  33. .else
  34. invoke RegSetValueEx,addr hKey,addr Nombre,0,REG_DWORD,addr Buffer, 1
  35. invoke RegCloseKey,addr hKey
  36. .endif
  37.  
  38. invoke ExitProcess,0
  39.  
  40.  
  41.  
  42. End Main
  43.  

y como la imagen vale mas que mil palabras

esto es lo que quiero hacer

(http://i41.tinypic.com/voptl2.jpg)

y porsupesto darle un valor

(http://i39.tinypic.com/2lc7h1i.jpg)


Título: Re: [?]Registros de Windows <.<
Publicado por: Eternal Idol en 10 Marzo 2010, 00:22 am
A RegSetValueEx  y RegCloseKey les tenes que pasar el HANDLE y no un puntero al mismo. El ultimo parametro de RegSetValueEx es "The size of the information pointed to by the lpData parameter, in bytes." y le estas pasando 1, pasale el tamaño de un DWORD (4 bytes). El anterior es el buffer, donde tenes que poner el DWORD que queres escribir ... no tiene que ser un valor indefinido.

Otra cosa, RegOpenKeyEx:
Return Value
If the function succeeds, the return value is ERROR_SUCCESS.

ERROR_SUCCESS es 0 asi que estas haciendo la comparacion mal.

PD. Son claves del registro no carpetas.