Codigos de Yuri Grille

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

0 Miembros y 2 Visitantes están viendo este tema.

Amerikano|Cls

Buena esa, pero me podrias explicar mejor que hace el BT que es una de las instruciones que aun no comprendo. Gracias  ;)




Mi blog:
http://amerikanocls.blogspot.com

Eternal Idol

"El bit de destino indexado por el valor de la fuente es copiado dentro del Carry Flag (Bandera de Acarreo)".

bt is bit test y lo que hace es guardar un bit determinado (en este caso el primero, 0) del destino en el flag de acarreo (CARRY FLAG, por eso yo usaria jnc por claridad aunque al final el opcode es el mismo). Aca se lo usa para saber si un numero es par, si es divisible por dos su primer bit sera 0.
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

Amerikano|Cls





Mi blog:
http://amerikanocls.blogspot.com

Yurix

#23
Hola a todos , esta es una forma de invertir una string sin usar la pila que fue el ejemplo anterior que publique , este codigo necesita tener en eax la longitud de la string.

Saludos

Código (asm) [Seleccionar]
mov ebx,string
add eax,ebx
dec ebx

asd:
mov ch, byte ptr ds:[ebx]
xchg [eax],ch
xchg [ebx],ch

inc ebx
dec eax
cmp     ebx,eax
jbe asd  ; Salta si es Menor o igual


-----------------
Nota> Para usar este código es necesario introducir una string con un caracter al principio de nuestro codigo , es decir , antes de declara la string que invertiremos tenemos que declarar > vacia db " ",0
No olvidar esto
-----------------
------------------------------------------------------ off topic
Si en algo siempre tendré la razón es cuando diga:
"Los hombres no piensan igual"
a)Si no estas de acuerdo con esta frase me estas dando la razón.
B)Si estas de acuerdo , gracias por coincidir con mis pensamientos.


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

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.

ny0x

#24
me encontre con un problemita, cuando intente ver el codigo en accion mediante el olly, me di cuenta de algo

lea ebx,string
dec ebx

en un principio ebx apunta al primer caracter de la cadena y al decrementarlo apunta a una region de memoria que no es la cadena
y cuando hagas

mov byte ptr ds:[ebx], cl

salta un error y cierra el programa lo correcto es decrementar eax, porque los limites de un array es size -1

aqui esta el testeo y la salida es emetreivni

Código (asm) [Seleccionar]

format pe console
entry main
include 'c:\fasm\include\win32ax.inc'
.data
texto   db      'invierteme',0
.code
main:
    xor eax,eax
    add eax,10
    mov ebx, texto
        add eax,ebx
        dec eax

        asd:
         mov ch, byte[ebx]
         mov cl, byte[eax]
         mov byte[ebx], cl
         mov byte[eax], ch
         inc ebx
         dec eax
         cmp     ebx,eax
         jbe asd

push texto
call [puts]
add esp,4
ret

section '.idata' import data readable
library msvc,'msvcrt.dll'
import msvc,puts,'puts'

Yurix


Una forma de Salir sin usar ExitProcess , introduscanlo en olly para que vean como es.

http://sites.google.com/site/compactamos/descargas/Calc.zip?attredirects=0

Una pista : xxxxxxxxxxxx


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

#26
Con un ret desde el entry point es suficiente igual  :D Ahi mismo nos esta esperando una llamada a ExitThread.

Esto da una excepcion no controlada ... se me abre el WinDbg que esta registrado para eso, a otros se les abrira el Dr. Watson, no es una forma muy buena de terminar un proceso ...

SetDlgItemTextA, los dos primeros parametros son validos, el tercero es el primer caracter de la cadena mostrada por MessageBoxA, en lugar de ser el puntero a la misma.
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

ny0x

yo nunca he usado ExitProcess en asm  :P y en C solo cuando tengo varios hilos.

biribau

Yo digo que es por el desalineamiento de pila por el push ax....... puestos a decir  :P jajaja pero ni idea

Eternal Idol

Cita de: biribau en 19 Junio 2009, 00:46 AM
Yo digo que es por el desalineamiento de pila por el push ax....... puestos a decir  :P jajaja pero ni idea

Nopes, aunque eso sucede no llega a afectar, fijate que da error aca:
user32!RtlInitLargeAnsiString+0x22:
7e420a9c 8a11            mov     dl,byte ptr [ecx]          ds:0023:00000054=??

0:000> r ecx
ecx=00000054

54=84=T (el primer caracter de "Te gusto ...").
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