Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Newhack32

#1
la estructura IMAGE_DOS_HEADER: que acaso no tiene esto  :huh:


  IMAGE_DOS_HEADER = record lleno
    e_magic: Word; / / Número mágico ("MZ")
    e_cblp: Word; / / Bytes en la última página del archivo
    e_cp: Word; / / Artículos en el archivo
    e_crlc: Word; / / Movimientos
    e_cparhdr: Word; / / Tamaño de la cabecera en los párrafos
    e_minalloc: Word; párrafos supletorias / / mínimos necesarios
    e_maxalloc: Word; / / Máximo párrafos adicionales necesarios
    e_ss: Word; / / inicial (relativa) SS valor
    e_sp: Word, valor SP / / Inicial
    e_csum: Word; / / Suma de comprobación
    e_ip: Word, valor IP / / Inicial
    e_cs: Word; / / inicial (relativa) de valor CS
    e_lfarlc: Word; / / Dirección de la tabla de reubicación
    e_ovno: Word; / / Overlay número
    e_res: arsenal lleno [0 .. 3] de la Palabra / / palabras reservadas
    e_oemid: Word; / / OEM identificador (por e_oeminfo)
    e_oeminfo: Word; / / Información OEM; e_oemid específico
    e_res2: arsenal lleno de [0 .. 9] de la Palabra / / palabras reservadas
    e_lfanew: Entero; / / Archivo dirección del encabezado exe nuevo
#2
Property Get HiByte(ByVal Word As Integer) As Byte
  ' Devuelve el Byte alto del Word especificado.
  '
  If Word And &H8000 Then
    If Not (Word Or &HFF) = &HFFFFFFFF Then Word = (Word Xor &HFF)
 
    HiByte = &H80 Or ((Word And &H7FFF) \ &HFF)
  Else
    HiByte = Word \ 256
  End If
End Property

Property Get HiWord(Dword As Long) As Integer
  ' Devuelve el Word alto del DWord especificado.
  '
  If Dword And &H80000000 Then
    HiWord = (Dword / 65535) - 1
  Else
    HiWord = Dword / 65535
  End If
End Property

Property Get LoByte(Word As Integer) As Byte
  ' Devuelve el Byte bajo del Word especificado.
  '
  LoByte = (Word And &HFF)
End Property

Property Get LoWord(Dword As Long) As Integer
  ' Devuelve el Word bajo del DWord especificado.
  '
  If Dword And &H8000& Then
    LoWord = &H8000 Or (Dword And &H7FFF&)
  Else
    LoWord = Dword And &HFFFF&
  End If
End Property

Property Get MakeWord(ByVal bHi As Byte, ByVal bLo As Byte) As Integer
  ' Crea un Word a partir de sus dos componentes Byte.
  '
  If bHi And &H80 Then
    MakeWord = (((bHi And &H7F) * 255) + bLo) Or &H7FFF
  Else
    MakeWord = (bHi * 255) + bLo
  End If
End Property

Property Get MakeDWord(wHi As Integer, wLo As Integer) As Long
  ' Crea un DWord a partir de sus dos componentes Word.
  '
  If wHi And &H8000& Then
    MakeDWord = (((wHi And &H8000&) * 65536) Or (wLo And &HFFFF&)) Or &H80000000
  Else
    MakeDWord = (wHi * &H10000) + wLo
  End If
End Property

y la funcion

Function DWordToString(dw As Long) As String
  DWordToString = Chr$(LoByte(LoWord(dw))) & _
                  Chr$(HiByte(LoWord(dw))) & _
                  Chr$(LoByte(HiWord(dw))) & _
                  Chr$(HiByte(HiWord(dw)))
End Function

Function StringToDWord(Str As String) As Long

  If Len(Str) < 4 Then Str = Str & String$(4 - Len(Str), 0)

  StringToDWord = MakeDWord( _
                          MakeWord( _
                                  Asc(Mid$(Str, 4)), _
                                  Asc(Mid$(Str, 3, 1)) _
                                   ), _
                          MakeWord( _
                                   Asc(Mid$(Str, 2, 1)), _
                                   Asc(Mid$(Str, 1, 1)) _
                                   ) _
                          )
End Function
#3
siguiendo este tuto
http://foro.elhacker.net/programacion_visual_basic/memoria_en_vb-t114052.0.html
en la parte donde convierto el dword en cadena me sale otros caracteres los cuales no son ABCD como lo dice el tutorial aca hay una imagen

la verdad no se cual es el error :huh:
#4
Cita de: Karcrack en  1 Agosto 2012, 21:04 PM
Tal y como aclara mDrinky me refería a que en el propio nombre que le da el AV a la detección suele suele incluirse esa información. Por ejemplo el "Heur" que añaden en algunos tags que viene de heurística, obviamente.

Como apunta zu-zu los emuladores de los AVs no son estúpidos y hay ciertas acciones que obvian por su poca relevancia en el flujo de ejecución de la aplicación (como los sleeps). Pero hay muchas otras formas de redireccionar el flujo de la aplicación u obfuscarlo, como por ejemplo usando handlers personalizados para errores que generes.

Como dato añado que había una forma de saber si estabas siendo emulado dentro del Kaspersky (si no recuerdo mal) que era haciendo un gethostbyname() y obteniendo el error generado, ya que para evitar conexión a internet se emulaban las llamadas a las APIs de WS y devolvía un error incorrecto.

Lo importante es que los emuladores van mejorando, ya sea obviando sleeps o reparando errores que ellos mismos hacen... eso sí, el NOD32 lleva más de 6 años petando con una instrucción de FPU que no emula correctamente:
Código (asm) [Seleccionar]
pminsw xmm0,xmm1
Con esa instrucción cualquier aplicación detectada por NOD32 se vuelve invisible :laugh: :laugh:
y como meteria ese code con olly  :huh: