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


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Temas
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11
61  Seguridad Informática / Análisis y Diseño de Malware / Hook API Calculando cantidad opcodes. en: 5 Febrero 2015, 16:45 pm
Bueno este código lo tenía por ahí de hace un par de años, y al final lo voy a perder así que aquí os lo dejo por a alguien le sirve.

Código
  1. ; Programado por mDrinky o Juan fary.
  2. ; drinky.94@hotmail.com
  3.  
  4. include 'win32ax.inc'
  5.  
  6. ; Instrucciones a las que es capaz de sacar la longitud.
  7.  
  8. ; mov esp,ebp                          = 0x8B  2 bytes
  9. ; push ebp                             = 0x55  1 byte
  10. ; mov Reg,DWORD                        = 0xB8 + Registro   5 bytes
  11. ; ret                                  = 0xC3 1 byte
  12. ; ret Numero                           = 0xC2 2 bytes
  13. ; mov dword[Direccion],Numero          = 0x83 7 bytes
  14.  
  15. .data
  16.    DLL  db 'USER32.DLL',0
  17.    API  db 'MessageBoxA',0
  18.    MsgHook  db 'Api Hookeada',0
  19.  
  20.    ApiBuena  dd ?
  21.    CanSalto  dd ?
  22.    oPer  dd ?
  23.    Salto  dd ?
  24.  
  25. .code
  26. start:
  27.    invoke LoadLibraryA,DLL
  28.    invoke GetProcAddress,eax,API
  29.    mov [ApiBuena],eax
  30.  
  31.    push MiFuncion
  32.    Call Hookear
  33.  
  34.    push 0
  35.    push 0
  36.    push 0
  37.    push 0
  38.  
  39.    call [MessageBoxA]
  40.  
  41.    push 0
  42.    call [ExitProcess]
  43.  
  44.  
  45. MiFuncion:
  46.    pop ecx
  47.  
  48.    add esp,0xC
  49.  
  50.    push 0
  51.    push 0
  52.    push MsgHook
  53.    push 0
  54.  
  55.    push ecx
  56.  
  57.    ApiVerdadera:
  58.    db 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90
  59.  
  60.    push eax
  61.  
  62.    mov eax,[ApiBuena]
  63.    add eax,[CanSalto]
  64.    mov [Salto],eax
  65.  
  66.    pop eax
  67.  
  68.    jmp [Salto]
  69.  
  70.  
  71. proc Hookear,FunHook
  72.  
  73.    mov ecx,0
  74.  
  75.    NumOpcode:
  76.  
  77.    cmp byte[eax],0x8B
  78.    jne NoOp1
  79.  
  80.    add ecx,2
  81.    add eax,2
  82.  
  83.    NoOp1:
  84.  
  85.    cmp byte[eax],0x55
  86.    jne NoOp2
  87.  
  88.    add ecx,1
  89.    add eax,1
  90.  
  91.    NoOp2:
  92.  
  93.    cmp byte[eax],0xB8
  94.    jb NoOp3
  95.    cmp byte[eax],0xBD
  96.    ja NoOp3
  97.  
  98.    add ecx,5
  99.    add eax,5
  100.  
  101.    NoOp3:
  102.  
  103.    cmp byte[eax],0xC3
  104.    jne NoOp4
  105.  
  106.    add ecx,1
  107.    add eax,1
  108.  
  109.    NoOp4:
  110.  
  111.    cmp byte[eax],0xC2
  112.    jne NoOp5
  113.  
  114.    add ecx,2
  115.    add eax,2
  116.  
  117.    NoOp5:
  118.  
  119.    cmp byte[eax],0x83
  120.    jne NoOp6
  121.  
  122.    add ecx,7
  123.    add eax,7
  124.  
  125.    NoOp6:
  126.  
  127.    cmp ecx,5
  128.    jb NumOpcode
  129.  
  130.    mov [CanSalto],ecx
  131.  
  132.    invoke VirtualProtect,[ApiBuena],20,PAGE_EXECUTE_READWRITE,addr oPer
  133.    invoke VirtualProtect,ApiVerdadera,20,PAGE_EXECUTE_READWRITE,addr oPer
  134.  
  135.    mov eax,[ApiBuena]
  136.    mov edx,ApiVerdadera
  137.  
  138.    mov ecx,0
  139.  
  140.    GuardarBytes:
  141.    mov bl,byte[eax+ecx]
  142.    mov byte[edx+ecx],bl
  143.  
  144.    inc ecx
  145.  
  146.    cmp ecx,[CanSalto]
  147.    jne GuardarBytes
  148.  
  149.    mov eax,[ApiBuena]
  150.  
  151.    mov byte[eax],0x68
  152.    inc eax
  153.  
  154.    mov ebx,dword[FunHook]
  155.    mov dword[eax],ebx
  156.  
  157.    add eax,4
  158.  
  159.    mov byte[eax],0xC3
  160.  
  161.    ret
  162. endp
  163.  
  164. .end start

