elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [48] 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 ... 69
471  Programación / Ingeniería Inversa / Re: ocx en: 25 Septiembre 2007, 21:21 pm
por lo que veo esta compilado dicho archivo con visual basic y "active lock 1.71", me temo que lo mas facil sera modificar el ejecutable que llama a dicha funcion para hacer la comparacion jeje

no lo puedes ver con OllyDBG???

Salu2..
472  Programación / Ingeniería Inversa / Re: UNPACKERS pls............ en: 20 Septiembre 2007, 21:32 pm
La verdad es que tengo varias victimas pendientes, por que nose desempacar manualmente dichos programas, asi es que recurro a pedir ayuda, solicitando informacion de donde conseguir unpackers actualizados y/o viejos, tales como los de UPX, ASPROTECT, ASPACK, etc.... Me urge crackear.............Ayudenme.........

KING-CRACK


¿El que te urge crackear?
473  Programación / Ingeniería Inversa / Re: CrackersKit 3.0 en: 20 Septiembre 2007, 21:31 pm
en el web storage de http://ricardonarvaja.info lo tienes como crackru o algo así..

Salu2..
474  Programación / Ingeniería Inversa / Re: desensamblador en: 20 Septiembre 2007, 14:52 pm
hola q tal, queria preguntarles como funciona un desensamblador y todas esas cosas q tiene que ver con el cracker, y si no seria mucha molestia me podrian pasar los nombres de los desambladores o las URL.

Deantemano muchas gracias, salu2.

mira en el "Taller de Cracking desde 0" está escribiendose todavía pero ahí aprenderás toda clase de preguntas.

Salu2..
475  Programación / Ingeniería Inversa / Re: Taller de Cracking desde 0 en: 18 Septiembre 2007, 23:38 pm
Practicando  Assembly


1.- Introducción

Es importante antes de adentrarnos en el mundo de los Depuradores, Desensambladores y demás herramientas que conozcamos y tengamos una buena noción de lo que es el Assembly. Empezaremos suave, haciendo breves ejemplos y poco a poco.

2.- Instrucciones Básicas: Parte I

Comenzaremos por las instrucciones más básicas, con breves explicaciones y ejemplos:

MOV, CMP, TEST, ADD, SUB, INC, DEC.

MOV: Se utiliza para mover un dato de un registro a otro.

Ej: MOV A, B. El valor de A pasaría a ser igual que el valor de B.

CMP: Compara el valor de dos registros.

Ej: CMP A, B. Se efectúa una comparación entre A y B.

TEST: Compara el valor de dos registros.

Ej: TEST A, B. Se efectúa una comparación entre A y B.

Nota: En capitulos posteriores escribiremos la diferencia entre CMP y TEST.

ADD: Suma el valor de dos registros almacenandolo en el primero.

Ej: ADD A, B. Se suma a A el valor de B y el resultado se guardaría en  (A).

SUB: Resta el valor de dos registros almacenandolo en el primero.

Ej: SUB A, B. Se resta a A el valor de B y el resultado se guardaría en  (A).

INC: Incrementa el valor en 1 de un registro.

Ej: INC A. Se incrementaría el valor de A en 1.

DEC: Decrementa el valor en 1 de un registro.

Ej: DEC A. Se decrementaría el valor de A en 1.

2.- Los Registros: Parte I

Antes de adentrarnos en los Registros quiero hacer un breve comentario sobre las API.

Bien, en cualquier programa compilado bajo windows se utilizan unas denominadas API, éstas son básicamente las que forman todo lo que percibes, así como ventanas, botones, movimientos del ratón, etc... y también todas las acciones que haces.

La manera de llamarlas es básicamente una estructura. No la explicaré de momento porque es pronto para ello pero os haré un breve ejemplo:

Citar
PUSH EAX
PUSH EDX
CALL lstrcatA

Imaginemos esas instrucciones, en éste caso digamos que mete EAX y EDX en la pila (que lo que explicaré más adelante) para así tratar los valores antes de llamar a la API lstrcat que se encarga de concatenar (juntar) 2 cadenas.

En éste caso si EAX apunta a "hola" y EDX a " mundo" una vez ejecutada la API en EAX quedaría la cadena/string "hola mundo". Así que como explicaré ahora EAX ha sido utiliza de "Acumulador" porque ha acumulado el resultado de la API.

Hablaremos de los Registros Comunes de los cuales destaco:

EAX, ECX, EDX, EBX.

1.- EAX: Acumulador

- Como ya expliqué, una vez ejecutada una API, se suelen devolver principalmente el o los resultados a EAX.

2.-EBX: Base

- Éste se suele utilizar como Base en los algoritmos. Es decir, si EBX vale 10, esa será la BASE de la cantidad de veces que se hace un proceso específico.

3.-ECX: Contador

- Éste sería en el ejemplo anterior el que hace de contador, con una instrucción tipo INC ECX cada vez se iría sumando de 1 en 1 hasta llegar al número del registro BASE (EBX) 10, así que utilizando estos dos últimos ejemplos se haría durante 10 veces una funcion (por ejemplo, multiplicar por 3 diez veces). Ej:

Citar
Notas: EAX = 1 ; EBX = 10
Inicio:
MUL EAX, 3 ; MUL: Multiplica 2 registros almacenando en el primero.
INC ECX
CMP ECX, EBX
JNE Inicio ; JNE: es un salto condicional (JNE: JUMP IF NOT EQUAL / Salta si no es igual) que va hacia la dirección que le indiques siempre y cuando el resultado de la comparación anterior sea desigüal.

4.-EDX: Datos

- Éste es utilizado también antes de invocar a una API para darle los datos.


3.- LA PILA: Parte I

¿Qué es la PILA?

- Técnicamente es una estructura de datos, del tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir). Texto extraído de la wikipedia..

y vosotros os preguntaréis, ¿que esto de una estructura?, Bien. Imaginad que formamos una ventana, o por ejemplo, el típico mensaje de texto. En éste caso es la API MessageBoxA .



En éste caso vemos 3 partes claramente identificables:

- Título : "Delete".
- Cuerpo : "Do you really want to Delete this Record?".
- Botones : " YesNo".

Y claro, aquí es donde entra el papel de la pila, antes de invocar a la API MessageBoxA1 tenemos que indicarle todos estos datos para que nos la forme tal y como nosotros le hemos indicado. En Ensamblador, (a nivel de código máquina), ésto sería visualizado así:

1 MessageBoxA es la API encargada de lanzar ese mensaje tipo "caja de texto" que puse en la imagen.

Citar
PUSH Título
PUSH Cuerpo
PUSH Botones
CALL MessageBoxA

Entonces ahí vemos que cada elemento es primero insertado en la pila mediante la instrucción PUSH. La pila tiene la cualidad de lo último que metes, es lo primero que sacas. Es decir, en nuestro caso ahora la pila tendría ésta forma.

Las direcciones son imaginarías, normalmente la pila se visualiza con las correspondientes direcciones hacia donde apuntan (pueden apuntar a una cadena de texto que contenga el título

00401005 Botones
00401000 Cuerpo
00401020 Título

de manera que si ahora nos encontráramos con una instrucción tipo POP EAX extraeríamos Botones por ser la última que se introdujo hacia el REGISTRO EAX el cual hemos indicado mediante la instrucción.

Ésta estructura es un ejemplo, de que existe una zona donde se guardan valores MUY importantes en el flujo de un programa, así como por ejemplo, si se ejecutara la instrucción CALL MessageBoxA y ésta se encontrara por ejemplo en la dirección 402500 (vamos a hacer un ejemplo de donde la dirección en la que se sitúan las instrucciones):

Atendiendo al ejemplo de antes añado las mismas instrucciones pero con sus respectivas direcciones imaginarias.
Citar
402500| PUSH Título
402504| PUSH Cuerpo
402508| PUSH Botones
40250A| CALL MessageBoxA
40250F| MOV EAX, EBX

En éste caso una vez se ejecute la instrucción CALL MessageBoxA, se almacenará en la pila también la dirección de RETORNO, es decir, la dirección en la que regresará una vez haya sido llamado. Atendiendo al ejemplo de antes la pila en éste caso quedaría así.

00401008 RETURN to 40250F
00401005 Botones
00401000 Cuerpo
00401020 Título

Así como vemos, también se a almacenado la dirección hacia donde tendrá que volver despues del MessageBoxA.

Por el momento vamos teniendo nociones de cada parte pero sin profundizar en nada, si no lo entendéis completamente no os preocupéis, es normal, a medida que lo vayamos viendo todo tomará forma y os saldrá mecánicamente.

4.- LOS REGISTROS: PARTE II [PRÁCTICAS]

Ahora imaginemos varias situaciones, voy a escribir unas instrucciones y quiero que me digáis el valor de los registros finales. (si queréis responder a un privado me alegrará ver que seguis el curso, aunque seamos lentos :P).

Cita de: Ejercicio 1

MOV EAX, 1530h
ADD EAX, 1000h
SUB EAX, 500h
MOV EBX, 100h
SUB EAX, EBX


Normalmente cuando crackeamos utilizamos registros de 32 Bit, entre los cuales podemos encontrarnos EAX, EBX, ECX, EDX, etc. Pero éstos se componen de varias partes según tamaño:

EAX (32 bits)

se descompone en:

AX (16BIT)

que éste mismo se descompone en:

AH y AL (8 Bit cada uno)

Para que veáis un ejemplo sobre el valor:

12345678 => EAX
12345678 => AX
12345678 => AH
12345678 => AL

Siempre debemos estar al tanto de sobre QUE valores trabajamos, es decir, si nos encontramos una instrucción tipo:

Citar
MOV AL, 5

Sabemos que sólamente hay una posibilidad, pero tambien debemos saber a que parte de EAX corresponde, porque si fuese AX por ejemplo ya cambiaría la posición del movimiento.

Mas adelante veremos como se trabaja con "punteros", y ahí deberemos tener bien claro éstas correspondencias:

DWORD -> EAX
WORD   -> AX
BYTE     -> AH y AL


Citar
Ejercicio 2:

MOV EAX, 00004932h
ADD AX, 45h
SUB AL, 0Ah

5.- SALTOS CONDICIONALES Y BANDERAS: PARTE I [PRÁCTICAS]

¿Que son los saltos condicionales? ¿Que son las banderas?

Los saltos condicionales son instrucciones que al ejecutarse hacen que el flujo se traslade a la dirección que apunte.

Es decir, cuando nos encontramos con una instruccion del tipo "salto condicional" nos llevará (si se cumple la condicion) hacia donde apunte. Veamos un ejemplo:

Citar
CMP EAX, EBX
JE 401000

la primera instruccion compara el contenido de EBX con el contenido de EAX, el resultado de la comparacion pondra a 1 la BANDERA "Z" si es corrercto, y a 0 si no lo es.
y la siguiente instruccion saltará si la comparación ha sido correcta (JUMP IF EQUAL => JE) ha la direccion "401000".

En éste ejemplo comprobamos 2 cosas, que hay unas banderas que se activan o bien con 0 o con 1 en función de las operaciones aritméticas que vayan generandose a lo largo del programa, y que hay instrucciones que actuan en función de las mismas, veamos que tipos de satos hay:

JE
JNE o JNZ
JB
JBE
JP
JPE
JL
JLE


[CONTINUARÁ]

EN CONSTRUCCIÓN
476  Programación / Ingeniería Inversa / Taller de Cracking desde cero - (actualizado: 27.julio.2008) en: 17 Septiembre 2007, 23:54 pm
Taller de Cracking desde 0 por karmany y Shaddy


INTRODUCCIÓN

¿Qué es esto del Taller de Cracking desde 0?
Bien, después de juntarnos ambos, y dada nuestra experiencia, hemos pensado que lo mejor para que una persona empiece a conocer este fantástico mundo de la ingeniería inversa, es enseñar las cosas más básicas.

Este Taller de Cracking desde 0 va orientado a todas esas personas que tienen muy pocos conocimientos (o ninguno) y que por este motivo no han querido iniciarse en este Arte, que suele ser considerado algo complejo.
Todos nuestros esfuerzos, por lo tanto, van a ir dirigidos a hacer que esta gente sin conocimientos, de sus primeros pasos y logre entender los conceptos más básicos.

Estamos seguros, que a gente avanzada también les puede ayudar a recordar, así que esperamos que os guste y que pueda ayudar a "empezar a caminar"...

Como todo, hay que empezar por lo más básico, no podemos hablar de debugger sin conocer nada de ensamblador y no podemos hablar de ensamblador sin ni siquiera saber qué es el código máquina.



477  Programación / Ingeniería Inversa / Re: Duda comparaciones texto crackme's en: 16 Septiembre 2007, 23:54 pm
Puedes utilizar algoritmos matemáticos que comparen sumas, divisiones, potencias, etc.. independientemente cada carácter y crear así bonitas ecuaciones.. También puedes utilizar métodos "sutiles" de comparación por bandera, utilizando las flag, o más cosas, lo que se necesita es imaginación y sino, experiencia :).

Salu2..
478  Programación / Ingeniería Inversa / Re: Modificar msn a MANO para q sea multisesion en: 16 Septiembre 2007, 14:10 pm
En Windows Live Messenger para el que lo quiera saber está escrito arriba, y es lo mismo pero nopeando el salto. La cosa sería como patrón general poner un BP en "CreateEvent".

Salu2..
479  Programación / Ingeniería Inversa / Re: CrackersKit 3.0 en: 16 Septiembre 2007, 05:24 am
pueden subirlo a otro host por favor,, ya que en megaupload no me anda a mi :S


Megaupload
http://www.megaupload.com/es/?d=2NRCCOEY

Rapidshare 4 Links
http://rapidshare.com/files/54151688/All_4...__R__.part1.rar
http://rapidshare.com/files/54154380/All_4...__R__.part2.rar
http://rapidshare.com/files/54156999/All_4...__R__.part3.rar
http://rapidshare.com/files/54158951/All_4...__R__.part4.rar

Gigasize 4 Links
http://www.gigasize.com/get.php/3195524713...__R__.part1.rar
http://www.gigasize.com/get.php/3195524856...__R__.part2.rar
http://www.gigasize.com/get.php/3195525027...__R__.part3.rar
http://www.gigasize.com/get.php/3195525183...__R__.part4.rar

Gigasize 1 Link
http://www.gigasize.com/get.php/3195525480...g_by_f__R__.rar
480  Programación / Ingeniería Inversa / Re: Modificar msn a MANO para q sea multisesion en: 16 Septiembre 2007, 05:23 am
no te lo digo, te lo he escrito...

en cuanto a lo de FindWindow lo usa efectivamente para enviar la ventana hacia el frente, pero sólamente la envia si hay otro MSN Messenger abierto, por ello tiene que detectar si está abierto, ¿como?, con el CreateEvent, y el GetLastError. Lo puse en el mini-tute, intenta crear el evento y captura el error con la api, si hay error comprueba la clase de ventana y la pone al frente, en caso contrario abre una nueva instancia.

Salu2..
Páginas: 1 ... 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [48] 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 ... 69
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines