¿Cómo están
relacionados los registros EAX, AX, AL y AH?
EAX es un registro de 32 bit (un ' doubleword', o
' double'). La parte más baja de (E)AX es AX, un
registro de 16 bits (word) AX puede descomponerse
en partes más altas y más bajas, AH y AL (estos
son registros de 8 bits).
(E)AX = 934F93AB
Aquí la parte más alta es EAX=934F y la parte
más baja de (E)AX es AX: 93AB. Éstos son los
últimos 8 bits (byte) de él (recuerdas 2 bits =
1 hex). Se relacionan AH y AL directamente a este
como AH=93, AL=AB. Ellos no son independientes.
Modificando EAX modificas a AL, AH, etc... y
modificando a AL cambia AX y EAX. (NOTA: lo que
ves en SoftICE [en la ventana del registro]
realmente es el valor en hex.) (NOTA 2: (E)
normalmente indica que es un registro de 16 bit).
¿Cómo puedo usar
el comando BPM en SoftICE para encontrar serials?
Éste es un comando muy útil. Una vez has
encontrado donde tu serial ficticio se guarda,
puedes querer hacer un BPM SEG:OFFSET r. Esto le
dirá a SoftICE que rompa siempre que el programa
intente una lectura [(r)ead] de tu serial
ficticio (obviamente por que tendrá que
validarlo). Otra forma es conseguir descifrar la
rutina del código comprimido. Encuentra el
comando que piensas que se descomprime en alguna
parte. Pon un BPM SEG:OFFSET w en el. Reinicia el
programa. BOOM! SoftICE aparece de golpe en medio
de la rutina de descifrado donde el comando esta
escribiendo [(w)ritten] en la memoria. Encuentra
un espacio vacío y remienda esa dirección
después de la rutina del descifrado;)
¿Qué hacen esas
abreviaciones que están en la parte superior
derecha del SoftICE?
CoRN2:
O D I S Z A P C
| | | | | | | |
| | | | | | | +------- Carry Flag
| | | | | | +--------- Parity Flag
| | | | | +----------- Auxiliary Carry Flag
| | | | +------------- Zero Flag (MUY UTIL! )
| | | +--------------- Sign Flag
| | +----------------- Interrupt Flag
| +------------------- Direction Flag
+--------------------- Overflow Flag
¿Puedes darme
alguna información detallada sobre los
registros?
Registros de uso variado
EAX: - El acumulador. Uso general
EBX: - La base...
ECX: - el contador... principalmente para los
bucles...
EDX: - El desplazamiento...
Registros de la pila
EBP - el Indicador de la Base... para la pila..
ESP - el indicador de la pila..
Registros del segmento
CS - Code Segment.(Segmento de código) Esto es
donde las instrucciones son...
DS - Data Segment.(Segmento de datos) Esto es
donde pueden accederse a los datos. Segmento de
código al tratar con operaciones de strings.
ES - Extra Segment.(Segmento extra) Este segmento
también puede usarse como un segmento de datos.
Segmento de código al tratar con operaciones de
strings.
SS - Stack Segment.(Segmento de pila) Este
segmento es para las direcciones...
Registros del índice
ESI - el Indice del Origen. Usado por operaciones
de string como procedencia.
EDI - el Indice del Destino. Usado por
operaciones de string como destino.
(BX - BX también puede usarse como un registro
de índice. Éstos registros se usan junto con
los registros del segmento como un offset)
Así que,¿Qué quieren decir DS:SI entonces?
Bien, simplemente ese DS apunta al segmento de
datos y SI es un desplazamiento en el segmento de
datos.
Estoy buscando una
guía didáctica [inserta nombre]. ¿Puedes
ayudarme?
¡Para encontrar la guía didáctica que estás
buscando, simplemente comprueba el PUBLIC TUTORIAL
SEARCH ENGINE!
Soy solamente
estúpido o es imposible conseguir que SoftICE
escriba en un archivo. Digamos por ejemplo que
quiero escribir una pantalla de SoftIce a un
archivo de texto y así puedo examinarlo
después. ¿Puede hacerse esto?
Pasos:
Primero lanza el symbol loader y vas a softice
initialization settings. Pon history buffer size
de más de KB, obviamente: -) (el valor
por defecto es 256, no es bastante para un
listado grande). Entonces lanza el SoftICE.
Pon tus breakpoints y todo para llegar al código
deseado. Desensambla por ejemplo con,
U CS:EIP L 1000
Y después CTRL-D inmediatamente para volver a
Win9x/NT, lanza el Symbol Loader de nuevo y
escoges File/Save SoftICE History As... Y el
archivo guardado contiene tu código, SoftICE
cargado, todos lo que tecleas (aun cuando
estás trazando SIN la ventana de código
adelante), etc.
¿Puedes decirme
por favor qué llamadas necesito trazar?
Normalmente necesitas trazar las llamadas
anteriores a hacer saltar el mensaje de error.
¿Puedes crackear
por favor [inserta nombre aquí]?
Yo no acepto peticiones de cracks... ¡si me
pides de nuevo que crackee algo, publicaré tu
e-mail en http://crackmes.cjb.net!!
¿Puedes enviarme
por favor [inserta nombre aquí]?
Yo no te enviaré nada... Solamente ignorare este
e-mail.
Yo tengo [inserta
problema aquí] con [inserta nombre de
herramienta aquí]. ¿Puedes ayudarme?
¡Haz la pregunta en Fravia's
Tools of the Trade Forum y
conseguirás una respuesta!
¿Qué significa
[eax], [ebx], etc - mi pregunta "[]"
eso que es?
VERtiCES:
[]significa, los DATOS dentro de él.
Por ejemplo MOV EAX,DWORD PTR [EDX]
En la dirección EDX, imagina que los primeros 4
bytes son 05 04 AF EE. Así que, después de esta
instrucción, EAX debe tener el valor EEAF0405 h (recuerdas,
siempre es en orden inverso)
Soy un Newbie y
necesito saber si es posible averiguar si algo
esta comprimido o no.
Usa GetTyp!
¿Que es HMEMCPY?
Volatility:
HMEMCPY es una llamada de API de Windows que usa
memoria (RAM) para leer, manipular, comparar y
almacenar strings (el texto que has introducido
en un programa). La función toma la información
que has entrado (como el nombre y número de
serie en una pantalla del registro) y los pone en
la memoria. La función procede entonces a
manipular estos strings, moviendo y
comparándolos (por ejemplo, comparando tú
número de serie al correcto), y entonces decide
si tu string es correcto o incorrecto. La
función reenvía entonces esta información a la
aplicación, y tu procedes como un chico bueno, o
un chico malo.
¿Cómo encontrar
espacio libre en la Sección del Código de un
programa?
UFK:
Ejecuta ProcDump y pulsa en PE Editor. Abre tu
programa designado. Ahora aprieta en el botón de
'Sections' y mira la sección del Código:
Name
|
Virtual
Size |
Virtual
Offset |
Raw
Size |
Raw
Offset |
Characteristics
|
CODE |
00076560 |
00001000 |
00076600 |
00000400 |
60000020 |
Virtual Offset: El mismo, en memoria
Raw Offset: El físico, en el archivo
Raw Size: Bytes que los Segmentos del Código necesitaron
Virtual Size: Bytes que los Segmentos del Código tienen
¿Ahora si Virtual Offset comienza en 1000 cómo
viene en SoftICE y ves cosas con 4000000 o
números así de largos? La respuesta para esa
pregunta es, que hay una Imagen Base también, y
ésa es una dirección para ser cargada por el
programa PREFERENTE, añadida en el espacio de
dirección. Recuerda, PREFERENTE, significan que
puede cambiar bajo ciertas circunstancias.
Si echas una mirada a la descripción anterior,
averiguarás que había 76600 - 76560 = A0h (240)
bytes de espacio libre en la Sección de Código.
Los Segmentos del Código comienzan en 400h (Raw
Offset). Así Raw Offset + Virtual Size nos da
donde hay espacio libre.
400 + 76560 = 76960
Ahora usa tu Editor Hex favorito y ve a 76960h...
y disfruta usando tu espacio libre.
|