No recalcula todas las API pero si la gran mayoría.

saludos.
62  Programación / Scripting / [TUTORIAL] Perl en: 6 Febrero 2014, 11:23 am
Debido a lo poco que se ve Perl en la sección me he decidido a escribir una pequeña introducción, ya que pienso que casi no se trata este lenguaje en esta sección, y es un lenguaje muy potente y flexible.

¿Como instalar el interprete de Perl?

Lo podemos descargar de aquí:

http://www.perl.org/get.html

Para Windows disponemos de dos interpretes ActiveState y StrawBerry. Personalmente uso ActiveState pero esto como todo, va por gustos.

Nota: En sistemas Linux esta instalado por defecto, así que no lo tendrás que instalar.

¿Ya  tengo instalado el interprete pero... Como ejecuto mis scripts?

En primer lugar todos los scripts en Perl tienen que tener la extensión .pl. Para ejecutarlo es tan facil como hacer doble clic sobre el script o bien desde la linea de comandos:

perl miscript.pl

Para probar podéis crear este pequeño script con el famoso mensaje "Hola Mundo!"

Código
  1. #!/usr/bin/perl
  2. print "Hola Mundo!"; # Imprimimos en pantalla el saludo
  3.  

Aclaraciones rápidas sobre el script de arriba:

-Todas las lineas de código acaban con el punto y coma (';').
-Los comentarios se escriben con la almohadilla ('#')
-La linea 1 indica la ruta del interprete (En principio esto es solo necesario para sistemas Linux).

Dicho esto, ¡empecemos!.

Variables

Las variables se declaran con my y tienen que tener delante del nombre el símbolo del dolar ('$'). Además en este lenguaje no hay tipos de variables, es decir, se declara igual una variable que contiene un número que una que tiene una cadena.

Ejemplos de declaraciones de variables:

Código
  1. #!/usr/bin/perl
  2.  
  3. my $cadena = "hola soy una cadena\n";
  4. my $numero = 1;
  5.  
  6. my $n1 = 2;
  7. my $n2 = 3;
  8.  
  9. print $cadena;
  10.  
  11. print $n1 + $n2 . "\n"; # suma e imprime los valores de las variables
  12. print $n1 . $n2 . "\n"; # Concatena los numeros (Los tata como cadena)
  13. print "$n1$n2\n";  # Otra forma de hacer lo de la linea de arriba
  14.  
  15.  

Algunos datos del código de arriba:

-En las lineas 3,11,12 y 13 vemos los caracteres '\n', dichos caracteres indican salto de linea.
-El operador punto (".") concatena cadenas (Si, el interprete se ha encargado de pasar el número a cadena antes de unirlo).
-La linea 12 hace exactamente lo mismo que la linea 13.
-exit termina la ejecución del script (Esto no es necesario ponerlo, pero es bueno saberlo.)


Arrays

Los arrays también se declaran con my, pero en vez de usar el dolar, se usa el arroba ('@').

Ejemplo de declaración de un array:

Código
  1. #!/usr/bin/perl
  2.  
  3. my @array; # array sin inicializar
  4. my @animales = ('Gato','Perro','Pez'); # array inicializado
  5.  
  6. print "$animales[0]\n"; #imprimimos el primer elemento del array 'Gato'
  7. print "$animales[1]\n"; #imprimimos el segundo elemento del array 'Perro'

Aclaraciones:

-El primer elemento de un array es el 0, no el no como podemos comprobar en la linea 6.
-Para acceder a los elementos se usa el simbolo del dolar ($animales[0]).

En Perl existen funciones como push o pop, para manejar los arrays.

push introduce elementos al array y pop los saca, ejemplo:


Código
  1. #!/usr/bin/perl
  2. my @animales = ('Gato','Perro','Pez'); # array inicializado
  3.  
  4. print "El ultimo animal de la lista es el: $animales[2]\n";
  5.  
  6. push @animales,"Foca";
  7.  
  8. print "Ahora el ultimo animal es: $animales[3]\n";
  9.  
  10. pop @animales;
  11. pop @animales;
  12.  
  13. print "Ahora el animal $animales[3] no esta\n";
  14. print "El ultimo animal ahora es: $animales[1]\n";
  15.  

Hay muchas mas funciones, podemos encontrar algunas más explicadas aquí

Operadores aritméticos

Esto suele variar poco de un lenguaje de programación a otro.

Suma: +
Resta: -
Multiplicación: *
División: /
Potencia: **
Residuo de una operación: %

