Autor
|
Tema: SRCs de YST. (Leído 39,924 veces)
|
YST
Desconectado
Mensajes: 965
I'm you
|
me pregunto los antivirus detectran que se cambia el entrypoint?
Depende el caso , por ejemplo como dice Hacker_zero si se lo cambias a un ejecutable hecho con Viisual basic te lo detectan.
|
|
« Última modificación: 31 Mayo 2009, 04:29 am por YST »
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
~~
|
Mapear el archivo en estos casos suele ahorrar bastante trabajo, ya que se guardan los cambios automáticamente al "desmapearlo". Buen trabajo
|
|
|
En línea
|
|
|
|
YST
Desconectado
Mensajes: 965
I'm you
|
Mapear el archivo en estos casos suele ahorrar bastante trabajo, ya que se guardan los cambios automáticamente al "desmapearlo". Con mapear el archivo te refieres a usar las api's como CreateFileMapping ? . Si es a si si tienes razón disminuyen el trabajo. Buen trabajo Gracias
|
|
« Última modificación: 31 Mayo 2009, 04:30 am por YST »
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
~~
|
Si, a esas mismas, así solo tendrías que mapearlo, cambiar en memoria el DWORD del EP y desmapearlo xD
|
|
|
En línea
|
|
|
|
YST
Desconectado
Mensajes: 965
I'm you
|
Hola , para un proyecto que tengo que hacer tube la necesidad de desarrollar algo parecido al split de visual basic , se los dejo espero que les sirva 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
|
|
« Última modificación: 31 Mayo 2009, 04:30 am por YST »
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
YST
Desconectado
Mensajes: 965
I'm you
|
Hola , hice una función de "cifrado" mas que nada para hacer mas fuerte la encriptacion XOR , tambien se puede usar para modificar el nombre de las dll de un archivo , basicamente lo que hace es cambiar las minisculas por mayusculas y viceversa nom modificando ningun simbolo , es muy basica pero como lo dije la use para cifrar cadenas ( primero le paso mi encriptaccion y luego un xor normal ) , funciona para mejorar la cifrado ya que como sabran para nosotros la letra "A" es la misma que "a" pero para los antivirus son diferentes ya que su valor ascii es distinto , bueno se las dejo veran ustedes para que la usan. 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
por cierto por si necesitan una función para cifrar con XOR ;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
|
|
« Última modificación: 31 Mayo 2009, 04:31 am por YST »
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
YST
Desconectado
Mensajes: 965
I'm you
|
Hola, necesite hacer una pequeña función que pasar a unicode , a alguien mas le puede servir por eso la posteo 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
Funcion que cuenta el largo de una cadena en Unicode: proc LenUnicode,cCadena mov ebx,[cCadena] mov eax,0 .bucle: inc eax cmp byte[ebx+eax*2],0 jne .bucle pop ebx ret endp
Funcion para concatenar cadenas en unicode 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
|
|
« Última modificación: 31 Mayo 2009, 04:32 am por YST »
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
Muy buena si señor . Tal vez podrías mejorarla haciendo que lo que decida mayúscula o minúscula sea un algoritmo pseudoaleatorio así el resultado será siempre diferente, yo lo hice en c así. Saludos
|
|
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
|
YST
Desconectado
Mensajes: 965
I'm you
|
No se si a alguien le sirva pero igual la dejo ;Descripcion: Esta función funciona igual que la winapi RtlMoveMemory ; by YST proc cRtlMoveMemory,cBuffer,Cpuntero,cCantidad push esi edi xchg edi,[cBuffer] xchg esi,[Cpuntero] .bucleb: dec [cCantidad] movsb cmp [cCantidad],0 jge .bucleb pop edi esi ret endp
|
|
« Última modificación: 31 Mayo 2009, 04:33 am por YST »
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
|
|