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!
|
|