Perl, puede convertir número a cadena y viceversa, ejemplo:

Código
  1. #!/usr/bin/perl
  2. my $n1 = 5;
  3. my $n2 = 3;
  4.  
  5. my $c1 = '5';
  6. my $c2 = '5';
  7.  
  8. print "Trata los numeros como cadena: $n1$n2\n"; # devolvera 85
  9. print $c1 + $c2 . "\n"; # devolvera 10

También existen, al igual que en C y C++ los operadores de incremento y decremento:

Código
  1. my $var = 1;
  2. $var++; # Incremento en uno el valor de la variable
  3. print $var . "\n";
  4. $var--;   # Decremento en uno de valor de la variable
  5. print $var . "\n";

Operadores Lógicos

and: &&
or: ||
not: !

Estos operadores se usan casi siempre como complemento de la sentencia if, pero en ese lenguaje tienen otros usos como por ejemplo indicar errores:

Código
  1. open(FILE,"archivo.txt") || die("No se puedo abrir el archivo");

En este caso si no abre el archivo muestra el mensaje de error.

if

Esta sentencia nos sirve para controlar el flujo del programa, ej:

Código
  1. #!/usr/bin/perl
  2.  
  3. my $var = 1;
  4.  
  5. if ($var == 1) # sentencia if
  6. {
  7.    # si $var es igual a uno se ejecuta lo que esta aqui
  8. print "\$var es igual a 1\n";
  9. }else{
  10.    # si no es igual a uno se ejecuta esto
  11. print "\$var NO tiene valor 1\n";
  12. }
  13.  
  14. system("PAUSE"); # con system enviamos comandos al sistema

En las lineas 8 y 11 aparece un '\' delante de $var, ese símbolo es de escape, si no estuviera nos motraría el valor de la variable:

Código
  1. #!/usr/bin/perl
  2.  
  3. my $var = 1;
  4.  
  5. print "$var\n";
  6. print "\$var\n";
  7.  
  8. system("PAUSE");

Con la función system enviamos un comando al sistema, en este caso (para Windows) realiza una pausa, si no pusiéramos la línea system("PAUSE") al ejecutarse el programa la consola desaparecería.

También podemos realizar comparaciones de esta manera:

Código
  1. if (Comparacion) # se realiza la comparacion
  2. {
  3. }elsif (comparacion) # si no se cumple la de arriba se vuelve a ralizar otra comparacion
  4. {
  5. }elsif (Comparacion)  # Si no se cumple la de arriba de vuelve a realizar otra comparacion
  6. {
  7. }else{ # Si no se cumple ninguna de las anteriores se ejecuta esta
  8.  
  9. }

Ejemplo práctico:

Código
  1. #!/usr/bin/perl
  2.  
  3. my $var = 1;
  4.  
  5. if ($var == 2) # se realiza la comparacion
  6. {
  7. print "Es igual a 2\n";
  8. }elsif ($var == 3) # si no se cumple la de arriba se vuelve a ralizar otra comparacion
  9. {
  10. print "Es igual a 2\n";
  11. }elsif ($var == 3)  # Si no se cumple la de arriba de vuelve a realizar otra comparacion
  12. {
  13. print "Es igual a 2\n";
  14. }else{ # Si no se cumple ninguna de las anteriores se ejecuta esta
  15.    print "No es igual a ninguna de las anteriores\n";
  16. }
  17.  
  18. system("PAUSE");

Ahora vamos a ver los operadores de los que disponemos para realizar dichas comparaciones:


Tipo              Númerico   Cadena
Mayor A            >               gt
Menor A             <              lt
Igual A            ==              eq
No Igual A            !=            ne
Menor o Igual A     <=           le
Mayor o Igual A     >=          ge


No podemos comparar una cadena con el equivalente numerico ni viceversa, ej:

Código
  1. my $c1  = "hola";
  2. my $c2  = "adios";
  3.  
  4. my $n1 = 1;
  5. my $n2 = 2;
  6.  
  7. if ($c1 eq $c2) # sentencia CORRECTA
  8. {
  9.    # Si son iguales de ejecuta
  10. }
  11.  
  12. if ($c1 == $c2) # sentencia ERRONEA
  13. {
  14.    # Si son iguales de ejecuta
  15. }
  16.  
  17. if ($n1 eq $n2) # sentencia ERRONEA
  18. {
  19.    # Si son iguales de ejecuta
  20. }
  21.  
  22. if ($n1 == $n2) # sentencia CORRECTA
  23. {
  24.    # Si son iguales de ejecuta
  25. }

for

Los bucles for se pueden usar como en C:

Código
  1. for (my $i = 0; $i<10; $i++) # se repite 10 veces
  2. {
  3.     print "$i \n";
  4. }

O de esta manera, mas característica de este lenguaje:

Código
  1. for my $i (1..10) # Se repite 10 veces
  2. {
  3.    print "$i\n";
  4. }

while

Este bucle se repite hasta que la sentencia sea falsa, de tal manera que esto:

Código
  1. while (1)
  2. {
  3.    print "while!\n";
  4. }

Sería un bucle infinito.

Otro ejemplo que suma tres números:

Código
  1. my $i = 0;
  2. my $num = 0;
  3.  
  4. while ($i<3)
  5. {
  6.    $num = $num + <STDIN>;
  7.    #$num += <STDIN>; # esta linea hace exáctamente lo mismo que lo de arriba.    
  8.    $i++;
  9. }
  10.  
  11. print "Suma totalde los numeros: $num\n";

<STDIN>
lo que hace es leer datos de entrada.
63  Programación / Scripting / [RETO-EJERCICIO] Perl: Obtener valor de digitos en: 20 Enero 2014, 19:03 pm
Cada letra tiene un valor, averigua el valor de las letras mediante un algoritmo.

MM +
AA +
DD
---
MAD
64  Programación / Scripting / [RETO-EJERCICIO] Perl en: 11 Enero 2014, 10:39 am
El objetivo es sumar las filas y las columnas de una matriz (5x5) que será introducida por el usuario, ej.

Código:
    Introduzca fila 1: 2 5 3 4 5
    Introduzca fila 2: 2 6 8 4 5
    Introduzca fila 3: 9 8 3 5 2
    Introduzca fila 4: 5 3 8 5 6
    Introduzca fila 5: 0 1 4 3 4
    Totales filas    : 19 25 27 27 12
    Totales columnas : 18 23 26 21 22

Veamos quien lo resuelve de mejor manera  ;D
65  Programación / Programación General / Saber que aplicación escucha el puerto. en: 6 Enero 2014, 18:20 pm
Feliz dia de reyes :rolleyes:

Alguien sabe como puedo obtener el nombre de la aplicación que esta escuchando un puerto?

un saludo.
66  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Windows Phone 8 yWhatsApp. en: 28 Septiembre 2013, 14:04 pm
Hola,

Os explico, tengo un Nokia Lumia 920 con Windows Phone 8 y quiero instalar WhatsApp pero no lo consigo. Lo instalo bien pero luego a la hora de introducir mi numero de teléfono cuando le doy a siguiente me sale un mensaje de error diciendo lo siguiente:

"No se pudo conectar con WhatsApp. Por favor confirme su configuración de red y reintente mas tarde."

Me estoy volviendo loco y no doy con la solución, a alguien le a ocurrido?

un saludo!
67  Programación / Ingeniería Inversa / Hacking Juegos. en: 5 Julio 2013, 15:00 pm
Hola, alguien de aquí ha creado alguna vez un cheat para algun juego con cheat engime o OllyDbg?
Hablo de cheats un poco mas avanzados no solo de modificar el dinero y etc.
Si alguien lo ha conseguido por favor que me pase documentación de como hallo los valores.

un saludo!
68  Foros Generales / Sugerencias y dudas sobre el Foro / Sección hacking Juegos en: 30 Marzo 2013, 14:02 pm
Estaría bien una sección donde poder hablar y aprender sobre la programación de cheats, aimbot, etc.

un saludo!
69  Programación / ASM / GUI y eventos en: 16 Marzo 2013, 15:32 pm
Hola, estoy creando una ventana con un litview y quiero detectar cuando se pulsa un boton sobre uno de los item del listview y sabe rque item es, tengo la ventana así:



Pero no consigo saber como hacer eso...

un saludo!
70  Programación / ASM / Llamadas a ASM desde C en: 10 Marzo 2013, 17:22 pm
Hola a todos,

Tengo una DLL creada en FASM y llamo a las funciones desde C pero me devuelve un error 0xC0000005 mi aplicacion y se cierra.

Para llamarla desde C lo ago así:

Código
  1. typedef (WINAPI * DLLCargada) (DWORD sock);
  2. DLLCargada ShellDLLCargada;
  3. ShellDLLCargada = (DLLCargada)GetProcAddress(Shell,"DLLCargada");
  4. ShellDLLCargada(sock);

y las funciones en la DLL están hechas así:

Código
  1. DLLCargada:    ; parametro sock
  2.             ; informamos que la DLL esta cargada correctamente.
  3.             push ebp
  4.             mov ebp,esp
  5.             mov eax,dword[esp+8]
  6.  
  7.             invoke send,eax,CargadaOk,20,0
  8.  
  9.             leave
  10.             ret    

La aplicación me peta y nose porque creo que es por la pila que no la arreglo bien o algo  desde el ASM :-\ ayuda  :P

un saludo!
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines