Codigos de Yuri Grille

Iniciado por Yurix, 11 Junio 2009, 20:47 PM

0 Miembros y 1 Visitante están viendo este tema.

Erik#

Cita de: Eternal Idol en 12 Agosto 2009, 12:53 PM
Si, efectivamente puede ser un ELF o ELF64 y se mantiene el mismo principio.

Genial, gracias idol :)

Yurix

#51
Esto fue sacado de mi nuevo blog que no hace falta mencionar (EI).

El falg P !!!

Desde mi discreto punto de vista tengo informado que el flag (P) indica la paridad en cuanto a que el  resultado tiene un numero par de bits no cuando el numero es par que ya eso es otra cosa.

"P (Paridad) Se pone a uno, cuando se efectúa una operación cuyo resultado contiene un número par de bits con el valor 1. "

Tutorial de Caos Reptante

Veamos un ejemplo:

El flag se activa cuando al realizar una operación el resultado tiene una cantidad de 1 pares >>> (#15 es 1111) .Si una operación da 15 (en decimal , en hexadecimal es F)  el flag de "paridad" se debe activar ya que tiene en "binario" una cantidad de 1 que son pares , en este caso son 4 , pero si te guías  por esta "paridad" estas mal ya que el 15 no es par.

. Eso mismo pensé yo ,pero una persona (un viejo que programo hace mucho) me corrigió el error y me dijo :

"la paridad de un numero te la da el bit menos significativo" , es decir el bit (cero , el que esta más  a la derecha ) debe ser (cero) para que sea par.

Aquí el ejemplo de un # par:
>>> (14h es 1110) << Flag P 0
>>> (30h es 11110)  << Flag P 1
>>> (46h es 101110)  << Flag P 1

Todos son números pares pero "no siempre el flag P se activa con los números pares" , lo que me j*de es que le pongan "flag de paridad" y en realidad no tenga nada que ver con lo que uno se imagina (demandare a *ntel)  jajaja

Conclusión el flag P es la paridad "bitial" no numeral.

Para estar 100% seguros.:

Abre cualquier programa en Olly y ponle (inc eax) a las 20 primeras instrucciones, ahora ve corriendo una a y fíjate en el flag P . Veras que no siempre se activa en los números pares o impares (numéricamente) , si realmente fuera un flag que indicara paridad en los números ,  se activara y desactivara con cada operación ya que consecutivamente los números son (desde 0) pares e impares ,pares e impares hasta el infinito y más allá ...
Nota>
En el texto use una palabra nueva "Bitial" , su significado es "en cuanto a bits" . Cualquier duda puede usted dejar un comentario


http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.

Eternal Idol

"In x86 processors, the parity flag reflects the parity only of the least significant byte of the result, and is set if the number of ones is even."

http://en.wikipedia.org/wiki/Parity_flag
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Yurix

#53
Hola , como muchos saben existen muchos métodos de ordenar caracteres, números etc, de diferentes formas , condiciones , hay tantas formas de ordenar algo como distribuciones de linux hay en internet . Cada una de estas formas tienen su nombre y rapidez diferente, una muy conocida es Quick Sort (estará bien escrito?) , ahora la que les voy a mostrar hoy me llego a la cabeza cuando leía la lista de métodos de ordenamiento y es una forma simple, "rápida" (eso espero , tengo que probarla ) . Le he llamado Ordenamiento Grille , como cuando descubres un cráter nuevo en la luna , pero como no tengo telescopio y la luna ya está llena de nombres pues le pongo mi apellido a esta forma de ordenar caracteres.  :xD

Aunque no está implementado este método nos da la posibilidad de poder ordenar un conjunto de datos grande sin tener que cargarlo completamente en memoria ,esto puede ser útil en archivos grandes.

No me queda más nada por decirles , solo que es libre para usarlo bajo las condiciones de la  GPL  :-)
Primero necesitamos la longitud de los datos que ordenaremos. Este dato estará en ECX y EDX , usaremos un loop para ordenar empezando por el final Tendremos una Variable "vacía" con una longitud (en este caso de 4 bytes por cada byte ASCII) .
Es decir 256*4 = 1024 bytes , esto nos da la posibilidad de ordenar hasta (si fuera "necesario") 4.294.967.295 bytes de datos (pequeño numero  ;D )
Esto puede "incluso" aumentarse para ordenar mas ... o menos ...
.
Código (asm) [Seleccionar]
tabla db 1024 dup (?)
datos db "hola que tal",0
mov ecx,12 ; << Longitud de los datos en decimal
mov edx,ecx ; << Longitud de los datos
ordenamiento:
mov al,[datos - 1 + ecx]
inc dword ptr ds:[tabla + eax * 4]
loop ordenamiento
mov al, 0
ciclo:
mov ecx , dword ptr ds:[tabla + eax * 4]
cmp ecx,0 ; Cuando sea Cero , saltamos ya que este caracter no existe!
jz salto

; En el caso que usted sepa que existen todos los caracteres puede eliminar esta parte.
; Ma adelante tal vez implemente una forma para detectar esto y hacer todo mas rápido?¿ (hay que probar!)

Código (asm) [Seleccionar]
aun:
mov byte ptr ds:[datos - 1 + edx],al
dec edx
loop aun
salto:
dec al
jnz ciclo




http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.

Yurix



Invertir un Byte. Eso , invertir un byte , por ahí andan formas de hacerlo (en C++ ..) pero siempre trato de hacer lo mio propio y compartirlo con todo aquel que quiera aprender junto a mi este difícil arte.Y Siempre recuerda que no hay nada mejor que aprender usando OLLY

1) Si usted tiene alguna duda no dude en preguntarme . Con mucho gusto aclaro lo que he hecho.
2) No copie y pegue .
3) Y recuerde quien es el author.  ;D
4) Disfrútalo

EJ>> 10010  << 12 hex
      > 01001  << 9  hex

El Byte a invertir esta en EAX , especificamente en AL.

mov ecx,8

giros:
ror al,1
shl ax,1
shr al,1
loop giros

xchg al,ah

Hasta la próxima.


http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.

Karcrack

No se si lo he entendido muy bien...

Pero no seria lo mismo que esto?
        mov     al, 8
        not     al

:huh:

Yurix

Hola , no es lo mismo que hacer un NOT
Este codigo lo que hace es darle la vuelta como a una tortilla .

Ej 00011 >>> 11000


Si haces un not en el caso de 00011 el resultado es 11100

Mira aqui sobre NOT>
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1266079#msg1266079


http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.

Erik#

Cita de: Karcrack en 25 Septiembre 2009, 18:02 PM
No se si lo he entendido muy bien...

Pero no seria lo mismo que esto?
        mov     al, 8
        not     al

:huh:

Taba pensando lo mismo, pero es verdad, juas.