[ Predator's Cave ]

 

YA QUE NO CREE UNA WEBPAGE, SOLO VERAS
MI TUTORIAL AQUI, EN INLINE PATCHING ASPROTECTED APPS!

perdon por la inconveniencia ;>

 

**** iNLiNE pATCHiNG A pROGRAM pACKED WiTH ASProtect (pArChEaR Un pRoGRAMa eMPAQUETADO CoN ASProtect)- Por Predator [PC/MFD] - April 26, 2000 ****

Publicado por Tsehp April 2000

Traducción de ^[G]oLe[E]^

Si quieres descargar este tutorial en forma de texto, has click AQUI. (en Inglés).

Oh sí, puede hacerse! Y en este texto tratare de explicar como. Antes que nada, dejame decirte que el creador de este enpaquetamiento es bastante listo (aunque no lo suficiente) y me tomo mucho tiempo antes de que pudiera terminarlo. Saludos a R!SC por ponerme en el camino correcto cuando me habia perdido, termine las cosas rapidamente despues de esto. AsProtect es una versión modificada de ASPack (el mismo creador) y ofrece un gran radio de compresión, chequeo de CRC y detección de SoftICE (jeje.. y la detección del SoftICE es aglo es algo que usaremos alegremente en este tutorial). Normalmente, si quieres parchear un objetivo dentro de la memoria (lee los excelentes tutoriales de R!SC acerca de este tema si no sabes que significa o si no sabes como hacerlo) puedes facilmente sobreescribir algo del código en el archivo y hacerlo saltar a tu parche. El problema con ASProtect es que usa 4 capas relocalizadoras. Mi primear idea de hacer un parche fue dejar que el programa parcheara todas las capas en memoria una a una, pero quedarias con horas y horas de trabajo y la pregunta es si el parche funcionara en todas las diferentes versiones de Windows (debido al direfente direccionamiento en cada versión). No, esa no es una buena solución. Entonces llegué a la conclusión de usar un Timer que se fija en el inicio del programa (el Punto de Entrada del programa) que chequeara cada milisegundo si el programa es desenpaquetado -> Si sí, entonces parchea y desactiva el timer, de lo contrario, continua. Bueno, traté pero no trabajo. La primera vez que la función del timer corre es despues que el programa es lanzado y las nags muestran su contenido... entonces es muy tarde para parchear. La siguiente idea, enganchemos algunas API con los procedimientos de desempaquetado, usar y dejar el punto para nuestro código de parcheo. Olvidalo, no trabajará ya que cada capa tiene una nueva dirección apuntando a la API y Shit... Entonces, qué nos queda? Que demonios podemos hacer con esta maldita ASProtect? te sorprenderas de cuan facil puede ser Parchear la memoria iNLiNe de un programa empaquetado con el.

R!SC me dijo lo siguiete: El Punto de Entrada del Programa REAL del archivo, está -Fuertemente codificado- en el EXE que está en tu Disco Duro. Esto significa que puedes sobreescribir la dirección del PEP (PEP = Program Entry Point = Punto de Entrada del Programa) con la dirección de tu función parche y en la función parche despues de parchear, saltar al PEP. Pero aún queda el chequeo CRC. El dijo que no estaba seguro si tambien estaba -Fuertemente codificado- -> SI LO ESTÁ! Entonces, que tenemos que conseguir aquí? esta es nuestra aproximación:

  1. Cambiar el Punto de Entrada del Programa en el archivo (con tu editor Hex) y cambialo a la dirección de tu función parche.

  2. La función parche hará esto: parchear el programa, entonces saltar al PEP real.

  3. Lanzar el programa, agarrar el NUEVO crc (despues los parches al archivo que he hecho) y escribelo al archivo de nuevo para que se actualice..

Y sí, TrAbAjA!!

Objetivo: Awave Studio v7.0
URL del Objetivo: http://www.fmjsoft.com/download/awave70.zip (como 670 kb)
Protección: NAGS y similares (desactivaremos la nag) + Empaquetado con ASProtect


Okas niñas (el okas es del traductor), aca vamos ;> Antes que nada, juntemos algo de información que necesitamos. Necesitamos antes que nada el PEP real y tenemos que hacerlo ir a la dirección de nuestro parche. Si corres Awave, veras que hay una detección de SoftICE. Entra al SICE -> bpx _lopen. Corre Awave de nuevo, veras que hay 2 llamadas a _lopen. Juega con estos 2 saltas y el chequeo de SoftICE será historia. Okas, ahora estamos cerca del PEP. Golpea F12 3 veces, y entonces reinicia el rastreo con F10. En un momento dado (ve cuidadosamente) verás este EAX=004A71E7. El programa hace un PUSH EAX y entonces un RET. Esto significa que solamente ira al PEP y ASProtect no hara nada nunca mas y el programa solo correra. Bien, nuestro PEP esta en 4A71E7. Busquemolo con nuestro editor HEX en awave.exe! Rapidamente notaras que si lo buscas por los bytes 4A71E7 que no los encontraras. Recuerdas que debes usar el order Invertido? Busca: E7 71 4A... Santos cielos, continua sin encontrar nada. Jeje... la cosa es que el archivo contiene el PEP - imagen base (por lo regular es 400000) asi que lo que queda: 4A71E7 - 400000 = A71E7. Y continuamos usando orden reverso, asi que esto es lo que tenemos que buscar (y esta vez si lo encontraras): E7 71 0A. MIEDO! Ahora podemos cambiar eso a la localidad de nuestro código parche. Yo usé el offset 320 (el cual será VA: 400320). Así que reemplazamos los bytes E7 71 0A con: 20 03 00. Ahora, si corres el programa, irá a la dirección 400320 en lugar de el PEP real! Y ahora que hacemos? ponemos el parche en el offset 320. No explicare como remover la nagscreen pero la encontré rápidamente, NOPea (hacer NOP) 2 bytes en la dirección 4644D9. Mi parche en el offset 320 se ve como esto (en HIEW):

00000320 66C705D94446009090 mov w,[0004644D9],09090 (parche del programa)
00000329 68E7714A00 push 0004A71E7 (empujar el Punto de Entrada REAL del Programa)
0000032E C3 retn (Retornar al Punto de Entrada real del Programa)

Okas, entonce lo que tenemos ahora es esto. Si corres el programa - imagina que ahora no hay chequeo CRC - ASProtect hará su trabajo desempacando y shit como esa y eventualmente saltara a nuestro parche en lugar del PEP. El parcher hará su trabajo en el código del programa y entonces va al PEP como si nada pasara.

Como dije, imagina que no hay chequeo CRC. Pero como está, tenemos que vencerlo también. Si corrieras el programa ahora, el chequeo CRC te pateria los huevos (o los testiculos, para hacerlo mas entendible) :> Como dije antes, el CRC tambien esta fuertemente codificado en el EXE. Entonces tenemos que encontrar la comparación entre el CRC actual y el CRC que el archivo -DeBeRiA- tener y entonces, escribir el CRC actual al archivo (reemplazar la antigua). Entonces estamos libre y hemos vencido ASProtect! Okas, Ahora te preguntas donde demonios encontrarias el chequeo CRC? Bien, de nuevo entra a SoftICE y escribe bpx _lopen. Corre awave y juega con las flags para desactivar el chequeo del SICE. Presiona F12 solamente Una Vez y camina un poco. Verás una comparación entre EAX y EBP-8 (si no estoy mal). Lo divertido es que EBP-8 tiene el CRC que el archivo debe tener, y EAX tiene el CRC que tiene ahora. Escribelos, sal del SoftICE y AWAVE. HEXedita (abrir en el Editor HEX) Awave.exe de nuevo y busca los bytes (en orden inverso) del CRC original. El CRC original = 767583A8, entonces buscamos: A8 83 75 76. Jeje, serán encontrados. De allí sobrescribimos esos bytes (no olvides revertir el orden!) con el nuevo CRC. Para mi, el nuevo CRC era 53238D77 así que escribimos: 77 8D 23 53. Salimos de HIEW. Ahora, ya que no queremos ninguna sorpresa, corremos i>FrogsICE para que no tengas que desactivar manualmente el chequeo del SoftICE.

Corre Awave.exe, el programa correra y no mostrará la Nag, !!!! Tú (mejor dicho: Nosotros:) lo hicimos !!!!
De nuevo, una protección ya hecha muerde el polvo. Tengo que admitir que esta no fue muy rapida, pero sabemos que no hay ninguna protección imposible de crackear y esto prueba bastante lo que pienso :-)

Saludos: Bueno, especialmente agradezco a R!SC por ponerme en el camino correcto, pero por supuesto, tambien a todo la gente del Phrozen Crew y Manifest Destiny. No puedo olvidarme de mencionar a los Hardcore Crackers en #cracking4newbies.. Ademas a toda la gente con la que me reuno en el IRC pero no mencionare nombres porque a los que accidentalmente olvide me patearian en los huevos por eso ;>
Hiyaz a todos ustedes!

Firmando,

   Predator [PC/MFD]

Saludos a mi NuBeCiTa, LuIsA TKM.
www.000webhost.com