Título: [Micro-rutina] strlen - ANSI Publicado por: Karcrack en 21 Enero 2013, 02:59 am Me he visto en la necesidad de diseñar una rutina strlen() lo más pequeña posible... He acabado con esto...
15bytes: Código (No cumple el Intel ABI, pero puedo asumir que EDI se modifique y así me ahorro 2bytes) ¿Alguien ve la forma de recortarlo más? Título: Re: [Micro-rutina] strlen - ANSI Publicado por: xv0 en 21 Enero 2013, 18:43 pm Hola
Código
El push son dos bytes, pop uno, si el valor de ecx fuera cero podrías hacer un not y serian dos bytes. ¿Puedes hacer eso? Un saludo. Título: Re: [Micro-rutina] strlen - ANSI Publicado por: fary en 21 Enero 2013, 19:19 pm Código
14 Bytes ;D Título: Re: [Micro-rutina] strlen - ANSI Publicado por: mr.blood en 21 Enero 2013, 19:44 pm No se si ya se puede acortar mas... yo creo que no.
Código
EDITO: Olvidadlo, no retorna correctamente. Lo mas corto son 14 bytes hasta el momento. Sa1uDoS Título: Re: [Micro-rutina] strlen - ANSI Publicado por: Karcrack en 21 Enero 2013, 20:09 pm Ninguna de vuestras aproximaciones parece funcionar con una cadena nula ;) >:D
Además la función debe incluir el byte nulo en el tamaño. Por lo tanto, con una cadena nula debe devolver 1. Título: Re: [Micro-rutina] strlen - ANSI Publicado por: Eternal Idol en 21 Enero 2013, 20:59 pm Además la función debe incluir el byte nulo en el tamaño. Por lo tanto, con una cadena nula debe devolver 1. No, una cadena vacia tiene un tamaño de 0 caracteres. Título: Re: [Micro-rutina] strlen - ANSI Publicado por: fary en 21 Enero 2013, 21:04 pm La mia si funciona con una cadena nula :rolleyes:
Título: Re: [Micro-rutina] strlen - ANSI Publicado por: Karcrack en 21 Enero 2013, 23:56 pm No, una cadena vacia tiene un tamaño de 0 caracteres. No la función que yo quiero :laugh:La mia si funciona con una cadena nula :rolleyes: Devuelve 0 y quiero que sea 1 :-\ Fuera de esa necesidad tu código haría mejor el clone de strlen() y cumple el intel ABI :)Título: Re: [Micro-rutina] strlen - ANSI Publicado por: Eternal Idol en 22 Enero 2013, 00:04 am No la función que yo quiero :laugh: Entonces no es strlen() :silbar: Título: Re: [Micro-rutina] strlen - ANSI Publicado por: MCKSys Argentina en 22 Enero 2013, 02:22 am Optimizando el code de mDrinky para que dé 1 con un str de largo 0 ( :P), queda de 13 bytes:
Código
Título: Re: [Micro-rutina] strlen - ANSI Publicado por: fary en 22 Enero 2013, 08:56 am Optimizando el code de mDrinky para que dé 1 con un str de largo 0 ( :P), queda de 13 bytes: Código
si :) lo unico que si es una cadena no le suma ese byte nulo. Título: Re: [Micro-rutina] strlen - ANSI Publicado por: Karcrack en 22 Enero 2013, 12:15 pm El asunto es que estoy parcheando un PE que tiene una función con este comportamiento (Cadena NULA = 1, etc...) Quería inyectar un poco de código sin necesidad de redireccionarme a/crear codecaves. Substituyendo la función por una de 20bytes tenía más que suficiente para lo que quería inyectar :)
Me encantan este tipo de threads :rolleyes: ;-) A ver si acabo una función RC4 y vemos cuanto la podemos recortar >:D Título: Re: [Micro-rutina] strlen - ANSI Publicado por: xv0 en 5 Marzo 2013, 20:31 pm La mia devuelve 1 si la cadena es núla, el código esta escrito en unix-like.
Código
14 bytes C.0. Kdump: Código: CALL exit(0x1) Un saludo. Título: Re: [Micro-rutina] strlen - ANSI Publicado por: mr.blood en 4 Abril 2013, 02:14 am Hoy viendo esta (http://www.rinconsolidario.org/eps/asm8086/CAP6.html) pagina recorde este tema e hice una funcion de 10 bytes.
Código
Sa1uDoS |