Enero 19, 2018, 12:14:04 am

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Binary_Death

Páginas: [1] 2 3 ... 68
1
Off Topic / Re:Seth sufrio un accidente
« en: Enero 11, 2014, 01:02:18 pm »
Si es mentira, algún día puede pasar de verdad y nadie lo creerá.
Si es verdad, espero que se recupere pronto.

2
Batch / Re:[A Debate] Guardar malware en el registro
« en: Noviembre 05, 2013, 07:06:45 pm »
Tiene buena pinta y nunca se me había ocurrido :P

Ahora una cuestión, porque es importante que el malware se ejecute por orden y no como le dé la gana.

Set si te fijas lista por orden alfabético, así que las cadenas que se guarden en el registro deberían tener una etiqueta que las indexara por orden alfabético y les diera el orden apropiado.

Luego, el problema que veo, es la ejecución de estructuras de control un poco complejas. A ver si consigues hacer un if-else con ese método...

La idea es muy original, así que adelante!

3
ASM / Re:EAX direcion de memoria
« en: Octubre 30, 2013, 06:46:15 pm »
Uy uy, confusión de conceptos.

Fíjese usted: You are not allowed to view links. Register or Login

Bueno, la memoria y los registros son cosas distintas. Acceder a un registro de hecho es muchísimo más rápido que acceder a una dirección de memoria, que necesita que el procesador envíe una señal de lectura de cierta posición utilizando para ello los buses de direcciones y datos. Los registros son por así decirlo una "memoria super rápida" a la que el micro puede acceder en un instante. Claro, esa memoria es muy limitada y muy costosa, así que tenemos en los procesadores x32 unos pocos, a los que por su uso general se les asignó unas letras representativas.

Por ejemplo, AX viene de A(cumulador), añadiéndole la E, de extendido, tenemos un registro de 32 bits, de los cuales los 16 bits menos significativos (inferiores) son los de AX.

DX viene de "datos", BX de "base", CX de "contador", SI de "source (fuente, origen)", DI de "destino", and so on.

En fin, con eso puedes ver que hacerte la pregunta "¿cómo guardo un registro en un registro?" es algo así como preguntarte "¿cómo guardo un papel en un papel?". Lo que puedes guardar es lo que está escrito en el papel. Esos datos ahí escritos puedes copiarlos a otro papel (por ejemplo, una dirección de memoria u otro registro), pero guardar un papel en un papel va a ser que no tiene mucho sentido.

Y preguntarse "¿en qué posición de memoria está un registro?" es lo mismo que decir "¿en qué papel está un papel?"

Un saludo ;)

4
Off Topic / Manuscrito Voynich
« en: Octubre 10, 2013, 04:06:53 pm »


¿Os suena el manuscrito Voynich? Se considera como uno de los grandes misterios de este mundo. Se trata de un libro ilustrado escrito en un lenguaje totalmente desconocido y que durante siglos ha evadido todos los análisis criptográficos y lingüísticos que le fueron aplicados.

El texto parece ser una especie de tratado dividido en varias secciones, a saber: herbología, astronomía, biología, cosmología, farmacología y recetario. El único problema es que describe plantas que no existen en este mundo y otras cosas bastante extrañas cuyo significado concreto se desconoce.

Muchos criptógrafos y lingüistas dedicaron sus vidas a estudiar este manuscrito, sin ningún resultado. La frustración ha llevado a algunos a decir que era un galimatías que simplemente no tenía ningún sentido; es una broma de mal gusto de algún rico medieval excéntrico o de algún estafador que esperaba venderlo a buen precio.

Claro que, por otro lado, se sabe por datación de carbono 14 que los pigmentos y el papel son del siglo XV, y son de muy buena calidad. Es decir, que lo hiciera quien lo hiciera, tuvo que ser alguien importante y con ganas de dejarse una buena fortuna, ya que en esa época esos materiales no eran precisamente baratos.

Otra cosa curiosa es que cumple la ley de Zipf, que dice que la longitud de las palabras es inversamente proporcional a su frecuencia de aparición. Esto es, cuando más larga sea una palabra en un idioma, menos común será y menos aparecerá (y cuando lo haga, tendrá un significado mucho más concreto).

Esta ley es propia de las lenguas naturales, de manera que lenguas como el Esperanto o el Quenya de Tolkien no la cumplen, y por si fuera poco, en el siglo XV no se conocía dicha ley.

Otro punto a favor de su significado es que se detectan ciertas palabras clave cuya aparición está concentrada en ciertas zonas del documento. Así, las palabras clave de la sección de herbología son distintas a las de la sección de astronomía.


Y para terminar, el dato más fascinante en mi opinión, y que seguro despertará mucho más la curiosidad de algunos: no hay un sólo error de escritura o corrección en todo el texto. Siendo algo escrito a mano, de increíble extensión y complejidad tanto estructural como artística, el que lo escribió no se equivocó ni una sola vez.

Más información, como de costumbre, en nuestra amada Wikipedia: You are not allowed to view links. Register or Login

5
Pues sí, lamento decirte que no hay forma posible de hacerlo con los comandos nativos.

Podrías mirar de hacerlo en otro lenguaje, como te dijo .xAk., mira el código de keyloggers que usen hooks en el sistema para capturar las teclas pulsadas.

Amos a ver, aquí te dejo un pequeño código en ASM sobre implementación de Hooks en ASM:

Código: You are not allowed to view links. Register or Login
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.data?
h_hook      HHOOK ?
kb_hook     KBDLLHOOKSTRUCT <>
msg         MSG <>
kb_ptr      DWORD ?
key_buffer  DB 1
h_buffer    HANDLE ?

.code
start:
invoke AllocConsole
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov     [h_buffer], eax
lea     ebx, LowLevelKeyboardProc
invoke  SetWindowsHookEx, WH_KEYBOARD_LL, ebx, 0, 0

message_proc:
    invoke  GetMessage, addr msg, NULL, 0, 0
    cmp     eax, TRUE
    jz      process_msg
    invoke  UnhookWindowsHookEx, [h_hook]
    invoke  ExitProcess, 0
    process_msg:
        invoke  TranslateMessage, addr msg
        invoke  DispatchMessage, addr msg
        jmp message_proc

LowLevelKeyboardProc:
    cmp     dword ptr[esp+4], 00h
    jae     process_hook
    return:
        invoke  CallNextHookEx, 0, dword ptr[esp+4], dword ptr[esp+8], dword ptr[esp+0Ch]
        retn
    process_hook:
        cmp     dword ptr[esp+8], WM_KEYDOWN
        jnz     return
        mov     ebx, [esp+0Ch]
        mov     ebx, [ebx+00h]
        mov     byte ptr[key_buffer],bl
        invoke  WriteConsole, [h_buffer], addr key_buffer, 1, NULL, NULL
        jmp return

ret
end start

Es bastante fácil si lo entiendes (ayúdate con la MSDN) comparar el código de la tecla con el de la tecla que quieres bloquear y hacer que el hook intercepte la llamada y nunca llegue al SO.

Por otro lado, eres muy nueva aquí y no sería extraño que no tuvieras ni idea de programación. Sería bueno que dijeras, si puede ser, para qué quieres bloquear esas dos teclas. Es posible que depende de lo que quieras hacer existan formas más sencillas...

Mira, encontré esto para deshabilitar la tecla de Windows modificando el registro (aunque necesitas privilegios, claro): You are not allowed to view links. Register or Login

Comprueba si te sirve de algo.

6
Batch / Re:Batch que en determinada fecha ejecute un archivo.vbs
« en: ſeptiembre 30, 2013, 12:24:45 pm »
Entonces tienes que splitear la fecha como te dijo daryo, y comparar con GEQ (greater or equal) cada elemento de la fecha.

Escribe en la consola de comandos: if /?

Y verás la ayuda del comando.

7
Off Topic / Re:Hola tanto tiempo
« en: ſeptiembre 26, 2013, 01:26:14 pm »
Esto... ¿pero tú no eras el que se quería cambiar de sexo? ¿Qué haces ahora con parafilias de atracción sexual hacia el sexo femenino? ¿Te cansaste de transvestirte?  :P

8
Batch / Re:Batch que en determinada fecha ejecute un archivo.vbs
« en: ſeptiembre 25, 2013, 02:04:05 pm »
Hay una variable de entorno (si no sabes lo que es, por este subforo encontrarás varios manuales básicos de batch que te lo explican) que contiene la fecha actual. Esa variable es %date%.

Si comparas la fecha actual con tu fecha de caducidad y coinciden, entonces muestras un mensaje.

9
Batch / Re:Batch que en determinada fecha ejecute un archivo.vbs
« en: ſeptiembre 25, 2013, 01:45:57 pm »
Esa parte no te la ha puesto. Él te ha hecho lo más complicado, que es hacer un split a la fecha para obtener el día, el més y el año. Ahora, a partir de ahí, tienes que usar condicionales para comparar la fecha actual con la fecha que tú quieras que sea la fecha de caducidad del programa. Si la fecha actual = fecha de caducidad, ejecuta script vbs.

También hay que decir que no es necesario hacer un split a no ser que quieras que caduque cierto mes de cualquier año, por ejemplo.

Con esto, llegaría:

Código: You are not allowed to view links. Register or Login
if "%date%" EQU "%fechacaducidad%" cscript mensaje.vbs 1>nul 2>&1

10
Batch / Re:Ejecutar comando batch con permisos admin ¿?
« en: ſeptiembre 25, 2013, 01:39:17 pm »
Existe el comando runas, para ejecutar un comando como administrador.

La forma de hacerlo sería la siguiente:

Código: You are not allowed to view links. Register or Login
runas /user:<DomainName>\<AdministratorAccountName> "command"

Puedes usar el parámetro /savecred para no tener que volver a escribir el password, y así automatizar la ejecución del comando deseado en todos los equipos del dominio.

Suerte ;)

11
Off Topic / Re:¿Creéis que el malware desaparecerá?
« en: ſeptiembre 20, 2013, 03:22:10 pm »
Es una pena que ahora todo se haga por negocio.
El malware de antaño se programaba por diversión, y no para robar.

Joder, si es que hemos perdido la ética incluso en la parte no-ética xD

La propagación del malware actual se basa casi más en la ingenuidad de los usuario al ejecutar cualquier cosa que se descarguen de la red, que en las técnicas que pueda usar el malware para tales efectos.

Crees que alguien va a arreglar a la gente?
[/quote]

Bueno, la gente joven cada vez tiene más conocimiento de informática y está más enterada del tema de la seguridad. Si se da más materia de informática en las escuelas (que vamos, yo creo que debería de ser obligatorio y es una vergüenza que hoy en día en la mayoría de centros no se imparta como debería) creo que las nuevas generaciones estarán "arregladas".

12
Off Topic / ¿Creéis que el malware desaparecerá?
« en: ſeptiembre 19, 2013, 03:54:26 pm »
Cada vez los sistemas son más seguros. Hace una sola década crear programas autoreplicantes era pan comido. Un bebé podría hacerlo. Ahí está el ejemplo de Melissa.

Hoy en día incluso lo que en su momento era un coladero, Windows, se está volviendo bastante seguro. Sigue habiendo vulnerabilidades, por supuesto, pero cada vez son más difíciles de encontrar. La propagación del malware actual se basa casi más en la ingenuidad de los usuario al ejecutar cualquier cosa que se descarguen de la red, que en las técnicas que pueda usar el malware para tales efectos.

En Linux apenas existe el problema del malware, en parte porque es menos usado, y en parte porque es más seguro. Después de muchos baches, parece que la seguridad de las últimas versiones de Windows se aproxima con buen pie a la de Linux. ¿El malware disminuirá, desaparecerá, o se renovará?

¿Tú qué crees?


13
ASM / Structured Exception Handler Anti-Debugging
« en: ſeptiembre 16, 2013, 02:17:34 pm »
Una de esas cosas que se pueden manejar perfectamente en ASM pero no en, por ejemplo, C/C++, es el SEH de nuestro programa, o mejor dicho, el SEH de cada uno de los threads de nuestro proceso.

El SEH es un manejador de excepciones, y sirve para manejar cualquier excepción (lectura-escritura en páginas protegidas o incluso división por 0  :P) y hacer que nuestro programa no colapse o windows pille la excepción y nos muestre un bonito mensaje de error.

Pero eso no es todo. También es un excelente método antidebugging, ya que la mayoría de debuggers paran al verse en una excepción. Antes de nada, quiero presentar esta excelente información, que creo que es la mejor que hay sobre el tema:
You are not allowed to view links. Register or Login Handling in Practice

Esto nos enseña cómo colocar un manejador de excepciones, y ahora podemos ver cómo implementarlo como método de antidebugging, que es realmente sencillo, a la par que un truco bastante viejo:

Código: (asm) You are not allowed to view links. Register or Login
.386
.model flat, stdcall
option casemap:none
assume fs:nothing

    .code
   
main:
    call    setup_seh
_next:
    mov     esp, [esp + 8]
    pop     fs:[0]
    add     esp, 4
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Aquí pondremos nuestro código;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    nop
    nop
    nop
    nop
    ret
           
setup_seh:
    push    fs:[0]
    mov     fs:[0], esp
    inc     byte ptr ds:[0]
 
end     main

Sólo colocamos un manejador de excepciones y provocamos una exepción. Esto hará que saltemos a la dirección de _next

Notemos que con el call lo que hacemos es empujar a la pila la dirección de la siguiente instrucción, que será la dirección de nuestro manejador.

En fin, creo que es un tema interesante y con bastantes aplicaciones. Poder hacer lo que quieras (o casi) en tu código sin miedo a que se muera es fantástico.

14
ASM / Re:¿Cómo hago un loop para convertir de ASCII a decimal?
« en: ſeptiembre 02, 2013, 09:44:36 pm »
Excelente algoritmo!

Vamos a explicarlo un poco, que será de gran ayuda para proxy_lainux:

Lo que hay que hacer es descomponer la operación de multiplicación por 10 en varias partes.
Como en el primer ciclo del bucle eax es 0 y no tiene gracia, vamos al segundo.

Pongamos que el primer dígito es 0x37, es decir, nuestro 0x37-0x30 = 0x7.
Así pues tenemos ahora el 7 cargado en eax. Vamos al segundo ciclo.

Lo que debemos hacer es fácil, multiplicar 0x7 * 0x0A (10d), y luego sumarle, si por ejemplo el segundo dígito es 0x35 (5 decimal), pues 0x35-0x30

De esa forma nos quedará un perfecto 75d (0x4B).

Pero el problema es multiplicar por 10 de una forma rápida y efectiva, y lo que se hace aquí es descomponer la multiplicación.

Si decimos que:

lea eax, [eax + eax * 4]
eax = eax + eax * 4

Entonces significa que hemos multiplicado eax * 5

Así que ahora tenemos 5 * eax, que multiplicado por 2 = 10 * eax.
lea eax, [eax * 2]

Y si queremos meter todo en una sola operación, pues queda:

lea eax, [eax + eax * 4]
lea eax, [eax * 2 + edx - 30h]

Donde en edx tenemos nuestro siguiente carácter de la cadena.



15
ASM / Re:duda ... multi-archivos en mips
« en: Agosto 23, 2013, 11:32:50 am »
A ver si este paper te sirve:

You are not allowed to view links. Register or Login

Páginas: [1] 2 3 ... 68