Cambiar icono a exe por codigo ASM

Iniciado por Monica_Barcelona, 24 Abril 2010, 22:38 PM

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

Monica_Barcelona

Hola chikos(K) como andan?

pues bueno estoy buscando como cambiar el icono de une exe (exe que programo yo en masm32) pero por código,lo e encontrado pero me dicen que utilicé programas tipo ResourceHack etc etc yo quiero hacerlo por código


salu2

[Zero]

#1
Bueno, he estado buscando en una partición vieja éste code que daba por hecho que había perdido  :P. Es una traducción de un code en C de Tughack para FASM que hice hace tiempo:

Código (asm) [Seleccionar]

format PE GUI 4.0
entry start

include 'C:\fasm\include\win32ax.inc'
include 'C:\fasm\include\api\kernel32.inc'
include 'C:\fasm\include\api\user32.inc'

struct GRPICONDIRENTRY
       Reserved1               dw ?
       ResourceType            dw ?
       ImageCount              dw ?
       iWidth                  db ?
       iHeight                 db ?
       Colors                  db ?
       Reserved2               db ?
       Planes                  dw ?
       BitsPerPixel            dw ?
       ImageSize               dd ?
       ResourceID              dw ?
ends


section '.data' data readable writeable
;Proc ChangeIcon
hFileIcon           dd                          ?
hUpdateRes          dd                          ?
FileIconSize        dd                          ?
Buffer              dd                          ?
grIcon              GRPICONDIRENTRY             ?
BufferSize          dd                          ?




section '.code' code readable executable

start:
      ;stdcall ChangeIcon,szExeFileName,szIconFileName
      ret

proc ChangeIcon,nExeFile,nIconFile
    invoke BeginUpdateResource,[nExeFile],TRUE
    mov [hUpdateRes],eax

    invoke CreateFile,[nIconFile],GENERIC_READ,0,0,OPEN_EXISTING,0,0
    mov [hFileIcon],eax

    invoke GetFileSize,[hFileIcon],0
    mov [FileIconSize],eax

    invoke GlobalAlloc,GPTR,[FileIconSize]
    mov [Buffer],eax

    invoke ReadFile,[hFileIcon],[Buffer],[FileIconSize],dwBytes,0
    invoke CloseHandle,[hFileIcon]

    add [Buffer],22
    sub [FileIconSize],22

    invoke UpdateResource,[hUpdateRes],RT_ICON,1,0,[Buffer],[FileIconSize]
    invoke RtlZeroMemory,grIcon,22

    mov [grIcon.ResourceType],1
    mov [grIcon.ImageCount],1
    mov [grIcon.iWidth],32
    mov [grIcon.iHeight],32
    mov [grIcon.Planes],2
    mov [grIcon.BitsPerPixel],32
    push [BufferSize]
    pop [grIcon.ImageSize]
    mov [grIcon.ResourceID],1

    invoke UpdateResource,[hUpdateRes],RT_GROUP_ICON,1,0,grIcon,22
    invoke EndUpdateResource,[hUpdateRes],FALSE
    invoke GlobalFree,[Buffer]
    ret
endp                      

section '.idata' import data readable writeable

 library kernel32,   'KERNEL32.DLL',\
                 user32,     'USER32.DLL'
                                                   


Creo recordar de funcionaba  :-\.

Saludos

Edito: Revisando el mensaje me di cuenta de que no es lo que querías  :xD. Para cambiar el icono de TU exe basta con meterlo en un resource. Yo utilizo Radasm o Masmed como IDE's, que tienen editor de recursos incorporado y cambias el icono con un par de clicks.

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

Monica_Barcelona

Hola Hacker (K) ^^ gracias por tu respesuta,el rpoblema es que nose como incrustar recursos i otra cosa,me gustarica hacerlo por codigo,es para desde un ejecutable cambiar el icono de otro ejecutable :P


un saludo (K)

[Zero]

Si quieres hacerlo por code puedes utilizar el código que te puse arriba, debería funcionar. No te llevará demasiado trabajo pasarlo a MASM  :P.

Saludos

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

Monica_Barcelona

#4
Vale,voi a probar aver que tal sale


un beso y gracias Hacker_zero ya te contare como me a ido

EI: juntando mensajes.

Hei hacker_Zero,alfinal me decidi por no hacerlo por codigo y lo hice con recursor,me salio uy bien ^^ pero me surje una duda a rraiz de eso,si por ejemplo en el recurso pongo un RCDATA por ejemplo un exe,despues como pueod estraer ese exe desde el ejecutable en que este incrustado??



salu2

EI: juntando mensajes, la proxima borro.

Bueno ya no hace falta,encontre un codigo que hace eso en ASM,de todas formas gracias por tu ayuda (K)


saludos

[Zero]


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

Riki_89D

#6
Bine eshoo