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ú

Temas - Yurix

#1
Diseño Gráfico / Optimizador de .PSD
4 Febrero 2010, 21:38 PM
hola a todos del foro de diseño , yo nunca posteo en este subforo pero creo que esto te puede ser util.

Se trata de un programa que hice y quiero compartir , se trata de un programa que "optimiza" los .psd , esta basado en el "truco" de esconder las capas y salvar el archivo . Pero eso es molesto cuando tienes un proyecto grande con muchas capas etc .. Esto hace eso mismo pero cuando abres el archivo las capas son visibles.

Esto lo he probado en CS3 y 4 .

Pueden descargar el programa con su codigo fuente desde mi web:
http://sites.google.com/site/compactamos/descargas/PSD%28Beta%29.rar?attredirects=0&d=1

Espero que les sea util y ahorren mucho espacio .

----
Chaos

#2
ASM / De HEX (x\09x\82\x76) a ASCII>
10 Diciembre 2009, 19:01 PM

Es decir como convertir una cadena de texto que representa numeros hexadecimales a su valor real , este codigo acepta cualquiera de las formas Ej

"x\09x\82\x76"
"0x68, 0x6F, 0x6C, 0x61, 0x20"

incluso una mescla de ellas EJ>
Código (asm) [Seleccionar]
"0x68, 0x6F,\x55\x8B\xEC\x32\xD2\x83\xEC\x10\xC6\x45\xF1\x63\xC6\x45\xF2\x61"


ahex2hex Proc datos:dword,destino:dword,long:dword

mov edx,[datos]

repetimos:

xor eax,eax
mov ecx,2

