Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: cobein en 19 Septiembre 2008, 18:28 pm



Título: Generic Sever Editor Class [SRC]
Publicado por: cobein en 19 Septiembre 2008, 18:28 pm
Bueno me harte de que pregunten esto un millon de veces, aca les dejo un codigo super simple para leer y escribir datos al final de un EXE. Creditos a E0N por la funcion para calcular el EOF

Clase:

Código
  1. '---------------------------------------------------------------------------------------
  2. ' Module      : cEditSvr
  3. ' DateTime    : 19/09/2008 13:23
  4. ' Author      : Cobein
  5. ' Mail        : cobein27@hotmail.com
  6. ' WebPage     : http://www.advancevb.com.ar
  7. ' Purpose     : Read Write data at EOF
  8. ' Usage       : At your own risk
  9. ' Requirements: None
  10. ' Distribution: You can freely use this code in your own
  11. '               applications, but you may not reproduce
  12. '               or publish this code on any web site,
  13. '               online service, or distribute as source
  14. '               on any media without express permission.
  15. '
  16. ' History     : 19/09/2008 First Cut....................................................
  17. '---------------------------------------------------------------------------------------
  18. Option Explicit
  19.  
  20. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
  21.  
  22. Private c_pBag      As New PropertyBag
  23. Private c_sFile     As String
  24. Private c_lEOF      As Long
  25. Public c_bHasData  As Boolean
  26.  
  27. '---------------------------------------------------------------------------------------
  28. ' Procedure : GetEOF
  29. ' Author    : E0N
  30. ' Purpose   : Calculate EOF
  31. '---------------------------------------------------------------------------------------
  32. Private Function GetEOF(sPath As String) As Long
  33.    Dim vbData() As Byte
  34.    Dim PE As Long, NumberOfSections As Integer
  35.    Dim BeginLastSection As Long
  36.    Dim RawSize As Long, RawOffset As Long
  37.  
  38.    Open sPath For Binary As #1
  39.        ReDim vbData(LOF(1) - 1)
  40.        Get #1, , vbData
  41.    Close #1
  42.  
  43.    Call CopyMemory(PE, vbData(&H3C), 4)
  44.    Call CopyMemory(NumberOfSections, vbData(PE + &H6), 2)
  45.    BeginLastSection = PE + &HF8 + ((NumberOfSections - 1) * &H28)
  46.    Call CopyMemory(RawSize, vbData(BeginLastSection + 16), 4)
  47.    Call CopyMemory(RawOffset, vbData(BeginLastSection + 20), 4)
  48.    GetEOF = RawSize + RawOffset
  49. End Function
  50.  
  51. Public Function ExeFile(sPath As String) As Boolean
  52.    c_sFile = sPath
  53.    c_lEOF = GetEOF(c_sFile)
  54.  
  55.    If Not FileLen(c_sFile) = c_lEOF Then
  56.        c_bHasData = True
  57.  
  58.        Dim vbData() As Byte
  59.  
  60.        Open c_sFile For Binary As #1
  61.        ReDim vbData(LOF(1) - c_lEOF - 1)
  62.        Seek #1, c_lEOF + 1
  63.        Get #1, , vbData
  64.        Close #1
  65.        '+++++++++++++++++++++++++++++++++++++++++++++++++++++
  66.        'At this point you can Decrypt the byte array [vbData]
  67.        '+++++++++++++++++++++++++++++++++++++++++++++++++++++
  68.        Set c_pBag = New PropertyBag
  69.        c_pBag.Contents = vbData
  70.    End If
  71.  
  72. End Function
  73.  
  74. Public Sub WriteProp(sName As String, vVal As Variant)
  75.    c_pBag.WriteProperty sName, vVal
  76. End Sub
  77.  
  78. Public Function ReadProp(sName As String) As Variant
  79.    ReadProp = c_pBag.ReadProperty(sName)
  80. End Function
  81.  
  82. Public Function WriteData(sDstFile As String) As Boolean
  83.    Dim vbData() As Byte
  84.  
  85.    Open c_sFile For Binary Access Read As #1
  86.    ReDim vbData(LOF(1) - 1)
  87.    Get #1, , vbData
  88.    Close #1
  89.  
  90.    Open sDstFile For Binary Access Write As #1
  91.    Put #1, , vbData
  92.    vbData = c_pBag.Contents
  93.    '+++++++++++++++++++++++++++++++++++++++++++++++++++++
  94.    'At this point you can Encrypt the byte array [vbData]
  95.    '+++++++++++++++++++++++++++++++++++++++++++++++++++++
  96.    Put #1, , vbData
  97.    Close #1
  98.  
  99. End Function
  100.  

Como llamarlo

Código
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4.  
  5.    Dim c As New cEditSvr
  6.    c.ExeFile "c:\proyecto1.exe"
  7.    c.WriteProp "IP", "123.123.123.123"
  8.    c.WriteProp "Port", 1234
  9.    c.WriteData "c:\test.exe"
  10.  
  11.  
  12.    Set c = New cEditSvr
  13.    c.ExeFile "c:\test.exe"
  14.    Debug.Print c.ReadProp("IP")
  15.    Debug.Print c.ReadProp("Port")
  16. End Sub
  17.  
  18.  


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: Karcrack en 19 Septiembre 2008, 18:56 pm
Muy bueno Cobein, yo uso el Metodo Append sin PE ni na, con este queda mas pofesionar :laugh:

Saludos :D

PD: Que es eso de PropertyBag :-\??


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: Spider-Net en 19 Septiembre 2008, 19:05 pm
Interesante para aprender y muy útil, me lo guardo en mi biblioteca de códigos. Gracias cobein ;D ;D ;D ;D ;D


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: cobein en 19 Septiembre 2008, 19:08 pm
El propertyBag lo uso para empaquetar y desempaquetar los datos, de esa manera podes agregar la cantidad de propiedades/valores que quieras. El ejemplo tiene simplemente 2 pero se pueden seguir agregando las que sea.

Importante:Si alguno usa un code para modificar el EOF no use esto!



Título: Re: Generic Sever Editor Class [SRC]
Publicado por: ssccaann43 © en 19 Septiembre 2008, 19:56 pm
Che te quedo buenisimo... Un saludo


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: aaronduran2 en 19 Septiembre 2008, 20:29 pm
El aporte está muy bien, cobein. Al final conseguí solucionar el problema que tenía con este tema.

Saludos.


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: Freeze. en 19 Septiembre 2008, 21:03 pm
Menos mal que no empezé a hacerlo yo porque dsde hace ratico que vi un post con una duda dije "Voy a hacer un ejemplo..!" Pero contigo no se puede esperar ni 1 hora :xD


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: s E t H en 20 Septiembre 2008, 03:03 am
donde declaras PropertyBag??


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: ‭‭‭‭jackl007 en 20 Septiembre 2008, 04:24 am
me encanto, yo usaba uno que habia publicado Hendrix (por cierto, hace tiempo no veo posts de el), y es mas corto...
pero este esta bien, para aprender otras cositas =D


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: ‭‭‭‭jackl007 en 20 Septiembre 2008, 04:37 am
el PropertyBag no se declara, se crea un objeto referenciado hacia el...
Código
  1. Set c_pBag = New PropertyBag


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: demoniox12 en 22 Septiembre 2008, 06:34 am
Muy bueno Cobein, yo uso el Metodo Append sin PE ni na, con este queda mas pofesionar :laugh:

Saludos :D

PD: Que es eso de PropertyBag :-\??

De que se trata el Metodo Append??

me encanto, yo usaba uno que habia publicado Hendrix (por cierto, hace tiempo no veo posts de el), y es mas corto...
pero este esta bien, para aprender otras cositas =D

podrias poner cual?

cobein:
esto sirve para poner un exe dentro del propertybag? ya que estuve probando y de 1 exe de 10,5kb (archivo al que le inserto) y el exe de 68,8kb(el insertado) me keda un exe de 147kb.. porque? y cuando lo extraigo keda inservible..

Salu2!


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: cobein en 22 Septiembre 2008, 13:51 pm
@ demoniox12

Podes poner cualquier cosa dentro del propertybag, si queres postea el code a ver que estas haciendo mal.


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: Karcrack en 22 Septiembre 2008, 15:34 pm
Muy bueno Cobein, yo uso el Metodo Append sin PE ni na, con este queda mas pofesionar :laugh:

Saludos :D

PD: Que es eso de PropertyBag :-\??

De que se trata el Metodo Append??

me encanto, yo usaba uno que habia publicado Hendrix (por cierto, hace tiempo no veo posts de el), y es mas corto...
pero este esta bien, para aprender otras cositas =D

podrias poner cual?

cobein:
esto sirve para poner un exe dentro del propertybag? ya que estuve probando y de 1 exe de 10,5kb (archivo al que le inserto) y el exe de 68,8kb(el insertado) me keda un exe de 147kb.. porque? y cuando lo extraigo keda inservible..

Salu2!
Append es una forma de abrir ficheros en VB, pero yo me refiero a que añado el fichero al final de un ejecutable separandolo por una firma creada por mi mismo

Saludos :D


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: demoniox12 en 22 Septiembre 2008, 18:55 pm
[quote author=Karcrack link=topic=228494.msg1089339#msg1089339
Append es una forma de abrir ficheros en VB, pero yo me refiero a que añado el fichero al final de un ejecutable separandolo por una firma creada por mi mismo

Saludos :D
[/quote]

si, yo estoy utilizando ese mismo pero hay algunos antivirus que detectan eso.. y quiero evitarlo..

@ demoniox12

Podes poner cualquier cosa dentro del propertybag, si queres postea el code a ver que estas haciendo mal.

Código
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4. Dim Contenido As String
  5. Dim nFile As Integer
  6.  
  7. nFile = FreeFile
  8. Open "c:\proyecto1.exe" For Binary As #nFile
  9.        Contenido = Input(LOF(nFile), #nFile)
  10. Close #nFile
  11.  
  12.    Dim c As New cEditSvr
  13.    c.ExeFile "c:\proyecto1.exe"
  14.    c.WriteProp "IP", Contenido
  15.    c.WriteData "c:\test.exe"
  16.  
  17.  
  18.    Set c = New cEditSvr
  19.    c.ExeFile "c:\test.exe"
  20.  
  21.  
  22.    Open App.Path & "\exe2.exe" For Binary Access Write As #4
  23.        Put #4, , c.ReadProp("IP")
  24.    Close #4
  25. End Sub
(la class no la modifique ni nada es la misma que pusiste...)
este code mete su mismo exe en el, es un exe de 10,5kb y keda de 31,5 en vez de ser de 21kb.. el porque nose..

salu2! y gracias de antemano ;)


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: cobein en 22 Septiembre 2008, 20:30 pm
Código:
Private Sub Form_Load()
    Dim sData As String
    Dim vbData() As Byte
       
    Open "c:\proyecto1.exe" For Binary As #1
    ReDim vbData(LOF(1) - 1)
    Get #1, , vbData
    Close #1
   
    Dim c As New cEditSvr
    c.ExeFile "c:\proyecto1.exe"
    c.WriteProp "App", vbData
    c.WriteData "c:\test.exe"
   
    Set c = New cEditSvr
    c.ExeFile "c:\test.exe"
    vbData = c.ReadProp("App")
   
    Open "c:\Extracted.exe" For Binary As #1
    Put #1, , vbData
    Close #1
   
End Sub


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: ‭‭‭‭jackl007 en 22 Septiembre 2008, 21:01 pm
aqui esta:

Crear un Editor de Servers en VB (By Hendrix) (http://foro.portalhacker.net/index.php/topic,10625.0.html)


cuando hendrix andaba muy activo, pero ahora supongo que anda con trabajos...

lo cierto es que es menos codigo, eso si.


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: demoniox12 en 22 Septiembre 2008, 21:09 pm
Código:
Private Sub Form_Load()
    Dim sData As String
    Dim vbData() As Byte
       
    Open "c:\proyecto1.exe" For Binary As #1
    ReDim vbData(LOF(1) - 1)
    Get #1, , vbData
    Close #1
   
    Dim c As New cEditSvr
    c.ExeFile "c:\proyecto1.exe"
    c.WriteProp "App", vbData
    c.WriteData "c:\test.exe"
   
    Set c = New cEditSvr
    c.ExeFile "c:\test.exe"
    vbData = c.ReadProp("App")
   
    Open "c:\Extracted.exe" For Binary As #1
    Put #1, , vbData
    Close #1
   
End Sub

Excelente gracias! funciona de 10 =) pero ahora que estoy viendo en detalle.. esto hace basicamente lo mismo que el de Stub - marca - archivoencriptado... o sea es detectado igual que el otro.. que habria que hacer para meter el texto en el stub como si fuera parte del exe? o sea que no paresca "texto agregado" sino por ejemplo como si fuera una sección... mmm que maneras hay de modificar el PE con VB?

salu2!


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: cobein en 22 Septiembre 2008, 21:29 pm
A ver, posiblemente sea menos codigo hacer stub/marca/archivo o app/marca/datos pero eso no es flexible, si queres agregar mas datos tenes que modificar el codigo, de esta manera podes poner cuantos exe quieras y cuanta data quieras sin necesidad de hacer ningun cambio en el modulo. Por otra parte ese codigo lo hice en 5 minutos asi que se puede optimizar un monton para reducirlo y al final de cuentas el propertybag hace lo mismo que haces vos manualmente.

@demoniox12 seguramente el AV detecta lo que este pegado porque esta sin cifrar o encryptar, por eso mismo comente en el codigo las 2 secciones donde se puede agregar un codigo para cifrar o cifrar los datos.


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: ‭‭‭‭jackl007 en 22 Septiembre 2008, 21:41 pm
mira el tuto que te puse en el posst anterior, los antivirus ni dicen nada.


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: cobein en 22 Septiembre 2008, 21:45 pm
Por dios!!!!!! el esta pegando un exe, lo que significa que si no lo cifra el AV va a cantar como loca! el tuto que mostras vos es simplemente para adjuntar settings.


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: demoniox12 en 23 Septiembre 2008, 00:21 am
A ver, posiblemente sea menos codigo hacer stub/marca/archivo o app/marca/datos pero eso no es flexible, si queres agregar mas datos tenes que modificar el codigo, de esta manera podes poner cuantos exe quieras y cuanta data quieras sin necesidad de hacer ningun cambio en el modulo. Por otra parte ese codigo lo hice en 5 minutos asi que se puede optimizar un monton para reducirlo y al final de cuentas el propertybag hace lo mismo que haces vos manualmente.

@demoniox12 seguramente el AV detecta lo que este pegado porque esta sin cifrar o encryptar, por eso mismo comente en el codigo las 2 secciones donde se puede agregar un codigo para cifrar o cifrar los datos.

hmm no lo creo.. ya que encripte el notepad de windows y lo detectan los antivirus.. o sea es asi.. el stub solo me lo detectan 2 antivirus.. el stub + marca + file cifrado me lo detectan 4.. al igual que el stub + ladata de orioertybag me lo detectan los 4 y el mismo nombre de deteccion.. asi que sospecho que es por agregar informacion adicional...

salu2!


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: cobein en 23 Septiembre 2008, 01:43 am
Entonces es como digo, el propertybag no tiene nada que ver con AV, el tema es que el stub y el metodo de encripcion no son FUD.


Título: Re: Generic Sever Editor Class [SRC]
Publicado por: F3B14N en 13 Julio 2009, 17:28 pm
Entonces es como digo, el propertybag no tiene nada que ver con AV, el tema es que el stub y el metodo de encripcion no son FUD.

El problema no es del metodo de encriptacion ni del stub, al menos con avira.
Estuve haciendo un par de pruebas, y avira detecta si o si un archivo, si este
tiene eof en gran cantidad.
Al hacerlo con textos "cortos" (ej: "aaaaaaaaaaaaaa") no hay problema, pero si lo
hay cuando se agregan textos "largos" (ej: string(20000, "b"))

Lo mismo sucede con el "metodo" recursos:

Citar
Option Explicit

Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As String, ByVal lpName As Long, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long

Private Function AgregarRecurso(Ruta As String, Datos As String)
Dim hRes As Long, i As Integer
Dim myStr() As Byte, b() As Byte

myStr = StrConv(Datos, vbFromUnicode)
hRes = BeginUpdateResource(Ruta, False)
UpdateResource hRes, "CUSTOM", 101, 0, myStr(0), Len(Datos)
EndUpdateResource hRes, False

End Function

Prueben:
Citar
Call AgregarRecurso("c:\ss.exe", string(20000, "b"))
y veran que tambien es detectado como Dropper.

=============

Exluyendo ese problemita, es exelente aporte  ;-), al menos a mi me sirve bastante para no tener que estar utilizando el metodo "Append" que te hace escribir de mas, a diferencia de este que es muy comodo.

pd: Perdon x revivir el tema  :-X
Saludos  ;D