elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
25 Mayo 2012, 02:27  


Tema destacado: ¡Aprende hacking con práctica! - WarZone, el wargame de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Recopilación de mis codigos.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Recopilación de mis codigos.  (Leído 11,157 veces)
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Recopilación de mis codigos.
« en: 31 Mayo 2009, 22:58 »

Programas

  • Humilde Visor de claves de el msn 0.1v by YST  
          Descripción: Programa que te muestra todas las claves y cuentas guardadas en el Msn Live.
                           

  • Humilde Visor de claves de el Firefox 0.1v by YST
          Descripción: Programa que te muestra las claves guardadas en el Firefox 3
       
       
  • CrearImport
          Descripción: Programa que crea un import parecido a el "kernel32.inc" que trae el Fasm por defecto , con todas las funciones de la libreria indicada.
       
       
  • PE visor by YST
          Descripción: Pequeño visor del formato PE de cualquier archivo que contenga este formato.
       
       
    Codigos generales.
     
       
  • ChangeEntryPoint
          Descripción: Cambia el EntryPoint de un archivo con formato PE.
       
       
  • GetAddressFunction
          Descripción: Función que simula la función GetProcAddress de la kernel32.dll
     
       
  • Split
          Descripción: Codigo que parte una cadena por medio de un separador.
     
       
  • Zerar
          Descripción: Función que llena de tantos 0 como le indiques una posición.
       
       
  • cInstr
          Descripción: Función que te dice si una cadena se encuentra dentro de otra y de encontrarsre devuelve la posicion donde se    encuentra y en caso contrari devuelve 0
       
       
  • StrReverse
          Descripción: Función pone una cadena al revez (ej: "Hola" te la dejaria en "aloH" )
       
       
  • EncriptacionChangeCase
          Descripción: Función que remplaza todas las mayusculas por minuscula y viceversa
       
       
  • EncriptacionXOR
          Descripción: Función que cifra mediante un XOR
       
       
  • Encriptacion YST
          Descripción: Función que cifra mediante un algoritmo propio
       
       
  • Infección USB
          Descripción: Función que infecta unidades extraibles
       
       
  • DetectaExtención
          Descripción: Función que devuelve la extención de un archivo.
       
       
  • cRtlMoveMemory
          Descripción: Función que simula la función RtlMoveMemory de kernel32.dll .
       
       
  • EOFExtraDataExtract
          Descripción: Función que devuelve donde se encuentra el fin del archivo mediante el formato PE .
     
       
  • antiemulator
          Descripción: Función que detecta la emulación de algunos antivirus .
     
       
  • CapetaVaciaOUnidad
          Descripción: Función que dice si una ruta no contiene archivos .
     
       
  • ASCIITOUNICODE
          Descripción: Función que pasa una cadena ascii a unicode .
     
       
  • ConcatenarUnicode
          Descripción: Función que concatena 2 cadenas en unicode .
     
       
  • LenUnicode
          Descripción: Función que mide una cadena en unicode.
     
       
  • StringToHex
    Descripción: Función que pasa una cadena ASCII a Hexadecimal.
     
       
  • HexToString
    Descripción: Función que pasa una cadena Hexadecimal a una cadena ASCII.
     
       
  • SHA1Hash
    Descripción: Saca el hash sha1 de un dato
     
       
  • Propagación por emule
    Descripción: Codigo que se propaga por el sistema p2p emule.
     
       
  • Propagación por Omemo
    Descripción: Codigo que se propaga por el sistema p2p Omemo.
     
       
  • Propagación por Ares
    Descripción: Codigo que se propaga por el sistema p2p ares.
     
       
  • fRight
    Descripción: Funcion que iguala a la función Right de Visual basic 6.
     
       
  • RC4
    Descripción:Codigo que cifra usando el algoritmo RC4.
     
       
  • Rot39
    Descripción:Codigo que cifra usando el algoritmo ROT39.
     
     
  • Ejecución de comandos con pipes
    Descripción:Codigo que muestra los valores devueltos por un ping 127.0.0.1 .
     
     
  • IsVirtualPCPresent
    Descripción:Detecta si estamos siendo ejecutados en una maquina virtual .
       
     
  • Llamar funciones de librerias como lo hace el Visual basic 6
    Descripción: Ejemplo de como llama las api's el visual basic 6 , codigo original por karcrack traducido por mi ;) .


« Última modificación: 24 Agosto 2009, 17:51 por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #1 en: 31 Mayo 2009, 23:00 »

Código
;Función que cifra con un xor 10 cada byte de una cadena
; cCadena = Puntero de cadena a cifrar
; cTTamaño = Tamaño de cadena a enbcriptar si este es 0 se medira la cadena automaticamente (fin de cadena de caracter nulo )
;  By YST
proc EncriptacionXOR,cCadena,cTamaño
push ebx
xor ebx,ebx
cmp [cTamaño],0
je .contar
mov ebx,[cTamaño]
jmp .Start
.contar:
mov ebx,0
mov eax,[cCadena]
.len:
inc ebx
inc eax
cmp byte[eax],0
jne .len
.Start:
mov eax,[cCadena]
inc ebx
dec eax
.bucle:
dec ebx
cmp ebx,0
jbe .salir
inc eax
xor byte[eax],10
jmp .bucle
.salir:
pop ebx
ret
endp


En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #2 en: 31 Mayo 2009, 23:02 »

Código
proc ASCIITOUNICODE,Cadena,Buffer
push ecx ebx
mov  eax,[Cadena]
mov ebx,[Buffer]
dec eax
sub ebx,2
.bucle:
inc eax
cmp byte[eax],0
je .salir
add ebx,2
mov cl,byte[eax]
mov byte[ebx],cl
mov byte[ebx+1],0
jmp .bucle
.salir:
pop ebx ecx
ret
endp
En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #3 en: 31 Mayo 2009, 23:15 »

Código
macro  MacroYSTEncript Posicion,Tamaño{
local ..Caracter,..numero
..numero  = Tamaño
repeat Tamaño
..numero  = ..numero - 1
load ..Caracter from  Posicion+%-1
..Caracter = byte ..Caracter + 3
..Caracter = byte not ..Caracter
..Caracter = byte ..Caracter xor 45
..Caracter = byte ..Caracter xor ..numero
store  ..Caracter at  Posicion+%-1
end repeat
}    
 
Código
proc YSTEncript,cCadena,cBuffer,cTamaño
push eax ebx ecx  edx esi
mov ebx,[cBuffer]
mov esi,[cCadena]
dec esi
dec ebx
.Eb:
dec [cTamaño]
inc esi
inc ebx
mov cl,byte[esi]
add cl,3
mov byte[ebx],cl
not byte[ebx]
xor byte[ebx],45
mov edx,[cTamaño]
xor byte[ebx],dl
cmp [cTamaño],0
jne .Eb
pop  esi edx ecx ebx eax
ret
endp
 
proc YSTDesencript,cCadena,cBuffer,cTamaño
push  eax ebx ecx  edx esi
mov ebx,[cBuffer]
mov esi,[cCadena]
dec esi
dec ebx
.Eb:
dec [cTamaño]
inc esi
inc ebx
mov cl,byte[esi]
mov byte[ebx],cl
mov edx,[cTamaño]
xor byte[ebx],dl
not byte[ebx]
xor byte[ebx],45
sub byte[ebx],3
cmp [cTamaño],0
jne .Eb
pop  esi edx ecx ebx eax
ret
endp
« Última modificación: 20 Septiembre 2009, 05:28 por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #4 en: 31 Mayo 2009, 23:17 »

Código
include 'win32ax.inc'
.code
start:
stdcall cInstr,"98y4ct2y3Hola83925832c","Hola"
.if eax = FALSE
invoke MessageBox,0,"No esta.",0,0
.else
invoke MessageBox,0,eax,0,0
.endif
invoke ExitProcess,0
;////////////////////////////////////////////////////////////////////////////////////////////////////
;//Descripción: Funcion que ve si la segunda cadena se encuentra dentro de la primera             //
;//c1 = Cadena                                                                                   //
;//c2 = Cadena que se buscara en c1                                                             //
;// Retorna:                                                                                   //
;// Si no se encuentra o hay error retorna FALSE , en el caso de que se encuentre devuelve eax//
;// apuntandoa la posicion de c1 donde se encontro c2                                        //
;// by YST                                                                                  //
;////////////////////////////////////////////////////////////////////////////////////////////
proc cInstr,c1,c2
push edi esi ebx ecx  edx
stdcall Len,[c2]
mov edi,eax
stdcall Len,[c1]
mov esi,eax
cmp edi,esi
jg .Falso
mov edx,[c1]
mov ebx,[c2]
dec edx
inc esi
.bucle:
dec esi
inc edx
mov cl,byte[edx+edi]
mov byte[edx+edi],0
stdcall comparar,edx,[c2]
mov byte[edx+edi],cl
.if eax = 0
mov eax,edx
jmp .salir
.endif
cmp esi,0
jne .bucle
.Falso:
mov eax,FALSE
.salir:
pop edx ecx ebx esi edi
ret
endp
proc comparar ,SRC,DST ;Funcion que compara
push edi ecx esi
mov ecx,-1
mov edi,[SRC]
mov al,0
repnz scasb
mov eax,ecx
not eax
mov ecx,eax
mov esi,[SRC]
mov edi,[DST]
repz cmpsb
mov eax,1
jnz Next
dec eax
Next:
pop esi ecx edi
ret
endp
proc Len,cCadena   ;Funcion que mide la cadena
push ecx edi
mov ecx,-1
mov edi,[cCadena]
mov al,0
repnz scasb
mov eax,ecx
not eax
dec eax
pop edi ecx
ret
endp
.end start
En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #5 en: 31 Mayo 2009, 23:42 »

Código
include 'win32ax.inc'
.code
start:
invoke LoadLibrary,"user32.dll"
stdcall  GetAddressFunction,eax,"MessageBoxA"
stdcall eax,0,0,0,0
invoke ExitProcess,0
proc GetAddressFunction,pMZ,pApi
;EDI = MZ
;Expot data = EBX
;Esi = Cantidad de funciones
;edx = AddressOfNames
;ECX = Propositos generales
mov edi, [pMZ]
mov ebx,[edi+0x3c]
mov ebx,[ebx+edi+0x78]
add ebx,edi
mov esi,[0x18+ebx]
mov edx, [0x20+ebx]
add edx,edi
.bucle:
dec esi
cmp esi,0
je .error
mov eax,esi
rol eax,2   ;Multiplicamos esi por 4
mov eax,[edx + eax]
add eax,edi
stdcall comparar,[pApi],eax
xor eax,0
jnz  .bucle
mov eax,[0x24+ebx]
add eax,edi
movzx ecx, word[eax + 2*esi]
mov eax, [ebx + 0x1c]
add eax,edi
mov eax, [eax + 4 * ecx]
add eax, edi
.salir:
ret
.error:
xor eax,eax
jmp .salir
endp
proc comparar ,SRC,DST
push edi ecx esi
mov ecx,-1
mov edi,[SRC]
mov al,0
repnz scasb
mov eax,ecx
not eax
mov ecx,eax
mov esi,[SRC]
mov edi,[DST]
repz cmpsb
mov eax,1
jnz Next
dec eax
Next:
pop esi ecx edi
ret
endp
.end start
« Última modificación: 16 Agosto 2009, 02:52 por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #6 en: 31 Mayo 2009, 23:47 »

Código
antiemulator:
push ebx ecx
invoke GetTickCount
mov ebx,eax
mov eax,2
mov ecx,250
mul ecx
invoke SleepEx,eax,FALSE ; 250 * 2= 500 ( para confundir un poco el antivirus )
invoke GetTickCount
sub eax,ebx
cmp eax,500
jl .si
mov eax,FALSE
pop ecx ebx
ret
.si:
pop ecx ebx
mov eax,TRUE
ret
En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #7 en: 31 Mayo 2009, 23:51 »

Código
 proc Zerar,Puntero,Cantidad
 
   push ecx
   push ebx
 
             mov ecx,[Cantidad]
                mov ebx,[Puntero]
               .bucle:
 
               mov byte[ebx+ecx],0
               loop .bucle
               mov byte[ebx],0
               pop ebx
               pop ecx
               ret
endp
En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #8 en: 31 Mayo 2009, 23:58 »

Código
include 'win32ax.inc'
.data
buffer rb 100
.code
start:
stdcall StrReverse,kk,buffer
invoke MessageBox,0,buffer,kk,0
leave
ret
kk: db  "Estoy cifrado",0
proc StrReverse,cCadena,cBuffer
push ebx esi edi eax ecx
mov ebx, [cCadena]
mov esi,[cBuffer]
stdcall Len,ebx
mov ecx,eax
mov al,byte[ebx]
dec ecx
mov edi,0
.bucle:
mov ah,byte[ebx+ecx]
mov byte[esi+edi],ah
inc edi
dec ecx
jecxz .salir
jmp .bucle
.salir:
mov byte[esi+edi],al
mov byte[esi+edi+1],0
pop ecx eax edi esi ebx
ret
endp
proc Len , SRC
push ecx edi
mov ecx,-1
mov edi,[SRC]
mov al,0
repnz scasb
mov eax,ecx
not eax
dec eax
pop edi ecx
ret
endp
.end start
En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #9 en: 1 Junio 2009, 00:00 »

Código
 include 'win32ax.inc'
 
.code
start:
 
stdcall CapetaVaciaOUnidad,"F:"
 
.if eax = TRUE
invoke MessageBox,0,"La carpeta esta vacia",0,0
.else
invoke MessageBox,0,"La carpeta no esta vacia",0,0
.endif
 
invoke ExitProcess,0
 
proc CapetaVaciaOUnidad,ruta
locals
Find  WIN32_FIND_DATA    ?
HandleBusqueda dd ?
Ruta dd ?
endl
 
push ebx
 
invoke GlobalAlloc,GPTR,MAX_PATH+1
mov [Ruta],eax
stdcall Concat,[ruta],"\*", [Ruta]
invoke FindFirstFile,[Ruta] , addr Find
mov [HandleBusqueda],eax
invoke FindNextFile ,eax, addr Find
invoke lstrcpy,[Ruta],addr Find.cFileName
mov ebx,[Ruta]
 
.if word[ebx] = ".."
invoke FindNextFile, [HandleBusqueda], addr Find
.endif
invoke lstrcpy,[Ruta],addr Find.cFileName
mov ebx,[Ruta]
.if word[ebx] = ".."
 
invoke GlobalFree,[Ruta]
mov eax,TRUE
.else
.if dword[ebx] = "RECY"
.if dword[ebx+4] = "CLER"
invoke GlobalFree,[Ruta]
mov eax,TRUE
.endif
.else
invoke GlobalFree,[Ruta]
mov eax,FALSE
.endif
.endif
.endif
pop ebx
 
ret
endp
 
proc Concat uses esi edi, @AdrSrc1, @AdrSrc2, @AdrDest
 
   mov esi,[@AdrSrc1]
   mov edi,[@AdrDest]
 
.concat_src1:
   movsb
   cmp byte[esi],0
   jne .concat_src1
 
   mov esi,[@AdrSrc2]
 
.concat_src2:
   movsb
   cmp byte[esi],0
   jne .concat_src2
 
   movsb
 
   ret
endp
.end start
En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #10 en: 1 Junio 2009, 00:06 »

Código
format pe console
espacio equ 13,10,0
include 'win32ax.inc'
.data
RutaLib   rb MAX_PATH
RutaINC   rb MAX_PATH
.code
start:
invoke printf,"Ingrese la ruta de la libreria:"
invoke printf,espacio
invoke scanf,"%s",RutaLib
invoke printf,"Ingrese la ruta de la donde se generara el include:"
invoke printf,espacio
invoke scanf,"%s",RutaINC
stdcall CrearImport,RutaLib,RutaINC
invoke ExitProcess,0
proc CrearImport,NombreLIB,NombreImport
locals
DirPEHeader dd ?
PunteroPEHeader dd ?
RVAofExportDirectory   dd ?
NumberOfNames dd ?
AddressOfNames dd ?
Funcion dd ?
HFile dd ?
Nosirve dd ?
Largo dd ?
LibHandle dd ?
endl
push ebx  edx  edi  ecx
   invoke LoadLibrary, [NombreLIB]
   mov [LibHandle],eax
cmp eax,NULL
je .Error
push dword[eax + 03Ch]
pop  [DirPEHeader]
push [DirPEHeader]
pop [PunteroPEHeader]
add  [PunteroPEHeader],eax
mov ebx,[PunteroPEHeader]
cmp word[ebx],"PE"
jne .Error
push dword[ebx+078h]
pop [RVAofExportDirectory]
mov ebx, [RVAofExportDirectory]
add ebx,eax
push dword[ebx+018h]
pop [NumberOfNames]
mov edx,[NumberOfNames]
push dword[ebx+20h]
pop [AddressOfNames]
mov ebx,[NumberOfNames]
mov        edi, [AddressOfNames]
   add        edi,[LibHandle]
 
 
 
              invoke CreateFileA, [NombreImport], GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0
               mov [HFile], eax
               invoke lstrlen,"import "
           invoke WriteFile, [HFile], "import ",eax,addr Nosirve, NULL
                invoke lstrlen,[NombreLIB]
                sub eax,4
               invoke WriteFile, [HFile], [NombreLIB],eax,addr Nosirve, NULL
               invoke WriteFile,[HFile] , ",\",2,addr Nosirve, NULL
                            invoke WriteFile, [HFile], espacio,2,addr Nosirve, NULL
 
.bucle:
dec ebx
mov        eax, [edi + ebx * 4]
add eax,[LibHandle]
mov [Funcion],eax
       invoke lstrlen, [Funcion]
               invoke WriteFile, [HFile], [Funcion],eax,addr Nosirve, NULL
               invoke WriteFile, [HFile],",",1,addr Nosirve, NULL
 
                             invoke WriteFile, [HFile],"'",1,addr Nosirve, NULL
                                     invoke lstrlen, [Funcion]
               invoke WriteFile, [HFile], [Funcion],eax,addr Nosirve, NULL
               .if ebx = 0
                     invoke WriteFile, [HFile],"'",1,addr Nosirve, NULL
               .else
                 invoke WriteFile, [HFile],"',\",3,addr Nosirve, NULL
             invoke WriteFile, [HFile], espacio,2,addr Nosirve, NULL
             .endif
 cmp ebx,0
 jne .bucle
 
           invoke CloseHandle, [HFile]
           invoke system,"cls"
           invoke printf,"Extraida las funciones de: "
           invoke printf,RutaLib
           invoke printf,espacio
           invoke printf,espacio
           invoke printf,"El include ah sido generado en : "
            invoke printf,RutaINC
                     invoke printf,espacio
           invoke printf,espacio
           invoke printf,"Con "
              invoke printf,"%d",[NumberOfNames]
              invoke printf," funciones extraidas."
               invoke printf,espacio
                 invoke system,"pause"
pop  ecx edi edx ebx
ret
.Error:
     invoke system,"cls"
           invoke printf,"Ocurrio un error durante la extracciòn."
                       invoke printf,espacio
              invoke system,"pause"
ret
endp
.end start    
 

PD: En este codigose necesita agregar alguna apis a la win32ax.
En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #11 en: 1 Junio 2009, 00:14 »

Código
include 'win32ax.inc'
.data
Separador db "/()·/", 0
Cadena db 'Soy/()·/una/()·/cadena',0
Cantidad dd ?
buffer rb MAX_PATH
.code
start:
stdcall Split,Cadena,Separador,buffer
mov [Cantidad],eax
stdcall Len,Separador
mov ebx,eax
mov ecx,[Cantidad]
inc ecx
mov esi,buffer
.bucle:
push ecx
invoke MessageBox,0,esi,esi,0
stdcall Len,esi
add esi,eax
add esi,ebx
pop ecx
loop .bucle
invoke ExitProcess,0
; cCadena(in) = Cadena a partir
; cSeparador(in) = Separador que se usara para partir la cadena
; cBuffer(out) = A donde se guardara la cadena partida
; Retorna la cantidad de separadores encontrados
proc Split,cCadena,cSeparador,cBuffer
push edi esi ecx  ebx
xor ebx,ebx
stdcall copy,[cBuffer],[cCadena]
stdcall Len,[cSeparador]
mov edi,eax
mov  esi,[cBuffer]
dec  esi
.bucle:
inc esi
cmp byte[esi],0
je .salir
mov cl,byte[esi+edi]
mov byte[esi+edi],0
stdcall comparar,esi,[cSeparador]
mov byte[esi+edi],cl
cmp eax,0
jne .bucle
inc ebx
mov byte[esi],0
add esi,edi
jmp .bucle
.salir:
mov eax,ebx
pop ebx ecx esi edi
ret
endp
 
proc comparar ,SRC,DST ;Funcion que compara
push edi ecx esi
mov ecx,-1
mov edi,[SRC]
mov al,0
repnz scasb
mov eax,ecx
not eax
mov ecx,eax
mov esi,[SRC]
mov edi,[DST]
repz cmpsb
mov eax,1
jnz Next
dec eax
Next:
pop esi ecx edi
ret
endp
proc Len,cCadena   ;Funcion que mide la cadena
push ecx edi
mov ecx,-1
mov edi,[cCadena]
mov al,0
repnz scasb
mov eax,ecx
not eax
dec eax
pop edi ecx
ret
endp
proc copy,cDestino,cCadena    ;funcion que copia una cadena
push ecx edi esi
stdcall Len,[cCadena]
add eax,2
mov ecx,eax
mov esi,[cCadena]
mov edi,[cDestino]
rep movsb
pop esi edi ecx
ret
endp
.end start
En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #12 en: 1 Junio 2009, 00:19 »

Código
include 'win32ax.inc'
 
.data
xD db '[soy una cadena.]',0
.code
start:
stdcall EncriptacionChangeCase,xD,0
invoke MessageBox,0,xD,0,0
invoke ExitProcess,0
;Función que transforma las miniscula a mayusculas y viceversa
; cCadena = Puntero de cadena a cifrar
; cTTamaño = Tamaño de cadena a enbcriptar si este es 0 se medira la cadena automaticamente (fin de cadena de caracter nulo )
;  By YST
proc EncriptacionChangeCase,cCadena,cTamaño
push ebx
xor ebx,ebx
cmp [cTamaño],0
je .contar
mov ebx,[cTamaño]
jmp .Start
.contar:
mov ebx,0
mov eax,[cCadena]
.len:
inc ebx
inc eax
cmp byte[eax],0
jne .len
.Start:
mov eax, [cCadena]
dec eax
inc ebx
.bucle:
dec ebx
inc eax
cmp ebx,0
je .salir
cmp byte[eax],'A'
jb .bucle
cmp byte[eax],91
jge .revisar
jmp .seguir
jmp .bucle
.seguir:
cmp byte[eax],"Z"
jbe .Mayuscula
cmp byte[eax],"z"
jbe .Miniscula
jmp .bucle
.salir :
xor ebx,ebx
mov ebx,0
mov eax,[cCadena]
pop ebx
ret
.revisar:
cmp byte[eax],96
jg .seguir
jbe .bucle
.Mayuscula:         ;Si es Mayuscula la pasamos a miniscula
add byte[eax],0x20
jmp .bucle
.Miniscula:         ;Si es miniscula la pasamos a Mayuscula
sub byte[eax],0x20
jmp .bucle
xor ebx,ebx
mov ebx,0
mov eax,[cCadena]
endp
 
.end start
En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #13 en: 1 Junio 2009, 00:26 »

Código
proc LenUnicode,cCadena
mov ebx,[cCadena]
mov eax,0
.bucle:
inc eax
cmp byte[ebx+eax*2],0
jne  .bucle
pop ebx
ret
endp
En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 963


I'm you


Ver Perfil WWW
Re: Recopilación de mis codigos.
« Respuesta #14 en: 1 Junio 2009, 00:28 »

Código
proc ConcatenarUnicode,cCadena1,cCadena2,cBuffer
push esi edi
   mov edi,[cBuffer]
   mov esi,[cCadena1]
 
.bucle1:
   movsb
   cmp word[esi],0
   jne  .bucle1
 
      inc edi
       mov esi,[cCadena2]
.bucle2:
   movsb
   cmp word[esi],0
   jne  .bucle2
   pop edi esi
ret
endp
 
En línea



Yo le enseñe a Kayser a usar objetos en ASM
Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recopilacion Total De Versiones De Psp By Keiser
Juegos y Consolas
Keiser 0 1,163 Último mensaje 24 Diciembre 2010, 10:34
por Keiser
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines