Tutorial acerca del crackme de SkaPunky

Iniciado por jJPHyES, 10 Mayo 2018, 19:46 PM

0 Miembros y 1 Visitante están viendo este tema.

jJPHyES

- Crackme Renascense por Skapunky -
-----------------------------------

Bueno, primeramente que Dios te bendiga, protega y acompañe. He decidido hacer
este tutorial acerca de cómo resolver el programita (crackme) de skapunky que
según la dificultad que le puso Shaddy o Karmany, es fácil, pero en realidad puede
resultar un poco complejo o difícil para algunos, como lo es en mi caso.

También quiero darle TODA LA GLORIA a Dios porque sin él yo no hubiera podido hacer nada.

Filipenses 4:13 dice:"Todo lo puedo en Cristo que me fortalece".
Proverbios 1:7 dice:"El principio de la sabiduría es el temor de Jehová o a Jehová...".

Nota: En este tutorial solo vamos hacer uso de nuestro depurador viejito y favorito llamado Ollydbg en su versión 1.10 final. También
haciendo uso de algunos plugins (extensiones) que serían solo Phant0m en su última versión ya que tiene protección para las breakpoints de olly y otras cositas más.

Enlaces de descarga de las herramientas necesarias:

Ollydbg 1.10 -> http://ollydbg.de/odbg110.zip
Phant0m 1.85 -> https://tuts4you.com/download.php?view.1276
               http://www.woodmann.com/collaborative/tools/index.php/PhantOm
Command Bar  -> http://www.openrce.org/downloads/details/105/commandbar
               https://tuts4you.com/download.php?view.40

Nota: En este tutorial aprenderemos dos maneras para poder resolver o en palabras viejitas crackear este programita llamado crackme de skapunky.
     La primera se supone que es la más fácil, que sería parchear el programa. Y la seguinda, sería la más difícil o compleja que sería encontrar o conseguir
     el "id" y "contraseña" válidos para poder registrar el programa correctamente y como se debe.


Primer manera de resolver el crackme:

Lo primero que se debe hacer es abrir nuestro depurador, que supongo que ya lo tenéis en vuestro pc, llamado Ollydbg.


Nota: Mi Ollydbg está así porque lo he personalizado un poco, pero vosotros también tenéis la posiblidad de hacerlo así o a vuestro gusto.

Ya cuando tengamos abierto nuestro depurador o ollydbg vamos a cargar nuestro programita o como diría ricardo narvaja nuestra víctima en ollydbg.
Vamos a Archivo->Abrir en inglés sería File->Open y cargamos nuestro programita.



Nota: Antés de cargar el programa, se me olvidada, tendréis que tener vuestro depurador o olly configurado con los plugins (extensiones) que ya os mencioné anteriormente.

Tendreís que configurar el directorio de los archivos o ficheros "basura" y el directorio de los plugins (extensiones), y ahí mismo pondréis los plugins que ya os dije con anterioridad.




Ahora, procederemos a configurar nuestro plugin (extensión) llamada Phat0m.
La configuraremos como se muestra en la siguiente imágen o captura de pantalla:



Bueno, ahora vamos a proceder a realizar la primera manera de resolver este crackme de skapunky.

Vamos a ver las referencias de texto del programa (crackme), y buscaremos las siguientes:

Producto registrado con exito, felicidades
Lo siento, password incorrecto"





Como se puede ver en las anteriores imágenes o capturas de pantalla, se puede ver algo que llama mucho la atención como
una API y una comparación y un salto. Lo que nos interesa, en este caso, si Dios lo permite es el salto para poder parchear el programa.
Lo único que se debe hacer es invertir el salto, de la siguiente manera:



Ahora, para poder obtener el programita parcheado se debe hacer lo siguiente como muestra las siguientes imágenes o capturas de pantalla:






Ahora, se debe proceder a probar que el programita este parcheado correctamente.



Ahora, con la ayuda de Dios se debe proceder a realizar la segunda manera de resolver este crackme; ésta es la más compleja o más difícil. Vamos a por ella.

Primero vamos a ver las APIS del programita (crackme) dándo CTRL + N en nuestro depurador o olly.



La que llama la atención es la API "vbaStrCmp" la cual hace una comparación entre dos cadenas de texto (Strings) o entre dos valores númericos (integers).

Se debe poner un BreakPoint en esa API haciendo uso del plugin (extensión) command bar, de la siguiente manera:


Ahora, ejecutamos el programa con F9, y se debe proceder a poner los datos necesarios que exige el programita (crackme).
En mi caso, puse como "id" el 7 y como contraseña "ska".

Vamos al stack (pila) para ver los dos strings comparados:



Como se puede ver se está comparando nuestra contraseña con la contraseña verdadera para poder registrar el programa, pero hace falta algo que es la "id" del programa.

Búsquemola un poco.



La "id" correspondiente a la contraseña serìa "165".

"id" sería 165.
"Pass" sería ska551650.
"id" sería 147.
"Pass" sería ska1561470.
ska
ska55165
ska551650
55
165
ska1561470
147
156

MOD: Imagenes adaptadas a lo permitido.

.:UND3R:.

Hola, muy buen tutorial  ;-) lo que sí no entendí la última parte en donde explicas los serial, podrías detallar eso un poco más por favor? Saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

apuromafo CLS

este es un programa hecho en vb, diriamos que para encontrar el serial dificultad 0 o 1 en ollydbg o x64dbg haciendo uso de la api __vbastrcmp o usando vbastrcmp tool

pero si es para analizar el algoritmo no creo que sea tan facil del todo:

bueno lo acabo de revisar, se ve así

tiene 3 pequeños algoritmos
el serial válido  se forma de concatenaciones de 4 partes (parte0+parte1+parte2+parte3)
considera cada caracter como ascii
parte 0 =siendo "ska" algo constante
la parte 1, es la suma de cada carácter en ascii (decimal)
la parte 2 , es el primer dígito ingresado x 3 (multiplicado por 3)
la parte 3 , el último carácter (en ascii)  x5 (pero es influenciado por un valor anterior ,  Asc(edx+ecx*4))  como raise excepcion, entonces  si el largo del serial es 8 o mayor será multiplicado por 5,  de lo contrario es 0.  en el caso de 8 carácteres o más se cumple que es caracter ascii x 5 sin problema.

por ejemplo el id  165
largo del serial ingresado = 3

el 1 = en ascii (el numero decimal es 49)
el 6 = en ascii (el nnumero decimal es 54)
el 5 = en ascii (el nnumero decimal es 53)
la suma de los 3 es 156

llevamos
ska156+parte2+parte3
para la siguiente parte  el primer número ingresado es el 1 es multiplicado por 3
asi que :
el 1 = en ascii (el numero decimal es 49) x 3 = 147
llevamos ska156147+parte3
Citar
y la tercera parte
es el ultimo por 5 ,con largo pequeño es 0 queda el valor 00530000 comparado con otro integer que es menor, no pasará al ciclo necesario , asi que  el resultado será 0
llevamos ska1470
algunos seriales son

id:165
Serial: ska1561470

Id:apuromafo
ska859291510

ID:ApuromafoCLS
ska827195510

Saludos Cordiales
Apuromafo CLS

pd: el codigo de la porcion de codigo en vbdecompiler del action click
Citar
Private Sub Command1_Click() '4096F0
  Dim var_15C As TextBox
  loc_00409757: Dim var_40(7) As String
  loc_00409768: Dim var_70(7) As Variant
  loc_004097AE: var_90 = Text1.Text
  loc_004097B6: var_160 = var_90
  loc_0040982D: var_8C = var_90
  loc_00409839: var_eax = %fobj
  loc_0040987F: var_90 = Text2.Text
  loc_00409887: var_160 = var_90
  loc_004098E5: var_7C = var_90
  loc_004098F1: var_eax = %fobj
  loc_00409900: On Error Resume Next
  loc_00409938: var_C0 = Mid(var_8C, 1, 1)
  loc_0040994F: If var_15C >= 8 Then GoTo loc_0040995D
  loc_0040995B: GoTo loc_00409969
  loc_0040995D: 'Referenced from: 0040994F
  loc_0040995D: var_eax = Err.Raise
  loc_00409963: var_1A0 = Err.Raise
  loc_00409969: 'Referenced from: 0040995B
  loc_00409992: ecx = var_C0
  loc_004099EF: var_C0 = Mid(var_8C, 2, 1)
  loc_00409A06: If var_15C >= 8 Then GoTo loc_00409A14
  loc_00409A12: GoTo loc_00409A20
  loc_00409A14: 'Referenced from: 00409A06
  loc_00409A14: var_eax = Err.Raise
  loc_00409A1A: var_1A4 = Err.Raise
  loc_00409A20: 'Referenced from: 00409A12
  loc_00409A49: ecx = var_C0
  loc_00409AA6: var_C0 = Mid(var_8C, 3, 1)
  loc_00409ABD: If var_15C >= 8 Then GoTo loc_00409ACB
  loc_00409AC9: GoTo loc_00409AD7
  loc_00409ACB: 'Referenced from: 00409ABD
  loc_00409ACB: var_eax = Err.Raise
  loc_00409AD1: var_1A8 = Err.Raise
  loc_00409AD7: 'Referenced from: 00409AC9
  loc_00409B00: ecx = var_C0
  loc_00409B5D: var_C0 = Mid(var_8C, 4, 1)
  loc_00409B74: If var_15C >= 8 Then GoTo loc_00409B82
  loc_00409B80: GoTo loc_00409B8E
  loc_00409B82: 'Referenced from: 00409B74
  loc_00409B82: var_eax = Err.Raise
  loc_00409B88: var_1AC = Err.Raise
  loc_00409B8E: 'Referenced from: 00409B80
  loc_00409BB7: ecx = var_C0
  loc_00409C14: var_C0 = Mid(var_8C, 5, 1)
  loc_00409C2B: If var_15C >= 8 Then GoTo loc_00409C39
  loc_00409C37: GoTo loc_00409C45
  loc_00409C39: 'Referenced from: 00409C2B
  loc_00409C39: var_eax = Err.Raise
  loc_00409C3F: var_1B0 = Err.Raise
  loc_00409C45: 'Referenced from: 00409C37
  loc_00409C6E: ecx = var_C0
  loc_00409CCB: var_C0 = Mid(var_8C, 6, 1)
  loc_00409CE2: If var_15C >= 8 Then GoTo loc_00409CF0
  loc_00409CEE: GoTo loc_00409CFC
  loc_00409CF0: 'Referenced from: 00409CE2
  loc_00409CF0: var_eax = Err.Raise
  loc_00409CF6: var_1B4 = Err.Raise
  loc_00409CFC: 'Referenced from: 00409CEE
  loc_00409D25: ecx = var_C0
  loc_00409D82: var_C0 = Mid(var_8C, 7, 1)
  loc_00409D99: If var_15C >= 8 Then GoTo loc_00409DA7
  loc_00409DA5: GoTo loc_00409DB3
  loc_00409DA7: 'Referenced from: 00409D99
  loc_00409DA7: var_eax = Err.Raise
  loc_00409DAD: var_1B8 = Err.Raise
  loc_00409DB3: 'Referenced from: 00409DA5
  loc_00409DDC: ecx = var_C0
  loc_00409E39: var_C0 = Mid(var_8C, 8, 1)
  loc_00409E50: If var_15C >= 8 Then GoTo loc_00409E5E
  loc_00409E5C: GoTo loc_00409E6A
  loc_00409E5E: 'Referenced from: 00409E50
  loc_00409E5E: var_eax = Err.Raise
  loc_00409E64: var_1BC = Err.Raise
  loc_00409E6A: 'Referenced from: 00409E5C
  loc_00409E93: ecx = var_C0
  loc_00409ED6: If var_160 >= 8 Then GoTo loc_00409EE4
  loc_00409EE2: GoTo loc_00409EF0
  loc_00409EE4: 'Referenced from: 00409ED6
  loc_00409EE4: var_eax = Err.Raise
  loc_00409EEA: var_1C0 = Err.Raise
  loc_00409EF0: 'Referenced from: 00409EE2
  loc_00409F03: var_118 = Asc(ecx+eax*4)
  loc_00409F25: If var_15C >= 8 Then GoTo loc_00409F33
  loc_00409F31: GoTo loc_00409F3F
  loc_00409F33: 'Referenced from: 00409F25
  loc_00409F33: var_eax = Err.Raise
  loc_00409F39: var_1C4 = Err.Raise
  loc_00409F3F: 'Referenced from: 00409F31
  loc_00409F51: var_64 = var_64 + var_15C
  loc_00409F53: var_64 = Asc(ecx+eax*4)
  loc_00409F71: If var_160 >= 8 Then GoTo loc_00409F7F
  loc_00409F7D: GoTo loc_00409F8B
  loc_00409F7F: 'Referenced from: 00409F71
  loc_00409F7F: var_eax = Err.Raise
  loc_00409F85: var_1C8 = Err.Raise
  loc_00409F8B: 'Referenced from: 00409F7D
  loc_00409F9E: var_118 = Asc(edx+ecx*4)
  loc_00409FC0: If var_15C >= 8 Then GoTo loc_00409FCE
  loc_00409FCC: GoTo loc_00409FDA
  loc_00409FCE: 'Referenced from: 00409FC0
  loc_00409FCE: var_eax = Err.Raise
  loc_00409FD4: var_1CC = Err.Raise
  loc_00409FDA: 'Referenced from: 00409FCC
  loc_00409FEC: var_15C = var_15C + var_64
  loc_00409FEE: var_15C = Asc(edx+ecx*4)
  loc_0040A00C: If var_160 >= 8 Then GoTo loc_0040A01A
  loc_0040A018: GoTo loc_0040A026
  loc_0040A01A: 'Referenced from: 0040A00C
  loc_0040A01A: var_eax = Err.Raise
  loc_0040A020: var_1D0 = Err.Raise
  loc_0040A026: 'Referenced from: 0040A018
  loc_0040A039: var_118 = Asc(edx+ecx*4)
  loc_0040A05B: If var_15C >= 8 Then GoTo loc_0040A069
  loc_0040A067: GoTo loc_0040A075
  loc_0040A069: 'Referenced from: 0040A05B
  loc_0040A069: var_eax = Err.Raise
  loc_0040A06F: var_1D4 = Err.Raise
  loc_0040A075: 'Referenced from: 0040A067
  loc_0040A087: var_15C = var_15C + var_64
  loc_0040A089: var_15C = Asc(edx+ecx*4)
  loc_0040A0A7: If var_160 >= 8 Then GoTo loc_0040A0B5
  loc_0040A0B3: GoTo loc_0040A0C1
  loc_0040A0B5: 'Referenced from: 0040A0A7
  loc_0040A0B5: var_eax = Err.Raise
  loc_0040A0BB: var_1D8 = Err.Raise
  loc_0040A0C1: 'Referenced from: 0040A0B3
  loc_0040A0D4: var_118 = Asc(edx+ecx*4)
  loc_0040A0F6: If var_15C >= 8 Then GoTo loc_0040A104
  loc_0040A102: GoTo loc_0040A110
  loc_0040A104: 'Referenced from: 0040A0F6
  loc_0040A104: var_eax = Err.Raise
  loc_0040A10A: var_1DC = Err.Raise
  loc_0040A110: 'Referenced from: 0040A102
  loc_0040A122: var_15C = var_15C + var_64
  loc_0040A124: var_15C = Asc(edx+ecx*4)
  loc_0040A142: If var_160 >= 8 Then GoTo loc_0040A150
  loc_0040A14E: GoTo loc_0040A15C
  loc_0040A150: 'Referenced from: 0040A142
  loc_0040A150: var_eax = Err.Raise
  loc_0040A156: var_1E0 = Err.Raise
  loc_0040A15C: 'Referenced from: 0040A14E
  loc_0040A16F: var_118 = Asc(edx+ecx*4)
  loc_0040A191: If var_15C >= 8 Then GoTo loc_0040A19F
  loc_0040A19D: GoTo loc_0040A1AB
  loc_0040A19F: 'Referenced from: 0040A191
  loc_0040A19F: var_eax = Err.Raise
  loc_0040A1A5: var_1E4 = Err.Raise
  loc_0040A1AB: 'Referenced from: 0040A19D
  loc_0040A1BD: var_15C = var_15C + var_64
  loc_0040A1BF: var_15C = Asc(edx+ecx*4)
  loc_0040A1DD: If var_160 >= 8 Then GoTo loc_0040A1EB
  loc_0040A1E9: GoTo loc_0040A1F7
  loc_0040A1EB: 'Referenced from: 0040A1DD
  loc_0040A1EB: var_eax = Err.Raise
  loc_0040A1F1: var_1E8 = Err.Raise
  loc_0040A1F7: 'Referenced from: 0040A1E9
  loc_0040A20A: var_118 = Asc(edx+ecx*4)
  loc_0040A22C: If var_15C >= 8 Then GoTo loc_0040A23A
  loc_0040A238: GoTo loc_0040A246
  loc_0040A23A: 'Referenced from: 0040A22C
  loc_0040A23A: var_eax = Err.Raise
  loc_0040A240: var_1EC = Err.Raise
  loc_0040A246: 'Referenced from: 0040A238
  loc_0040A258: var_15C = var_15C + var_64
  loc_0040A25A: var_15C = Asc(edx+ecx*4)
  loc_0040A278: If var_160 >= 8 Then GoTo loc_0040A286
  loc_0040A284: GoTo loc_0040A292
  loc_0040A286: 'Referenced from: 0040A278
  loc_0040A286: var_eax = Err.Raise
  loc_0040A28C: var_1F0 = Err.Raise
  loc_0040A292: 'Referenced from: 0040A284
  loc_0040A2A5: var_118 = Asc(edx+ecx*4)
  loc_0040A2C7: If var_15C >= 8 Then GoTo loc_0040A2D5
  loc_0040A2D3: GoTo loc_0040A2E1
  loc_0040A2D5: 'Referenced from: 0040A2C7
  loc_0040A2D5: var_eax = Err.Raise
  loc_0040A2DB: var_1F4 = Err.Raise
  loc_0040A2E1: 'Referenced from: 0040A2D3
  loc_0040A2F3: var_15C = var_15C + var_64
  loc_0040A2F5: var_15C = Asc(edx+ecx*4)
  loc_0040A313: If var_160 >= 8 Then GoTo loc_0040A321
  loc_0040A31F: GoTo loc_0040A32D
  loc_0040A321: 'Referenced from: 0040A313
  loc_0040A321: var_eax = Err.Raise
  loc_0040A327: var_1F8 = Err.Raise
  loc_0040A32D: 'Referenced from: 0040A31F
  loc_0040A340: var_118 = Asc(edx+ecx*4)
  loc_0040A362: If var_15C >= 8 Then GoTo loc_0040A370
  loc_0040A36E: GoTo loc_0040A37C
  loc_0040A370: 'Referenced from: 0040A362
  loc_0040A370: var_eax = Err.Raise
  loc_0040A376: var_1FC = Err.Raise
  loc_0040A37C: 'Referenced from: 0040A36E
  loc_0040A38E: var_15C = var_15C + var_64
  loc_0040A390: var_15C = Asc(edx+ecx*4)
  loc_0040A3AE: If var_15C >= 8 Then GoTo loc_0040A3BC
  loc_0040A3BA: GoTo loc_0040A3C8
  loc_0040A3BC: 'Referenced from: 0040A3AE
  loc_0040A3BC: var_eax = Err.Raise
  loc_0040A3C2: var_200 = Err.Raise
  loc_0040A3C8: 'Referenced from: 0040A3BA
  loc_0040A3D9: If var_160 >= 8 Then GoTo loc_0040A3E7
  loc_0040A3E5: GoTo loc_0040A3F3
  loc_0040A3E7: 'Referenced from: 0040A3D9
  loc_0040A3E7: var_eax = Err.Raise
  loc_0040A3ED: var_204 = Err.Raise
  loc_0040A3F3: 'Referenced from: 0040A3E5
  loc_0040A404: If var_164 >= 8 Then GoTo loc_0040A412
  loc_0040A410: GoTo loc_0040A41E
  loc_0040A412: 'Referenced from: 0040A404
  loc_0040A412: var_eax = Err.Raise
  loc_0040A418: var_208 = Err.Raise
  loc_0040A41E: 'Referenced from: 0040A410
  loc_0040A42F: If var_168 >= 8 Then GoTo loc_0040A43D
  loc_0040A43B: GoTo loc_0040A449
  loc_0040A43D: 'Referenced from: 0040A42F
  loc_0040A43D: var_eax = Err.Raise
  loc_0040A443: var_20C = Err.Raise
  loc_0040A449: 'Referenced from: 0040A43B
  loc_0040A45A: If var_16C >= 8 Then GoTo loc_0040A468
  loc_0040A466: GoTo loc_0040A474
  loc_0040A468: 'Referenced from: 0040A45A
  loc_0040A468: var_eax = Err.Raise
  loc_0040A46E: var_210 = Err.Raise
  loc_0040A474: 'Referenced from: 0040A466
  loc_0040A485: If var_170 >= 8 Then GoTo loc_0040A493
  loc_0040A491: GoTo loc_0040A49F
  loc_0040A493: 'Referenced from: 0040A485
  loc_0040A493: var_eax = Err.Raise
  loc_0040A499: var_214 = Err.Raise
  loc_0040A49F: 'Referenced from: 0040A491
  loc_0040A4B0: If var_174 >= 8 Then GoTo loc_0040A4BE
  loc_0040A4BC: GoTo loc_0040A4CA
  loc_0040A4BE: 'Referenced from: 0040A4B0
  loc_0040A4BE: var_eax = Err.Raise
  loc_0040A4C4: var_218 = Err.Raise
  loc_0040A4CA: 'Referenced from: 0040A4BC
  loc_0040A4DB: If var_178 >= 8 Then GoTo loc_0040A4E9
  loc_0040A4E7: GoTo loc_0040A4F5
  loc_0040A4E9: 'Referenced from: 0040A4DB
  loc_0040A4E9: var_eax = Err.Raise
  loc_0040A4EF: var_21C = Err.Raise
  loc_0040A4F5: 'Referenced from: 0040A4E7
  loc_0040A501: var_64 = var_64 + var_15C
  loc_0040A510: var_64 = var_64 + var_160
  loc_0040A52D: var_64 = var_64 + var_164
  loc_0040A54A: var_64 = var_64 + var_168
  loc_0040A567: var_64 = var_64 + var_16C
  loc_0040A584: var_64 = var_64 + var_170
  loc_0040A5A1: var_64 = var_64 + var_174
  loc_0040A5BE: var_64 = var_64 + var_178
  loc_0040A5DA: var_24 = var_64 + var_64 + var_64 + var_64 + var_64 + var_64 + var_64 + var_64
  loc_0040A634: If var_15C >= 8 Then GoTo loc_0040A642
  loc_0040A640: GoTo loc_0040A64E
  loc_0040A642: 'Referenced from: 0040A634
  loc_0040A642: var_eax = Err.Raise
  loc_0040A648: var_220 = Err.Raise
  loc_0040A64E: 'Referenced from: 0040A640
  loc_0040A66E: var_64 = var_64 + var_15C
  loc_0040A68A: var_58 = var_64 * 3
  loc_0040A6A8: If var_15C >= 8 Then GoTo loc_0040A6B6
  loc_0040A6B4: GoTo loc_0040A6C2
  loc_0040A6B6: 'Referenced from: 0040A6A8
  loc_0040A6B6: var_eax = Err.Raise
  loc_0040A6BC: var_224 = Err.Raise
  loc_0040A6C2: 'Referenced from: 0040A6B4
  loc_0040A6F3: var_ret_2 = var_64 + var_15C * 5
  loc_0040A77C: var_28 = "ska" & var_24 & CStr(var_58) & CStr(CInt(-1))
  loc_0040A7C0: If (var_28 <> var_7C) <> 0 Then GoTo loc_0040A8A3
  loc_0040A815: var_C0 = "CrackMe"
  loc_0040A83B: var_B0 = "Good, this version is registrered !"
  loc_0040A85F: MsgBox(var_B0, 1, var_C0, var_D0, var_E0)
  loc_0040A871: var_48 = CStr(MsgBox(var_B0, 1, var_C0, var_D0, var_E0))
  loc_0040A89E: GoTo loc_0040A97B
  loc_0040A8A3: 'Referenced from: 0040A7C0
  loc_0040A8F2: var_C0 = "CrackMe"
  loc_0040A918: var_B0 = "Sorry, password Incorrect"
  loc_0040A93C: MsgBox(var_B0, 1, var_C0, var_D0, var_E0)
  loc_0040A94E: var_48 = CStr(MsgBox(var_B0, 1, var_C0, var_D0, var_E0))
  loc_0040A97B: 'Referenced from: 0040A89E
  loc_0040A987: GoTo loc_0040A9F9
  loc_0040A9B6: var_eax = %fobj
  loc_0040A9F8: Exit Sub
  loc_0040A9F9: 'Referenced from: 0040A987
  loc_0040AA0E: var_154 = var_40
  loc_0040AA38: var_158 = var_70
End Sub

jJPHyES

@UND3R
@Apuromafo

Gracias por vuestros comentarios, y espero en Dios que os haya sido útil este pequeñito tutorial.

Nota: @UND3R No te entendí un poco.

Que Dios los bendiga, protega y acompañe.