Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - cpu2

#611
Cita de: leosansan en 16 Junio 2013, 19:37 PM
¿ret?, en C/C++ lo que yo conozco es return. Y aún así no funciona. ¿Podrías indicarnos que programa usas para programar en ensamblador?.

GAS, ld y cualquier editor de texto.

Cita de: leosansan en 16 Junio 2013, 19:37 PM
Y puestos a buscar soluciones "curiosas" me dio por encontrar una solución en que sólo se sume y reste el desplazamiento y sin más librería que stdio. Eso sí, he tenido que usar un "señor" array, pero conseguí el propósito mencionado

Código demasiado largo y poco eficiente, para algo tan simple como el cifrado de César, y sin hablar del array.


        printf("Ingrese una cadena: ");
        fgets (frase,255,stdin);
     
         puts("Ingrese desplazamiento: (1-25) ");
         scanf ("%d",&desplazamiento);


Podrías utilizar los parametros argv, te ahorras ese fgets y esa aberración llamada scanf.

while (getchar()!='\n');

Venga hombre.

Un saludo.

P.D: Yo dejo el tema, desde mi punto de vista un desplazamiento de bits o un xor, es mucho mejor que el de César, yo no daría más importancia a esto de verdad.
#612
Todos los encode de Metasploit son 100% detectados.

Como tienes la configuración del firewall?

Si esta bloqueando la entrada, y solo deja entrar conexiones entrantes solicitadas por el mismo, lo tienes difícil.

Creo que es así como tienen el fireawall por default los Windows, a ver si te lo corrobora alguien con más expericiencia en Windows que yo.

Un saludo.
#613
Cita de: leosansan en 14 Junio 2013, 11:11 AM
P.D:

¿Una función char que no retorna nada?.

Código (asm) [Seleccionar]
ret
#614
Cita de: Royca3 en 13 Junio 2013, 00:24 AM
Y como lo compilo y ejecuto?
:-X

Creo que esto bastará, no programo en windows.

char *cesar (char *ptr)

{

__asm
 
  {
        xor eax, eax
        xor ecx, ecx
        mov edi, ebx

_C.0:
        inc ecx
        scasb
        jne _C.0

_C.1:
        dec edi
        add byte ptr [edi], 0x3
        dec ecx
        jne _C.1
        mov eax, edi
  }

}


La llamas como si fuera una función de C, y esta te devuelve un puntero, haber si te funciona.

Un saludo.
#615
El cifrado César lo único que hace para cifrar es sumar 3 a cada carácter y para descifrar restar, por lo que he leido.

Aqui esta el mio pero en ASM.

Código (asm) [Seleccionar]
_C.0:

incl %edx
scasb
jne _C.0

_C.1:

decl %edi
addb $0x3, (%edi)
decl %edx
jne _C.1

movl %edi, %eax
ret


Cita de: leosansan en 12 Junio 2013, 22:09 PM

Así que para hacer códigos comparables, siñemosnos al estricto cifrado César.

Ese código es el cifrado César, solo para el abecedario lo veo una tonteria.

Un saludo.
#616
Y que sucede si en mi cadena tengo algun caracter estilo " @#$*{}", la tabla ascii no es solo el abecedario.

Un saludo.
#617
ASM / Re: Puertos I/O
12 Junio 2013, 18:47 PM
Tenia pensado hacer algo en el núcleo, pero las pruebas pfff, bueno ya vere que pienso porque ahora mismo estoy en blanco.

Un saludo y gracias por el tiempo a todos.
#618
ASM / Re: Puertos I/O
11 Junio 2013, 00:04 AM
Cita de: Eternal Idol 7D en 10 Junio 2013, 10:28 AM
Por logica no es una buena idea que programas de modo Usuario accedan al hardware directamente, eso se hacia en la epoca en que no habia multitarea y la sincronizacion no era lo que es ahora. Es una lastima que no hayas dicho que pretendes hacer EXACTAMENTE desde el primer mensaje del hilo. ¿Es una prueba? ¿Es solo por verlo funcionar? ¿O prentedes hacer un software que se ejecute en produccion? Desde que mencionaste el parche asumo que es lo primero y para eso hacerlo en x86 es suficiente ... aunque tal vez lo queres para tu propio uso nada mas ... vaya uno a saber.

Es un poco de todo, el código del primer mensaje del hilo no es más que una prueba, queria obtener la temperatura sin tener que utilizar systat sensors ni ninguna función escrita en C o interrupción, un ASM puro.

Las funciones como scanf o commandos como systat sensors, en algún momento tendrán que comunicarse con los puertos i/o, bueno más bien el núcleo, scanf con el teclado que es el predeterminado y systat sensors con el sensor de temperatura, mi idea era hacer mis propias funciones a medida de mi avancé.

Pero no puedo utilizar ese ioperm no fue implementado en amd64, no lo quiero hacer en el x86, esa funcion si puede dar permisos y yo desde ASM no, pues vaya.

Cita de: Eternal Idol 7D en 10 Junio 2013, 10:28 AM
Justamente si estas en modo Usuario no podes acceder, la gracia esta en que solo se puede acceder desde modo Kernel, asi es como se implementa la proteccion.

Si, tienes razón ya me he dado cuenta, ya se donde esta el I/O permission bitmap se encuentra en la TSS en el registro TR, devuelve 16 bytes, obtienes la dirección con la instrucción ltr:

Código (asm) [Seleccionar]
pushq %rax
pushq %rax
movq %rsp, %rdi
ltr (%rdi)


Ahora en teoria tendría que tocar el bitmap y volver a cargarlo en el registro TR.
Pero el resultado es un Bus error (core dumped) que hace referencia a la dirección de ltr. Bueno el manual lo deja bien claro.

CitarThis instruction must be executed in protected mode when the current privilege level is 0. It is only
provided for use by operating system software.

Así que la única forma de poder hacer lo que pretendo es en ring 0, o de un ioperm que no dispongo?

Un saludo.

#619
ASM / Re: Puertos I/O
9 Junio 2013, 23:44 PM
Cita de: Eternal Idol 7D en  9 Junio 2013, 11:29 AM
Eso no representa ningun problema, desensambla el resultado en C y listo. Lo unico que hace es llamar a un servicio y seguramente es un int 0x80, un syscall/sysenter o lo que sea.

Ya no puedo usar ioperm, fue eliminado de la arquitectura amd64.

Cita de: Eternal Idol 7D en  9 Junio 2013, 11:29 AM
¿No hay otro servicio para obtener este dato? De ser asi yo que vos haria el parche, un modulo de modo Kernel no es un programa, es otro paradigma diferente.

Creo que no, si estoy en ring 3 tendré que acceder a ese bitmap tal y como dice el manual.

Un saludo.
#620
ASM / Re: Puertos I/O
9 Junio 2013, 02:55 AM
Cita de: Eternal Idol 7D en  8 Junio 2013, 14:20 PM
Por cierto, si no hay equivalente por algo sera.

Exacto, hay esta el problema con la amd64.

http://old.nabble.com/remove-amd64-ioperm-td35476935.html

Cita de: Eternal Idol 7D en  7 Junio 2013, 21:10 PM
¿Probaste el primer resultado de openbsd ioperm en Google?

Quiero implementarlo en ASM, no quiero funciones escritas en C.

Del manual de AMD:

CitarIf the CPL is higher than IOPL, or the mode is virtual mode, IN checks the I/O permission bitmap in
the TSS before allowing access to the I/O port.

Si estoy en modo usuario, anillo 3, CPL es mayor que IOPL y por eso no tengo permisos para acceder al puerto, para eso tengo que utilizar ese bitmap del que habla el manual?
Al estar en modo kernel anillo 0, CPL no sería mayor que IOPL y tendría acceso a los puertos sin la necesidad de chequear el bitmap permission?

Un saludo y gracias a todos por el interés.