--
ESTUDIO COLECTIVO DE DESPROTECCIONES | ||
WKT Tutorialz Site | ||
Mr.Brown | Introducci≤n al SoftIce | Julio 1998 |
Instalaci≤n del Soft-Ice 3.22 para W95 |
|
Configuraci≤n del entorno (WinIce.Dat) |
Los parametros de configuraci≤n estan en el fichero WinIce.Dat, y se puede
acceder a ellos tambiΘn desde el pgm Symbol Loader, en la opci≤n de
SoftICE Initialization Settings.
Algunos comandos se pueden teclear directamente desde el SoftIce, o se pueden
tener en el WinIce.Dat para que se ejecuten al arrancar. CODE ON : Para ver los bytes en hexa de cada instrucci≤n asm. LINES # : N·mero de linias para la pantalla. WR : Para ver/ocultar la ventana de Registers. WL : Para ver/ocultar la ventana de Locals. WC # : N·mero de linias para la ventana de Code. WD # : N·mero de linias para la ventana de Data. WW # : N·mero de linias para la ventana de Watch.
Un ejemplo de configuraci≤n podrφa ser : INIT="CODE ON;LINES 60;WR;WL;WD 13;WC 25;WATCH eax;WATCH *eax;X;"Estando en el SoftIce, el tama±o de las ventanas tambiΘn se puede modificar con el rat≤n. Y tambiΘn se pueden cambiar los colores con el comando COLOR
|
Configuraci≤n del entorno (WinIce.Dat) |
Para poder interceptar llamadas a funciones externas del programa que estamos
traceando, hay que retocar unas linias en el WinIce.Dat Se tienen que "exportar" los ficheros que contengan las funciones que queramos pillar. Los tφpicos que conviene tener para interceptar las llamadas al Api de windows son : EXP=c:\windows\system\kernel32.dll EXP=c:\windows\system\user32.dll EXP=c:\windows\system\gdi32.dll EXP=c:\windows\system\advapi32.dllEstas linias las vereis en el WinIce.Dat, pero con un puntoycoma delante que las inactiva. Tan s≤lo quitar el ; y retocar el path del windows si no se ajustase a vuestro Pc.
Sin estos "Exports", no se podria poner un BreakPoint tipo BPX GetWindowTextA, que son muy
·tiles para bastantes desprotecciones. |
Traceando .... |
Tenemos varias opciones para ir avanzando por el programa : T (F8): Ejecuta la instrucci≤n actual y se para en la siguiente. P (F10): Igual que T, pero no entra en los Call. P RET (F12): Ejecuta hasta una instrucci≤n de retorno (RET). G address (F11): Ejecuta hasta la direcci≤n 'address'. |
Husmeando .... |
Para poder ver o buscar lo que hay en memoria : D address [L length] : Muestra el contenido de la memoria. S address L length data-string: Busca un valor en la memoria RAM.Ejemplos : D EAX => para ver quΘ hay en EAX D *EAX => para ver quΘ hay en la direcci≤n que apunta EAX D EBP-200 ==> para ver quΘ hay en EBP-200 D 000F:A8A57 ==> para ver quΘ hay en la direcci≤n F:A8A57
S 0 L FFFFFFFF 'clave' => Busca el texto 'clave' por toda la memoria. |
Parando .... |
El uso de los BreakPoints, o Puntos de Ruptura es muy ·til para parar el programa en un momento dado.
Ponerlos bien significa ahorrarse ver muchas linias de c≤digo in·til. Para manipular los BreakPoints tenemos : BL : Muestra los BreakPoints que hemos puesto. BD # : Desactiva el BreakPoint n·mero # (* para todos). BE # : Activa el BreakPoint n·mero # (* para todos). BC # : Elimina el BreakPoint n·mero # (* para todos).Algunos de los BreakPoints disponibles son : BPX address/symbol : Parada por ejecuci≤n. BPIO [-h] port [R|W|RW] : Parada por acceso a puerto E/S. BPINT interrupt-number : Parada por interrupci≤n. BMSG hWnd [L] begin-msg : Parada por mensaje. BPM address : Parada por acceso a memoria.Para ver ejemplos y coger ideas de Puntos de Ruptura, ver el documento de BreakPoints. |
Pidiendo .... |
Con el SoftIce disponemos de varios comandos para obtener informaci≤n del Sistema. Por ejemplo, WMSG : Muestra los mensajes de windows.(wm_gettext, wm_lbuttondown,..) TASK : Muestra las tareas actualmente en ejecuci≤n. HWND nombreTask : Muestra informaci≤n sobre los "windows handles". EXP : Muestra/Carga las funciones "exportadas" de las DLLs.Supongamos que queremos interceptar quΘ se hace con una clave que acabamos de introducir en un programa. Se podrφa hacer (entre otras maneras) : TASK => para ver el nombre del programa. HWND nombrePgm => para ver que apuntadores hay para ese programa. BMSG apuntador mensaje ==> para poner un BreakPoint.
Ej: interceptar para la tarea prueba32, el "Window-Handle" 2C0
(Class_Name: Edit, que corresponde al cuadro de texto) |
[ Entrada | Documentoz GenΘricoz | WKT TEAM Main Site ] |
[ Todo el ECD | x Tipo de Protecci≤n | x Fecha de Publicaci≤n | x orden AlfabΘtico ] |