Autor
|
Tema: Codigos de Yuri Grille (Leído 40,565 veces)
|
Amerikano|Cls
Desconectado
Mensajes: 789
[Beyond This Life]
|
Buena esa, pero me podrias explicar mejor que hace el BT que es una de las instruciones que aun no comprendo. Gracias
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
"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.
|
|
|
En línea
|
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
Desconectado
Mensajes: 72
Paz para la guerra y guerra por la paz
|
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 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.
|
|
« Última modificación: 17 Agosto 2009, 21:29 pm por Yurix »
|
En línea
|
|
|
|
ny0x
Desconectado
Mensajes: 336
|
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 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'
|
|
« Última modificación: 18 Junio 2009, 22:44 pm por x0ʎu »
|
En línea
|
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Con un ret desde el entry point es suficiente igual 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.
|
|
« Última modificación: 19 Junio 2009, 00:32 am por Eternal Idol »
|
En línea
|
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
Desconectado
Mensajes: 336
|
yo nunca he usado ExitProcess en asm y en C solo cuando tengo varios hilos.
|
|
|
En línea
|
|
|
|
biribau
Desconectado
Mensajes: 181
|
Yo digo que es por el desalineamiento de pila por el push ax....... puestos a decir jajaja pero ni idea
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Yo digo que es por el desalineamiento de pila por el push ax....... puestos a decir 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 ...").
|
|
|
En línea
|
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
|
|
|
|
|