Hollywood FX v3.08 - Tutorial

http://www.hollywoodfx.com/ - Webpage.

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

Durante los últimos meses he enfocado muchos de mis esfuerzos en el rango de DoNgLeS HASP, pero de nuevo regreso resaltando la debilidad fundamental de cualquier DoNgLe, su API. La mayoria de Centinelas que he visto no son tan fuertes como los equivalentes a las HASP, aunque la pregunta real es la implementación, los centinelas no parecen prestarse a esquemas fuertes, no hay, hasta donde sé, una facilidad para chequear algo mas que los códigos de retorno, un experto proteccionista HASP puede implementar algunos trucos furtivos. Para HFX (un buen programa que deberias comprarle a btw), gastaremos la mayor parte de nuestro tiempo en IDA/SoftICE.

La protección principal que encontré (como no tengo PhotoShop/Premiere instalado en este momento) fue dentro de hollywoodfx30.dll, pero antes de que lo consigas, queda el pequeño problema del número de serie de la instalación, tristemente he perdido el mio y rastrear el instalador no seria muy divertido. En lugar de cocinar el Wisdec y decompilar el setup.ins, hay un par de parches que deberias hacer por ti mismo.

Encontraremos la principal rutina de protección lo suficientemente facil con IDA y SoftICE, la dirección 1000932D es un realmente facil Entry Point (punto de entrada) (bpx InitCommonControls). Seguramente unas pocas lineas abajo estará nuestra protección.

:10009364 PUSH off_100229F4
:1000936A CALL sub_1000FA10 <-- Está conectada la DoNgLe?.
:1000936F TEST AX,AX <-- AX tiene el código de Retorno.
:10009372 JNZ short 100093A7 <-- Mal Salto.

Rastrea por 1000FA10 y nota el termino "Retraso del Centinela" ("Sentinel Lag" en inglés), el corto retrazo en SoftICE :). El retorno AX=3 es malo (chequea tus guias API, eso significa "Centinela no Conectado"), el resultado deseado es AX=0. Podemos rastrear esta función y facilmente identificar donde queremos parchear.

:1000FA99 MOV AX,0003 <-- Mover_la_flag_incorrecta.

Un monton de crackers podran criticar lo que voy a sugerir, ya que nunca tendremos conectada la DoNgLe, es perfectamente aceptable parchear este MOV a algo mas apropiado (digamos MOV AX,0000). Por supuesto podemos tambien ver, examinando el listado muerto, que forzando los 2 saltos condicionales a tomar el camino del código pensado, no nos dará ningun beneficio. Mas proteccionismo se aproxima.

:1000938E CALL sub_100100E0 <-- Accesar la DoNgLe de nuevo.
:10009393 TEST AX,AX <-- De nuevo AX almacena el código de retorno.
:10009396 JNZ short 100093A7 <-- Mal_salto.
:10009398 MOV AL, BYTE PTR 10026A7C
:1000939D CMP AL, BYTE PTR 100229F0 <-- No es necesario decir que estos bytes deberian ser iguales.
:100093A3 JNZ short 100093A7 <-- Mal_Salto.

:100101F9 AND AX,00FF <-- Finalmente pulir AX. (Quiza cambiarlo a XOR AX,AX ).

de nuevo puesdes rastrear este CALL e identificar donde parchear, aunque esto no es estrictamente necesario porque el CALL está referido solo en este código, también podemos cambiar el byte que es chequeado elegantemente si editamos el Mover_la_flag_incorrecta por MOV AL, BYTE PTR [100229F0]. El chequeo final se aproxima despues de algunos CALLs inocentes, diseñados para aburrir a los crackers, proporcionandote una vista a AX para un código de retorno de 3 o 9, es facil de localizar los chequeos de la DoNgLe.

:10009420 CALL sub_1000FC30 <-- Chequear la DoNgLe (Todavía?) de Nuevo.
:10009425 TEST AX,AX <-- Usar AX (Todavía) de nuevo.
:10009428 JNZ short 10009434 <-- Mal_salto.
:1000942A CMP WORD PTR [EBP+0C], 5E6A <-- Código de retonro de la DoNgLe.
:10009430 JNZ short 10009434 <-- Mal_Salto.
:10009432 XOR ESI,ESI <-- Un claro y excelente ESI del due no de la DoNgLe.

No insultare tu inteligencia explicando esto. Rastrea 1000FC30 y has un parche en la dirección 1000FCF5 con XOR AX,AX. También tienes el espacio de la dirección para cambiar el CMP a MOV (66 C7 45 0C 6A 5E). Ahora parece como si tenemos un Hollywood FX trabajando. Obviamente ahora que has visto como está estructurada la API en el programa principal, cualquier protección dentro de los plug-ins seran eminentemente similares (incidentalmente he visto los plug-ins Premiere y parecen estar libres de protección). Ahora puedes borrar el directorio /Sentinel.

Notas Adicionales

Un pequeño añadido a este tutorial y un agradecimiento a fuhrely por pasar esta información. Si piensas actualmente crackear completamente la protección, hay varios dll´s adicionales, los cuales necesitaras tomar en consideración - aparentemente también hacen chequeos de DoNgLe, lo cual contradice mi implicación de que hollywoodfx30.dll era el unico culpable. Estoy totalmente seguro que estos chequeos son muy similares a los descritos en este TuToRiAl.

Obviamente es importante tener a alguien que use un programa para chequear tu trabajo :-), en estas instancias, tienen mis disculpas.


greenball.gif (835 bytes) Dongles greenball.gif (835 bytes) Return to Main Index


© 1999 CrackZ. 11th March 1999.
www.000webhost.com