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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 115
141  Programación / Programación Visual Basic / Re: Denme Ideas! en: 5 Octubre 2008, 12:34 pm
Te esta quedando muy bien, eso si, vigila la indetectabilidad, que mi file manager y mi joiner lo detectan los AV's ;)
142  Programación / Java / Re: [Source] Space Invaders en: 5 Octubre 2008, 12:09 pm
Gracias a todos ;)

Citar
Esta excelente, estoy haciendo un juego pa la U, que se llama KillerEmo

Jajajajajajajajaja pues nada, esperando a que lo subas  :xD :xD
143  Programación / Programación Visual Basic / Re: cJPG en: 3 Octubre 2008, 00:13 am
Puedes usar el api bitblt con un bitmap y luego pasarlo a jpg :P
144  Programación / Programación Visual Basic / Re: Leer memoria de un juego en: 1 Octubre 2008, 17:36 pm
Ahora si xD es decir, la vida (esos dos bytes) no están siempre en la misma posición de memoria. La ventaja del asunto es que en algún lugar se tiene que guardar un puntero que te indique donde está guardado ese valor :P Así que ya sabes, busca el puntero y lee lo que señala

Citar
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

Hay programas con los cuales puedes ver en un intervalo de tiempo (véase el Cheat Engine), entonces imagínate que tienes 5 vidas y pierdes una aposta, miras que valor a pasado de ser 5 a 4 y arreglado :P Hay buenos tutoriales por la web ;)
145  Programación / Programación Visual Basic / Re: Crear un PE Editor simple.. en: 1 Octubre 2008, 17:21 pm
Ya, ya se todo lo que me estás diciendo y por eso te he puesto los ejemplos que te he puesto, mira mi ejemplo en fasm y pruebalo en distintos windows y verás como no falla y no es hardcode :P haya la dirección de las apis a partir de su posición en la tabla de importaciones (realmente haya la posición de GetProcAddress y de ahñi saca el resto más rápidamente, aunque se podrían sacar todas así ;))

VB lo único raro que puede tener es que aparte de las dll que contienen las apis propias del SO tiene su propia dll de donde saca todas las funciones, ya que un MsgBox no es lo mismo que MessageBoxA :P

Salu2
146  Programación / Programación Visual Basic / Re: Leer memoria de un juego en: 1 Octubre 2008, 01:53 am
En serio, te prometo que no somos adivinos xDD a ver, leer una posición de memoria no supone ningún problema, da igual que sean 2 bytes que 22, la cosa es que hay en esa posición de memoria para que la quieras leer? como va cambiando a lo largo del juego? (has debuggeado algo por lo menos?) por lo que dices en tu primer post quieres leer la vida, si conoces su posición de memoria no te será nada complicado, pero explica bien la situación por que no se te entinde jajaj
147  Programación / Programación Visual Basic / Re: ProgresBar indefinido (source) en: 1 Octubre 2008, 01:39 am
Muy buen aporte Leandro, últimamente la tengo muy descuidada, pero te lo añado a la biblioteca de sources, si alguien tene por ahí algún código que se me haya pasado... :P
148  Programación / Programación Visual Basic / Re: Leer memoria de un juego en: 1 Octubre 2008, 01:35 am
Si das mas datos de que hace esa memoria pues mejor, así se nos ocurre algo xD

A ver, pasado un tiempo se establece el valor deseado? conoces cuantos valores distintos toma antes del deseado? Sabes cual es ese valor?...
149  Programación / Programación Visual Basic / Re: Leer memoria de un juego en: 1 Octubre 2008, 01:25 am
Toma siempre los mismos valores? Si es así espera a que tome el valor deseado, si no espera un tiempo prudencial, un problema parecido le pasó a Tughack por lo que me comentó, a ver si se pasa por aquí que el pilota de esto :P
150  Programación / Programación Visual Basic / Re: Crear un PE Editor simple.. en: 30 Septiembre 2008, 12:51 pm
Citar
No funciona leyendo el archivo en modo binario, porque si, por ejemplo, queres  explorar la estructura del formato PE para acceder a las Tablas de importacion para conocer las direcciones de memoria de las apis que llama el programa no vas a poder.

Si, si que se puede, a ver si te crees que se cargan en posiciones de memoria aleatorias xDD Luego hablamos de eso :P

Primero una demostración de lo que pide el amigo demoniox12:

En un form:
Código
  1. Private Sub Form_Load()
  2.    RellenarPE ("C:\pru.exe")
  3.    MsgBox Hex(inh.OptionalHeader.ImageBase)
  4.    End
  5. End Sub

En un módulo:
Código
  1. Option Explicit
  2.  
  3. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal L As Long)
  4.  
  5. Private Enum ImageSignatureTypes
  6.    IMAGE_DOS_SIGNATURE = &H5A4D     ''\\ MZ
  7.    IMAGE_OS2_SIGNATURE = &H454E     ''\\ NE
  8.    IMAGE_OS2_SIGNATURE_LE = &H454C  ''\\ LE
  9.    IMAGE_VXD_SIGNATURE = &H454C     ''\\ LE
  10.    IMAGE_NT_SIGNATURE = &H4550      ''\\ PE\0\0
  11. End Enum
  12.  
  13. Private Type IMAGE_DOS_HEADER
  14.    e_magic As Integer        ' Magic number
  15.    e_cblp As Integer         ' Bytes on last page of file
  16.    e_cp As Integer           ' Pages in file
  17.    e_crlc As Integer         ' Relocations
  18.    e_cparhdr As Integer      ' Size of header in paragraphs
  19.    e_minalloc As Integer     ' Minimum extra paragraphs needed
  20.    e_maxalloc As Integer     ' Maximum extra paragraphs needed
  21.    e_ss As Integer           ' Initial (relative) SS value
  22.    e_sp As Integer           ' Initial SP value
  23.    e_csum As Integer         ' Checksum
  24.    e_ip As Integer           ' Initial IP value
  25.    e_cs As Integer           ' Initial (relative) CS value
  26.    e_lfarlc As Integer       ' File address of relocation table
  27.    e_ovno As Integer         ' Overlay number
  28.    e_res(0 To 3) As Integer  ' Reserved words
  29.    e_oemid As Integer        ' OEM identifier (for e_oeminfo)
  30.    e_oeminfo As Integer      ' OEM information; e_oemid specific
  31.    e_res2(0 To 9) As Integer ' Reserved words
  32.    e_lfanew As Long          ' File address of new exe header
  33. End Type
  34.  
  35. ' MSDOS File header
  36. Private Type IMAGE_FILE_HEADER
  37.    Machine As Integer
  38.    NumberOfSections As Integer
  39.    TimeDateStamp As Long
  40.    PointerToSymbolTable As Long
  41.    NumberOfSymbols As Long
  42.    SizeOfOptionalHeader As Integer
  43.    characteristics As Integer
  44. End Type
  45.  
  46. ' Directory format.
  47. Private Type IMAGE_DATA_DIRECTORY
  48.    VirtualAddress As Long
  49.    Size As Long
  50. End Type
  51.  
  52. ' Optional header format.
  53. Const IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16
  54.  
  55. Private Type IMAGE_OPTIONAL_HEADER
  56.    ' Standard fields.
  57.    Magic As Integer
  58.    MajorLinkerVersion As Byte
  59.    MinorLinkerVersion As Byte
  60.    SizeOfCode As Long
  61.    SizeOfInitializedData As Long
  62.    SizeOfUnitializedData As Long
  63.    AddressOfEntryPoint As Long
  64.    BaseOfCode As Long
  65.    BaseOfData As Long
  66.    ' NT additional fields.
  67.    ImageBase As Long
  68.    SectionAlignment As Long
  69.    FileAlignment As Long
  70.    MajorOperatingSystemVersion As Integer
  71.    MinorOperatingSystemVersion As Integer
  72.    MajorImageVersion As Integer
  73.    MinorImageVersion As Integer
  74.    MajorSubsystemVersion As Integer
  75.    MinorSubsystemVersion As Integer
  76.    W32VersionValue As Long
  77.    SizeOfImage As Long
  78.    SizeOfHeaders As Long
  79.    CheckSum As Long
  80.    SubSystem As Integer
  81.    DllCharacteristics As Integer
  82.    SizeOfStackReserve As Long
  83.    SizeOfStackCommit As Long
  84.    SizeOfHeapReserve As Long
  85.    SizeOfHeapCommit As Long
  86.    LoaderFlags As Long
  87.    NumberOfRvaAndSizes As Long
  88.    DataDirectory(0 To IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1) As IMAGE_DATA_DIRECTORY
  89. End Type
  90.  
  91. Private Type IMAGE_NT_HEADERS
  92.    Signature As Long
  93.    FileHeader As IMAGE_FILE_HEADER
  94.    OptionalHeader As IMAGE_OPTIONAL_HEADER
  95. End Type
  96.  
  97. ' Section header
  98. Const IMAGE_SIZEOF_SHORT_NAME = 8
  99.  
  100. Private Type IMAGE_SECTION_HEADER
  101.   SecName As String * IMAGE_SIZEOF_SHORT_NAME
  102.   VirtualSize As Long
  103.   VirtualAddress  As Long
  104.   SizeOfRawData As Long
  105.   PointerToRawData As Long
  106.   PointerToRelocations As Long
  107.   PointerToLinenumbers As Long
  108.   NumberOfRelocations As Integer
  109.   NumberOfLinenumbers As Integer
  110.   characteristics  As Long
  111. End Type
  112.  
  113. Public ByteArray() As Byte                  ' Byte array del archivo a leer
  114. Public TempArray() As Byte                  ' Array temporal para reducir el ByteArray
  115. Public Config()    As Byte                  ' La posible configuración del archivo leido
  116. Public idh         As IMAGE_DOS_HEADER      ' Cabeceras
  117. Public inh         As IMAGE_NT_HEADERS
  118. Public ish()       As IMAGE_SECTION_HEADER
  119.  
  120.  
  121. Sub RellenarPE(Ruta As String)
  122.  
  123.    Open Ruta For Binary As #1
  124.      ReDim ByteArray(LOF(1) - 1)
  125.      Get #1, , ByteArray
  126.    Close #1
  127.  
  128.    ' Leemos el MS-DOS stub
  129.    CopyMemory idh, ByteArray(0), Len(idh)
  130.    If idh.e_magic <> IMAGE_DOS_SIGNATURE Then
  131.       MsgBox "Formato PE no válido", vbCritical, "Small Crypter"
  132.       Exit Sub
  133.    End If
  134.  
  135.    ' Leemos a partir del PE\0\0 comletando a su vez:
  136.    '   -> IMAGE_FILE_HEADER     (COFF File Header)
  137.    '   -> IMAGE_OPTIONAL_HEADER (Optional  Header)
  138.    CopyMemory inh, ByteArray(idh.e_lfanew), Len(inh)
  139.    If inh.Signature <> IMAGE_NT_SIGNATURE Then
  140.       MsgBox "Formato PE no válido", vbCritical, "Small Crypter"
  141.       Exit Sub
  142.    End If
  143.  
  144.    ' Leemos las distintas secciones
  145.    Dim i As Integer
  146.    ReDim ish(inh.FileHeader.NumberOfSections - 1)
  147.    For i = 0 To inh.FileHeader.NumberOfSections - 1
  148.        Call CopyMemory(ish(i), ByteArray(idh.e_lfanew + Len(inh) + Len(ish(i)) * i), Len(ish(i)))
  149.    Next i
  150.  
  151. End Sub

Verás que te muestra en un msgbox el image base del archivo C:\pru.exe, para hacer el editor simplemente muestra los distintos datos en text boxes y luego guarda los valores modificados en un nuevo archivo.



achernar_

Citar
Agregue, en cierta ocacion, una llamada a la api MessageBoxA para ver si podia obtener la direccion de mememoria de la funcion en la tabla de importacion, para poder cambiarla pero ni siquiera la encontré. VB hace cosas que supongo extraña, en la tabla solo encontre librerias de VB y nada mas. ¿Alguien sabe como llegar a obtener esas direcciones? seria una especie de intento por hacer "API Hooking" modificando la tabla de importacion con VB.

IAT hooking, un ejemplo en C:
http://hackhound.org/forum/index.php?topic=2726.0

Puedes ver como obtiene las direcciones en la iat y de más, otro ejemplo en C:
http://foro.elhacker.net/programacion_cc/source_recorrer_la_iat-t208200.0.html;msg989316

Si te interesan las shellcodes universales esto te será útil, en mi ejemplo lo uso para demostrar como un virus puede llamar a las apis, pero para el caso es lo mismo (y también ves como obtener la posición en memoria de las apis a partir del formato PE, fasm):
http://foro.elhacker.net/analisis_y_diseno_de_malware/source_asm_asi_llaman_los_virus_a_las_apis-t219982.0.html;msg1044189

Y ahora mismo o caigo en más ejemplos, pero ahí puedes ver como obtener la dirección en memoria de un api a partir del PE (aunque si puedes usar GetProcAddres desde el principio pues eso que te ahorras jajajajaja)

Salu2
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 115
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines