| Removiendo
        Anuncios de Aureate Media (+Tsehp) 
 
            
                | Cuando
                lanzas un programa que te muestra un banner
                cambiando cada 3 segundos, es bastante molesto...
                apenas puedes dejar de mirar ese banner. Primero
                yo me pregunto: ¿Cuál podría ser la LLAMADA
                para desplegar esto? 
 ¿CreateBitmap? ¿DrawIcon? ¿FillRect?
 
 Ninguno de estos... esto no funciona con un solo
                BPX en SoftICE. Así que yo intenté en SoftICE
                HWND binboy y ves la ventana oculta: ADVERT.DLL
                ...
 
 No tienes que mirar ninguno más: Dispara
                Win32Dasm en ADVERT.DLL localizado en
                Windows\System o WinNT\System32 y mira las
                funciones exportadas... verás _paint, mira la
                dirección y pon un BPX en esta dirección con
                SoftICE.
 
 ¡Y funciona! Cada vez que el banner cambia el
                programa Llama a esta función exportada en
                ADVERT.DLL... rastrea esta función dentro de
                ADVERT.DLL e inspecciona el banner, llegarás
                aquí:
 
 
 
* Reference To: GDI32.StretchDIBits, Ord:0000h
   |
:XXXX (depende de tu memoria)
:XXXX E871750400 Call 0045DD24
:XXXX 85C0 test eax, eax
:XXXX 0F95C2 setne dl
 Aquí
                está la documentación de esta función: 
 La función StretchDIBits copia los datos de
                color para un rectángulo de puntos en un mapa de
                bits independiente del dispositivo (DIB) al
                rectángulo del destino especificado. Si el
                rectángulo del destino es más grande que el
                rectángulo de la fuente, esta función estira
                las filas y columnas de datos de color para
                encajar el rectángulo del destino. Si el
                rectángulo del destino es menor que el
                rectángulo de la fuente, esta función comprime
                las filas y columnas usando el funcionamiento de
                la trama especificado.
 
 
int StretchDIBits( 
HDC hdc, 		  // manipulador de contexto del dispositivo 
int XDest, 		  // coordenada X de la esquina superior-izquierda del rect. dest. 
int YDest, 		  // coordenada Y de la esquina superior-izquierda del rect. dest. 
int nDestWidth, 	 	  // anchura del rectángulo de destino 
int nDestHeight, 	    	  // altura del rectángulo de destino 
int XSrc, 		  	  // coordenada X de esquina superior-izquierda de rect de la fuente. 
int YSrc, 		  	  // coordenada Y de esquina superior-izquierda de rect de la fuente. 
int nSrcWidth,	      	  // anchura de rectángulo de la fuente 
int nSrcHeight, 	   	  // altura de rectángulo de la fuente 
CONST VOID *lpBits,      	  // dirección bits del mapa de bits 
CONST BITMAPINFO *lpBitsInfo,   // dirección de datos del mapa de bits 
UINT iUsage, 		  // uso 
DWORD dwRop 		  // código de funcionamiento de trama 
); 
 Así
                que tu tienes la elección: simplemente
                "NOPea" la LLAMADA a esta función o
                cambia los parámetros y mostrará cualquier cosa
                que tu quieras. Bien, yo lo "nopeé" y
                no muestra nada. |  
 
 
 Crackeando NAG Screen (josephCo)
 
 
            
                | Esto
                puede parecer también confuso... pero de nuevo,
                juega alrededor de ello. Te acostumbrarás a
                usarlo. Cuando una NAG Screen aparece, entra en
                SoftICE y teclea: 
 HWND
 
 Debes ver algo similar a:
 
 
 
                    
                        | Window-Handle | hQueue | SZ | QOwner | Class-Name | Window-Procedure |  
                        | 0080 (0) | 2057 | 32 | MSGSVR32 | #32711
                        (switch_win) | 17EF:00004B6E |  
                        | 0084 (1) | 2057 | 32 | EXPLORER | shell_trayWnd | 1487:0000016C |  
                        | ... | ... | ... | ... | ... | ... | Lo que necesitas hacer es desplazar hacia abajo
                la lista de manipuladores, y mirar el QOWNER.
                Encuentra el manipulador de un proceso que
                pertenezca a tu programa, y si tu NAG Screen
                tiene un botón de OK, busca un BUTTON bajo el
                class name. Si tu NAG Screen no tiene uno,
                entonces cualquier cosa que tenga BUTTON después
                de él, no será el manipulador que quieres
                romper. Esto será ensayo/ error hasta que
                consigas el que quieres (explicado un poco). La
                lista de manipuladores probablemente será
                bastante larga, pero normalmente el NAG Screen
                está entre los primeros que pertenecen a tu
                programa.
 
 
 
                    
                        | TORN@DO's
                        Tip 
 |  
                        | Recomiendo
                        altamente usar una herramienta como SMU
                        Winspector para
                        crackear NAGs. Te ahorrará la cosa del
                        ensayo / error, de modo que aliviará tu
                        trabajo, que siempre es bueno. 
 SMU Winspector y otras herramientas de
                        ese tipo muestran toda la información
                        que necesitas, Window-Handle,
                        Window-Class Name, Window-Text, Parent
                        Window-Handle, Parent-Window Class Name,
                        Parent Window-Text, Module ...
 | 
 Una vez pienses que has encontrado el manipulador
                de la NAG screen, querrás usar el comando BMSG.
                Si quieres ver el parámetro exacto que lo
                permite, mientras estés en SoftICE, teclea:
 
 HELP BMSG
 
 OK, ahora a nuestro ejemplo. Supón que tu NAG
                tiene un botón de OK después del manipulador
                que quieres romper (más fácil de encontrar), y
                piensas que has encontrado el manipulador
                apropiado. Tendrás que teclear:
 
 BMSG 0084
                WM_DESTROY
 
 Donde 0084 es el manipulador de tu NAG Screen. Lo
                que esto hace básicamente, es decir a SoftICE
                que rompa después de que el NAG Screen se ha
                borrado de la pantalla. Estarás muy dentro de
                algún API desconocido, así que tendrás a F12
                (P RET) el cual pondrá la Pausa en RETorno
                atrás al código de tu programa. A estas alturas
                quieres encontrar donde el NAG inicial fue creado
                (pon BPX en la mayoría de las Llamadas que
                llegan de fuera). El NAG Screen probablemente
                será creada/destruida en la misma LLAMADA, así
                que si encuentras la correcta, haz cualquier cosa
                que necesites hacer.
 
 |  
 
 
 Splash Screens (Predator NLS)
 
 
            
                | La
                manera más rápida de crackear NAG Screens es
                usar un Editor Hex y tus ojos. Arranca tu
                programa y espera hasta que la NAG Screen
                aparezca. Ahora anota la captación de la ventana
                y las primeras palabras del mensaje de diálogo.
                Entonces abre tu EXE (o DLL) y busca el string
                anotado. Si lo encontraste, te desplazas hacia
                arriba y buscas los 4 bytes FF FF FF 80... y si
                estuvieran ahí reemplaza el 80h por 90h.
                Después de este parcheado, arranca tu programa y
                nunca verás de nuevo el NAG. 
 A veces es necesario apretar un botón para
                continuar. ¡En esto casos a menudo, debes usar
                un debugger!
 
 |  
 
 
 
 |