mmmms:
mov al,byte ptr ds:[ecx+edx-1]
;;;;;;;;;;;;;;;;;;;;Plugin para ignorar caracteres (ignore "space" "x" "," "\r\n" "\" "/")
;;;; This is a plugin , you can delete.

cmp al,020h ; El espacio , de encontrarse se ignora
jnz noespace
jmp finmal

noespace:
cmp al,02Ch ; La ","
jnz nocoma
jmp finmal

nocoma:
cmp al,078h ; The "x"
jnz noequis
jmp finmal

noequis:  ;Chequeamos si hay una nueva linea , Now we check for newline (for windows)
cmp al,05Ch  ; The "\"
jnz barra
jmp finmal

barra:
cmp al,02Fh  ; The "/"
jnz newline
jmp finmal

newline:
cmp al,00Dh  ; The "\r"
jnz noreturn
jmp finmal

noreturn:

cmp al,00Ah  ; The "\n"
jnz googC

finmal:
inc edx
jmp repetimos  ; Repetimos
;;;;;;;;;;;;;;;;;;;;;;Plugin -para ignorar caracteres (-to ignore some chars)
googC:


sub al,041h
jc  negativo; Si es menor que CERO
add al,0Ah
jmp positivo

negativo:  ; Le sumamos 17
add al,011h
positivo: ; Si es positivo , solo lo corremos
shl eax,8
loop mmmms

;;;; Arreglo final (ver en un Dbugger)
shr eax,8
xchg al,ah
shl al,4
shr eax,4
;;;;;;;;;;;;;;

mov ecx,dword ptr ds:[destino]
mov [ecx],al

dec long
jz salimos

inc edx
inc edx
inc dword ptr ds:[destino]
jmp repetimos

salimos:
ret
ahex2hex endp


Cualquier duda me dicen !!.





#3
ASM / Mostrar la MacAddress
17 Noviembre 2009, 18:05 PM
Eso mismo , lo he codeado en ASM , un pase de un codigo hecho en C. No
esta "muy explicado" pero se entiende como es el proceso.

Saludos
Yuri.

Descarga:
http://sites.google.com/site/compactamos/descargas/MacAddres.rar?attr...

Cualquier duda me dicen !!!
#4
ASM / Como leer un archivo !?
4 Agosto 2009, 17:12 PM
Hola , estoy liado con un algoritmo de preprocesado de datos para su posterior compresión , pero como novato al fin no tengo experiencia con las apis de lectura y escritura , no te pido que me hagas el código  ;D, ya yo lo tengo terminado y probado solo tengo unas dudas . Necesito que el programa lea y escriba en un archivo (De cualquier tamaño).Ya se como crear un archivo pero necesito leerlo y no me sale bien , me puedes ayudar ?

Este es para escribir :

; EN eax tendremos el archivo a preprocesar (Ruta)

comment *
; Para crear un archivo ...
                 ;creamos el archivo
               invoke CreateFileA,eax, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0
                mov [handleCreado], eax

                ;Escibimos el archivo
                invoke WriteFile, eax,addr MsgTexto,20,addr bEscritos, NULL

                ; "Cerramos" el archivo creado
                invoke CloseHandle, [handleCreado]

------------------------------------Me funciona bien , pero el de leer :


; Para leer de un archivo

    invoke CreateFile,eax,
                      GENERIC_READ,
                      FILE_SHARE_READ,
                      NULL,OPEN_EXISTING,
                      FILE_ATTRIBUTE_NORMAL,
                      NULL
    mov [handleruta], eax

; Obtener el tamaño
    invoke GetFileSize,handleruta,NULL
    mov [tamano], eax

invoke ReadFile,[handleruta],[datos],eax,ADDR br,NULL

invoke CloseHandle,[handleruta]

Me da error al crear el handle.

Saludos
#5
ASM / Codigos Inutiles !!!
13 Julio 2009, 20:36 PM
Hola de nuevo a todos , como dije en el post sobre de Ascii a binario quiero hacer con la ayuda de todos una recopilación de tips sobre optimización , mejor uso de las instrucciones etc ...
-----------------------------
Todos los que quieran ayudar , estoy haciendo un pequeño escrito sobre instrucciones inútiles y quisiera que mandaran tips sobre estos temas , ej de instrucción inútil

"inc cl" ;<< Nada mas inútil que usar este code debe de estar prohibido , sabes por que ?
Porque es mejor hace "inc ecx" y el resultado es el mismo y nos ahorramos un byte

00401000 >    FEC1          inc     cl
00401002      41            inc     ecx

Ley numero 1 > Nunca incrementes un registro low como es el caso de "al cl dl bl"
Parece sencillo pero lo he visto en algunos casos (personales) XD
------------------------------------------------------------------------------------------------
Otro caso es este:
(Objetivo : Poner en 7 a eax)

Cita de: karmany en 14 Julio 2009, 23:30 PM
Sobre el tema:
B8 07000000   mov     eax, 7
también tiene de positivo que son 3 bytes 00 y a la hora de comprimir mucho mejor.

Pero como curiosidad se me ocurre que podemos también comernos un byte:
00401000     33 C0          xor eax,eax
00401002     B0 07          mov al,7

o
00401000     33 C0          xor eax,eax
00401002     04 07         add al,7


Y se me ocurre esta de 5 bytes:
00401002      B0 07         mov al,7
00401004      0FB6C0        movzx eax,al


E incluso haciendo pruebas he intentado exprimir para conseguir 3 bytes:
00401007      6A 07         push 7
00401009      58            pop eax


Gracias a Karmany por aportar estos códigos y en especial por el de>
00401007      6A 07         push 7
00401009      58            pop eax

Que es muy usado en los shell code para ahorrar espacio.

-----------------------------------------------------------------------------------------------

Ahora veamos un ejemplo de código inútil en un shell code  publicado en Milw0rm.com

Código (asm) [Seleccionar]
00401000 > $ 33C0           XOR EAX,EAX        ; |
00401002   . B8 8F7A837C    MOV EAX,kernel32.Beep       ; |
00401007   . 68 00040000    PUSH 400                             ; |/Duration = 1024. ms
0040100C   . 68 00030000    PUSH 300                            ; ||Frequency = 300 (768.)
00401011   . FFD0           CALL EAX                                 ; |\Beep
00401013   . 33C0           XOR EAX,EAX                           ; |
00401015   . B8 FACA817C    MOV EAX,kernel32.ExitProcess          ; |
0040101A   . FFD0           CALL EAX                                 ; \ExitProcess



Díganme que código sobra en este ejemplo???? Fácil

-----------------------------------------------------------------------------------------------
Otro ejemplo de código sobrante >
----------------------------------------------------------------------
Mirando un code para el ordenamiento quicksort. Veo código que sobra y mejor dicho que se puede optimizar un poco.El ejemplo mas claro es al final.

Código (asm) [Seleccionar]
;Original:
       pushad
       mov edi,vector
       push dword[edi + 11 * 4]
       push dword[edi + 10 *4 ]
       push dword[edi + 9 * 4]
       push dword[edi + 8 * 4]
       push dword[edi + 7 * 4]
       push dword[edi + 6 * 4]
       push dword[edi + 5 * 4]
       push dword[edi + 4 * 4]
       push dword[edi + 3 * 4]
       push dword[edi + 2 * 4]
       push dword[edi + 1 * 4]
       push dword[edi]
       push formato
       call [printf]
       add esp,52
       popad
ret

----------------------------------------------------------------------

Aquí esta la optimizacion del código:

Puedo usar casi cualquier registro ya que cuando se empieza se guardan todos con la instrucción pushad y luego los recuperan con popad.

Código (asm) [Seleccionar]
       pushad ; Se guardan los registros en la pila
       mov edi,vector
repetir:
mov eax,2c ; 2c es 44 pero en hexadecimal.
push    dword ptr ds:[eax+edi]  ; Ponemos a eax en 44
sub eax,4 ; y vamos restando 4
jnz repetir ; Hasta que lleguamos a 0

; El resto es lo mismo

push dword[edi]
       push formato
       call [printf]
       add esp,52
       popad ; Se recuperan todos los registros
ret



Le he dejado en el código optimizado algo que aun se puede optimizar mas , sabes que es ? Esfuérzate un poco y dímelo

Lo han resuelto:
Karcrack (No terminado completamente) (Le falta poco :silbar:)

Saludos
---------------------------------------------------------------------------------------------------------------------
Salida Malvada:
[/b]

Esta es una forma de salir usando un stack overflow , es decir se llama a la misma funcion , como solo hay llamadas la pila se llena hasta el tope y sale a windows

Olly:
0040AF82  |$  E8 FBFFFFFF   call    kills.0040AF82

Asm:
salir:
call salir

La pregunta es , para que sirve esto, simplemente nos ahorramos unos bytes.
Otra forma de salir es poniendo un RET en el entry point del programa ya que en la pila
esta la direccion de retorno hacia el sistema.Pero les doy un ejemplo para salir de nuestro
programa en el momento que querramos , no solo al comienzo

Un ejemplo para hacer esto en nuestras aplicaciones. >

Código (asm) [Seleccionar]
.code
entrypoint:

mov     eax , dword ptr ds:[esp]
mov     dword ptr ds:[salir], eax
;---------------------------------
.
.Tu programa ...
.
.
.
;---------------------------------
call dword ptr ds:[salir] ; Salida "Especial" sin ExitProcess


Y tenemos que reservar 4 bytes para la variable "salir" , esto nos representa un ahorro
de 30 bytes (WAO) en nuestro programa si por ejemplo lo comprimimos ...

Saludos y espero que les sea util.

#6
ASM / Codigos de Yuri Grille
11 Junio 2009, 20:47 PM

Invertir un Byte
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1315200#msg1315200

El flag P
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1289013#msg1289013

Un metodo de ordenamiento
http://foro.elhacker.net/asm/un_metodo_de_ordenamiento-t264478.0.html

Convertir a hexadecimal !!!
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1286565#msg1286565

De Ascii a binario (01011001)
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1269217#msg1269217

Explicación sencilla sobre AND XOR OR NOT
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1266079#msg1266079

Buscar una string dentro de otra (Soporta Búsqueda con asterisc*s) ;-)
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1257143#msg1257143

Invertir una string (codigo sencillo y sin usar la pila)(Mejorado)
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1255196#msg1255196

Par o Impar?
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1255115#msg1255115

De minúsculas a MAYÚSCULAS
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1254101#msg1254101


Comparando dos strings:

Esta es una pequeña forma de comparar strings.

lea esi,CadTexto01
lea ebx,CadTexto02
empi:
mov al, byte ptr ds:[esi]
mov ah, byte ptr ds:[ebx]
cmp     al, ah
jnz enda
inc     esi
inc     ebx
or      eax, eax
jnz     empi
inc     eax
enda:

Strings con 00 como final. ;D

SaLuDoS

y prueben el sistema operativo hecho en ASM
http://www.menuetos.net/
Esta very good.







#7
Scripting / Ayuda, cortar una parte de un txt.
23 Abril 2009, 20:43 PM
 Hola a todos ,soy nuevo en este foro .
Quisiera saber como puedo cortar un txt hasta un determinado punto ,de ahi hasta el final no me interesa mas nada.
Hay que buscar hasta donde diga "8BIMPatt" y salvarlo en esa u otra txt.
Ayuda  :huh: