Mostrando entradas con la etiqueta FUU. Mostrar todas las entradas
Mostrando entradas con la etiqueta FUU. Mostrar todas las entradas

miércoles, 13 de julio de 2011

[TUTORIAL] Writing Dynamic Unpackers for Fun with TitanEngine (English)

Hola!,

esta entrada es para comentarles que finalmente, y a pedido de muchos, la versión en inglés del tutorial sobre TitanEngine y FUU fue agregado a la sección de Downloads del proyecto.

Quiero agradecer a las personas que tuvieron mucho que ver con este arduo trabajo que fue traducir y revisar mas de 80 páginas:

* Juan Esteban Forgia (@ztoker) por traducir las primeras 4 páginas del tutorial.
* Apokliptiko por traducir la segunda parte del tutorial.
* Francisco Falcón (@fdfalcon) por leer y revisar la gramática.
* Fotis (@__fastcall) por darnos ánimos estas últimas semanas. Eso nos dió la fuerza que faltaba para terminar este trabajo!.

Gracias a todos ellos!.

Si encuentran algun error, por favor, avisenme y será corregido a la brevedad.

Espero que lo disfruten!.

Un abrazo!.

viernes, 18 de febrero de 2011

Nuevo Plugin para FUU - dePFE

crosspost de: http://pastafr0la.wordpress.com/2011/02/18/probando/

Gracias a "El Tio Pastafrola" por la colaboracion y por prenderse con el proyecto FUU!.

--

Hola amigos, hoy les traigo una pequeña reseña sobre el packer PFE CX v0.1 con el cual hice mis primeros pinitos en TitanEngine y FUU

primero echemos una mirada a la GUI del protector

img1

haremos una muestra con el maximo nivel de compresion y todas las opciones activadas, en mi caso usare calc.exe para probarlo.

Este protector corre en dos procesos como podemos ver en la imagen

img2

asi que lo cargamos con OllyDBG y buscamos las llamadas a CreateProcessA para caer en la zona caliente del packer

img3

aca estamos en la zona caliente, vemos como crea el proceso hijo en modo suspendido, alloca memoria y despues le escribe algunas cosas en memoria :)

Pongamos un bp en el WriteProcessMemory que le sigue al VirtualAllocEx y miremos que tiene el buffer

img4

ese MZ corresponde a la cabezera de nuestro protegido, en mi caso calc.exe. Esto significa que no tendremos que trabajar con el segundo proceso porque el primero ya nos da el programa en bandeja de plata.

Lo unico que tenemos que hacer ahora es alinear y dumpear

Para alinearlo, cambiamos el RawOffset y RawSize de cada seccion por su VirtualOffset y VirtualSize respectivamente.

img5

y hacemos un dumpeado de memoria con por ejemplo, el dumper del plugin IsDebuggerPresent

img6

Obteniendo un PE valido y funcional.

Automatizarlo con TitanEngine es bastante sencillo, los pasos a seguir serian:

  • Setear un BP en WriteProcessMemory con la funcion SetAPIBreakPoint.
  • El callback encargado de procesar ese breakpoint, alineara y dumpeara la imagen :)

Para dumpear regiones de memoria tampoco nos tenemos que complicar mucho, ya que TitanEngine nos provee de la funcion DumpMemory.

Eso es todo amigos, un packer facilito siempre y cuando ataquemos el primer proceso. En las primeras pruebas arranque trabajando con el segundo proceso y la verdad es que cuesta mucho trabajar con los 2 procesos a la vez debido a que el SDK aun no nos provee de dichas funciones y lo tenemos que hacer a mano.

Todo este proceso fue automatizado en el siguiente plugin: bin src

p.d. Para los que estan interesados en crear algun plugin para FUU, les paso la buena noticia que ya no es necesario el uso de la funcion _DoUnpack para elegir setear nuestro primer callback.

Ahora directamente trabajamos con InitDebugEx que como ultimo argumento nos permite definir un bp que se ejecutara cuando llegue al callback del debuggee.

Tengan bien presente esto, ya que si tratan de definir bp en API's sin haber iniciado el DebugLoop, esta funcion no procesara el LOAD_DLL (CodeException 06) y por lo tanto no podran setear los bp debido a que no estan cargadas las dll's.

domingo, 28 de noviembre de 2010

Lamerz!



Hola!,

este pequeño post es para contarles algo sobre lo cual tal vez ya esten al tanto.

La semana pasada, un compañero de la lista de Crackslatinos me señalo un post en un blog, ese post era el siguiente:

http://martik-scorp.blogspot.com/2010/11/martk-unpacker.html

Seguramente, ese link no les va a funcionar, sin embargo, todavia se puede acceder desde la cache de google: http://goo.gl/0J0o9

Bajo una vista rapida no parece nada del otro mundo, otra tool para desempacar ... pero mirando detenidamente, veo que tiene muchas similitudes con FUU:

Epa!, los mismos plugins que FUU?, las mismas tools que FUU?. Bueno, pero FUU es open source bajo GPLv3, con lo cual, cualquiera puede agarrar el source, agregar nuevas funcionalidades y hacer su propio release, obviamente bajo la misma licencia que el proyecto original, ademas, esta obligado a dar creditos al autor original. Obviamente, las modificaciones hechas:


7. Additional Terms. “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: * a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or * b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or * c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or * d) Limiting the use for publicity purposes of names of licensors or authors of the material; or * e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or * f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.

Pero cual fue la sorpresa? bueno, primeramente, no habia ninguna mejora a simple vista pero lo que si se podia observar era que todas las strings habian sido editadas:
Y peor todavia, en los plugins los creditos habian sido editados tambien, atribuyendole los creditos a un tal MART!K:

Para los detallistas, se puede observar que los espacios sobrantes en las strings fueron reemplazados por espacios en blanco, lo cual me da la idea de que ni siquiera se tomo el trabajo de compilar nuevamente el proyecto sino que mediante algun tipo de editor de recursos como ResHackers, simplemente edito los strings, cambio un icono y un BMP.

Al ver esto, me senti un boludo, por que? porque todo el laburo que habia hecho y compartido con la comunidad, de buena fe y con muchas ganas, habia sido plagiado.

Luego de ver todo esto, decidi enviar un mail al autor y aca estan los mails intercambiados con el:

---------------
from +NCR/CRC! [ReVeRsEr] to Martik.Panosian@gmail.com
date Tue, Nov 23, 2010 at 2:05 PM

subject FUU & MART!K Unpacker
mailed-by gmail.com

Hi!, i'm the author of FUU (and MART!K Unpacker too¿?), i saw your blog and post about FUU, sorry, MART!K Unpacker. You are stealing a project, and idea just replacing strings???? come on!!! please, write your own version!.

BR,
NCR
---------------

La respuesta fue la siguiente:

---------------
from martik panosian to "+NCR/CRC! [ReVeRsEr]"
date Tue, Nov 23, 2010 at 2:32 PM

subject Re: FUU & MART!K Unpacker

mailed-by gmail.com
signed-by gmail.com

hello, yes, you right, but the source code is free, isnt it? btw, i appreciate your work. i dont see any wrong thing with what i was done!
---------------


A lo cual conteste:
---------------
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Tue, Nov 23, 2010 at 2:34 PM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com

yes, but i don't see any link or mention to the original project, so .....
---------------

Y agregue lo siguiente:

---------------
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Tue, Nov 23, 2010 at 2:37 PM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com


in the readme and license you saying that YOU create the software and that's no true, so, please add a mention to the original project and author.


BR,

NCR
---------------

Despues de un rato, respondio lo siguiente:

---------------
from martik panosian to "+NCR/CRC! [ReVeRsEr]"
date Tue, Nov 23, 2010 at 2:49 PM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com
signed-by gmail.com


ok, you right. i will mention to your blog and original software as soon as possible. sorry about that. p.s. now im on mobile. as soon as i get my pc, i'll fix that.
---------------

Con lo cual respondi:
---------------
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Tue, Nov 23, 2010 at 2:50 PM

subject Re: FUU & MART!K Unpacker

mailed-by gmail.com


Thanks!
---------------

Luego de esto, la mencion fue agregada pero los creditos al proyecto y autor original tanto en el binario como en los plugins seguian (y siguen) sin aparecer, con lo cual, envie tres nuevos mails al autor y obviamente, ya no tuve mas respuestas de su parte:

---------------
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Tue, Nov 23, 2010 at 3:02 PM

subject Re: FUU & MART!K Unpacker

mailed-by gmail.com


btw, i can't see any new feature in your version, it would be great if you contribute to the original project or add something new to your own version.


Cheers,

NCR
---------------

---------------
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Wed, Nov 24, 2010 at 11:44 AM

subject Re: FUU & MART!K Unpacker

mailed-by gmail.com

Thanks for adding the mentions to FUU in your blog. Btw, you should do it in your package too and release the modified source code of you tool, remember that the FUU project is under GPLv3, so, if you release a modified version of my sources, then, you must release those modified sources.


Have a nice day.

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

---------------
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Wed, Nov 24, 2010 at 11:54 AM

subject Re: FUU & MART!K Unpacker

mailed-by gmail.com


one last thing: the log messages must remain as the original, for example, in the aspack plugin it says: "Developed by: Mart ik Panosian" and we all know that is not true, so, please, do it in the right way.
GNU legal team was contacted in order to verify that you are complying with the GPLv3 license.
---------------

Luego, MCKSys, de la lista de Crackslatinos, hizo la denuncia pertinente a la gente de blogger y esta fue la siguiente:

---------------
from MCKSys Argentina reply-to crackslatinos@googlegroups.com to crackslatinos@googlegroups.com
date Wed, Nov 24, 2010 at 9:38 PM
subject Re: {CrackSLatinoS} Malas noticias NCR

mailing list Filter messages from this mailing list
mailed-by googlegroups.com

signed-by googlegroups.com


Bueno, algo es algo. Reescribo el mensaje recibido por la denuncia que hice:
Hemos recibido su aviso de incidente de la DMCA en http://martik-scorp.blogspot.com/2010/11/martk-unpacker.html con fecha del 23.11.2010 y hemos revisado el contenido que supuestamente infringe la ley. De acuerdo con nuestra política, hemos dejado el contenido sin conexión y se ha informado de la reclamación al autor del blog. Si en esta entrada vuelve a aparecer el contenido objeto de la infracción, le rogamos que nos informe de ello para tomar las medidas oportunas.

Atentamente,

El equipo de Blogger

Esperemos que sirva para algo...
---------------

Luego de eso, su post en el blog fue removido.

Ademas, otra persona muy reconocida del ambiente, Nicolas Brulez, al cual le agradezco la gentileza, hizo un pequeño analisis sobre este tal "MART!K":

http://omgwtfhax.org/

Luego, en los foros de ARTeam y tuts4you me dieron mas ejemplos sobre este tipo, que al parecer, es un lamer bien conocido en el ambiente (no lo era hasta ahora por mi), se encarga de rippear muchos de los releases que la scene va sacando, de hecho, si miran en su web van a ver muchos releases de grupos conocidos pero obviamente rippeados por el.

Agradezco tambien a Guan de Dio por poner un mensaje en su blog: http://guandedio.no-ip.org/

Ah, algo que me olvide de mencionar es que la licencia de este tal "MART!K Unpacker" no es la GPLv3 sino "MART!K License".


Que quiero exponer con todo esto? pues que un software OpenSource es libre pero no en el sentido de "Cerveza gratis" como bien dice la GNU, sino en el sentido de que cada uno puede agarrar ese codigo, modificarlo, distribuirlo, copiarlo pero siempre y cuando reconozca al autor original y coloque los creditos correspondientes, aunque la licencia no lo este obligando, siempre es de buena educacion dar creditos al autor correspondiente.

Asi que por favor, a no chorear!!! :)

Hasta la proxima!.

Saludos.

UPDATE (14/12/2010): Parece que el mismo día que armé este post, y al ver que su post original en su blog fue removido por la gente de Blogger, el amigo Mart!k abrió un nuevo blog en wordpress con el mismo post sobre "su" unpacker: http://martik2scorp.wordpress.com/2010/11/28/martk-unpacker-1-0/. Triste! pero ... que se puede esperar de un lamer?.

martes, 12 de octubre de 2010

Nuevo plugin para FUU - dePeX

Hola!,

despues de un tiempo sin ningun post queria decirles que en el blog de FUU hay un nuevo post anunciando un nuevo update para FUU.

Además, hay una pequeña reseña del packer.

Acá pueden verlo!.

Saludos.

domingo, 19 de septiembre de 2010

Tutorial - Writing Dynamic Unpackers for Fun with TitanEngine

Hola!,

hace rato que tenia este tutorial guardado a medio terminar y como soy de los que siempre terminan lo que empiezan decidi que era un buen momento para hacerlo.

En este tutorial se intenta explorar un poco toda la funcionalidad de TitanEngine para construir diferentes tipos de herramientas. Debo aclarar que no es la version final del tutorial, me quedaron un par de cosas que hubiera querido agregar pero si me detenia mas tiempo el tutorial iba a quedar en el olvido.

De todas maneras, las voy a agregar pero cuando tenga un poco mas de tiempo.

Cualquier correccion que quieran hacer ya saben donde encontrarme. Si les parece que habria que agregar algo mas o detallar algo no duden en escribirme.

Este tutorial va a ser agregado como documentacion en la web del proyecto FUU. Por ahora solo tengo la version en español pero pronto lo vamos a hacer en ingles.

Bueno, aca les dejo los links para la descarga: Descarga1 - Descarga2

Espero que les sea util!.

Hasta pronto!.

jueves, 22 de julio de 2010

QuickPost - FUU - Blog and Twitter

Hola!,

este post es solo para dejarles saber que he creado un blog y un twitter exclusivos para las novedades que vayan saliendo sobre FUU.

Blog: http://fuuproject.wordpress.com
Twitter: http://twitter.com/fuuproject

Disfruten!

viernes, 16 de julio de 2010

New FUU Plugin - deExeFog!

Hola!,
quienes me conocen, saben que continuamente estoy intentando hacer algo, escribiendo algun tutorial, programando alguna toolcita, etc; ahora, quiero hacer una cosa: por cada nuevo plugin de FUU que haga voy a escribir un post comentando un poco los trucos que utiliza el packer para poder facilmente identificar las zonas importantes a la hora de desempacar.
En este primer post, vamos a hablar de un packer sencillo, exeFog, mas particularmente, nos centraremos en exeFog v1.x, desconozco si existe alguna version 2.x, si alguno tiene un exe, dll, ocx o lo que sea packeado con alguna otra version de exeFog, no tiene mas que enviarla para que la pueda estudiarla y agregarle soporte al correspondiente plugin.

La idea de este y los siguientes post no es la de realizar un analisis detallado sobre el packer como suelo realizar en los tutoriales, sino que veremos las partes importantes nada mas como para vencerlo y que son utilizadas luego en el plugin.

Voy a basarme en este crackme: http://www.tuts4you.com/request.php?1093

Por ejemplo, si cargamos el programa packeado en Olly (sin plugins) y le damos a F9 (Run), veremos que Olly se detiene en una exception, mas especificamente, un DIVISION_BY_ZERO:


Esto se debe a un viejo y conocido truco anti-debug conocido como IsDebuggerPresent pero en este caso, el truco no invocando explicitamente a la API IsDebuggerPresent, sino realizando un inline de esta funcion.

Si comenzamos a tracear, veremos que primeramente, llegamos a un loop en el cual se desexorea codigo, este codigo no es mas que otra parte del stub de desempacado del programa:


Como vemos, primero coloca en EBX un puntero a una zona un poco mas abajo de la instruccion "loopd", coloca en ECX un offset, en este caso "0x3c8" y en AL la key para xorear, en este caso "0x8c", luego, solo va indexando en EBX+ECX y xoreando cada byte, luego, vuelve a tomar otro byte en AL y a repetir la operacion.

Una vez que pasamos esto, si llegamos a la zona del inline IsDebuggerPresent:


Como pueden observar, solo esta accediendo al flag "BeingDebugged" que se encuentra en la PEB:
typedef struct _PEB {
BYTE Reserved1[2];
BYTE BeingDebugged;
BYTE Reserved2[1];
PVOID Reserved3[2];
PPEB_LDR_DATA Ldr;
PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
BYTE Reserved4[104];
PVOID Reserved5[52];
PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;
BYTE Reserved6[128];
PVOID Reserved7[1];
ULONG SessionId;
} PEB, *PPEB;
Se encuentra en el campo [2] de la PEB del proceso (movzx eax, byte ptr ds:[eax+2]).

Como vemos, a ese byte, primero le aplica un NOT y luego un AND con 1, con lo cual, si ese byte esta en 1 (quiere decir que el proceso esta siendo debuggeado), el resultado de esas dos operaciones sera 0 y si el byte esta en 0 (quiere decir que el proceso no esta siendo debuggeado) pues el resultado de esas dos operaciones dara 1.

Cual es el truco en todo esto? pues que este valor es utilizado como divisor y dividendo en una division un poco mas adelante:


Como vimos, el resultado del NOT y AND lo colocaba en EBX pero a su vez quedaba en EAX tambien, con lo cual si el resultado del NOT y AND es 0 pues sera 0 / 0 = ERROR!!!.

Para solucionar esto, simplemente debemos de setear ese byte a 0 para que el resultado del NOT y AND sea 1. Podemos hacerlo de varias maneras, la mas rapida es: cuando estemos en el EP (EntryPoint) del packer, simplemente hacemos CTRL+G y ponemos "EBX" y cambiamos el valor del segundo byte a 0. Por que asi? pues porque EBX siempre apunta a la PEB cuando estamos parados en el EP:


Luego, tenemos dos partes importantes mas:

1) Donde resuelve los imports.
2) Donde salta al OEP (Original Entry Point)

Ambas zonas son facil de encontrar, miremos un poco el codigo y vamos a ver que aqui resuelve las dlls importadas por el programa:


Si miramos los registros en este momento, podremos ver que EBX contiene un puntero al string de la dll importada:


Luego, en esta zona, veremos que resuelve las funciones importadas por cada dll:


y si miramos los registros, veremos que EAX contiene el puntero al string de la funcion importada y EDI el puntero al lugar en la IAT donde esa funcion deberia de encontrarse en el programa original:


Ah, antes de continuar, queria comentarles que ademas, exeFog, realiza comprobaciones en los primeros bytes de las APIs a las cuales va a llamar para ver si hay un breakpoint colocado ahi:


Ahi pueden ver un ejemplo de como, luego de resolver la funcion y colocar el puntero en EAX, verifica que el primer byte de esa funcion no contenga un breakpoint (0xCC). Con colocar hardware breakpoints o colocar los breakpoints por software en la segunda instruccion de la API (o en el RET) bastara para bypassear la comprobacion.

Bien, finalmente, el lugar en el cual se salta al OEP es este:


Llegado al "ADD", ESP contiene el offset al EP y EBP la ImageBase del programa, con lo cual, al sumarlo dara como resultado el OEP y al tomar el RET quedaremos parados ahi:



Para realizar el plugin, los pasos que realice fueron los siguientes:

1) Buscar el patron del loop que desexorea el codigo.
2) Pasar el loop anterior y realizar una busqueda de los patrones de codigo que resuelven la IAT, nos dan el salto al OEP y realizan la verificacion de BeingDebugged. Esto lo hago seteando callbacks para cada una de las tareas.
3) Cuando salta el callback en el truco anti-dbg lo unico que hago es colocar EAX en 1 luego el AND y antes del MOV EBX, EAX, con eso me aseguro de que EAX siempre es 1.
2) Cuando salta el callback de LoadLibraryA solo tomo el valor de EAX y lo voy agregando a la IAT.
4) Cuando salta el callback de GetProcAddress simplemente tomo los valores de EAX y EDI y los agrego en la IAT.

La el plugin (dll) lo pueden conseguir aca: http://tinyurl.com/2arrnct

El source code del plugin lo pueden conseguir aca: http://tinyurl.com/2wz5bty

Hasta el proximo post!.

miércoles, 7 de julio de 2010

FUU v0.1.1 Beta - Minor Release


Hola!,

bueno, luego de un tiempo sin actualizaciones al final sacamos una nueva version de FUU. Esta nueva version es mas que nada un minor release para corregir un par de cosas que habian quedado muy feas en la primera version.

Alguna de las cosas que se corrigieron son la funcion de "Refresh" en la GUI y un par de errores logicos en el codigo, tanto de la GUI como de los plugins. Ademas, se agrego la posibilidad de poder guardar el dumpeado resultante del proceso de unpacking en el lugar que uno elija.

Tengo que agradecer a toda la gente que se acerco a darme una mano con el proyecto, como GUAN, Eddy, Marciano, Mario Vilas y Erisoft. Todos ellos estuvieron ayudandome tanto para testear la herramienta y reportar bugs, como para colaborar con codigo e ideas para futuras versiones como con samples para poder realizar pruebas "particulares".

Un amigo, GUAN de Dio, se ha sumado al proyecto como colaborador migrando la version de 32 bits a 64 bits. Lamentablemente, en este release no pudimos incluirla porque estamos teniendo problemas con el SDK TitanEngine y su soporte para 64 bits con MASM y VS (Visual Studio), pero esperamos prontamente poder solucionar esto y lanzar finalmente una version de 64 bits.

Quisiera ademas aprovechar un poco para aclarar algunas cosas. He visto por al red algunos comentarios de algunas personas diciendo cosas del estilo: "Para que usar FUU si PEiD con plugins va mejor". Bueno, primero que nada quisiera aclarar que la idea principal de FUU es la de un proyecto OpenSource donde todo el mundo pueda colaborar. PEiD en cambio es un proyecto No-OpenSource. Ademas, agregar que la palabra "Universal" en FUU no significa un unpacker generico sino que con esa palabra intentamos describir lo que en un futuro FUU puede llegar a ser: al ser un proyecto OpenSource en el cual todo el mundo interesado puede colaborar con sus plugins y unpackers, entonces, podriamos desarrollar un unpacker para cada proteccion conocida hasta el momento, eso es lo que quiero decir cuando digo que FUU es "Universal Unpacker".

En fin, cualquier sugerencia, reporte de bugs, aporte para el proyecto es bienvenido y solo tienen que sumarse a nuestra lista de correo o enviarme un mail (en el caso de respoderle a una persona en particular de manera privada hace que el proyecto deje de tener sentido, la idea es que todos discutamos en la lista las ideas y aportes para FUU).

Nuevamente, agradecer a todos aquellos que colaboraron con el proyecto!!!.

Las ideas aportadas fueron muy buenas y sin dudas las vamos a ir agregando de a poco en los posteriores releases.

Ah, antes de que me olvide, prometo actualizar de manera algo mas periodica que hasta ahora la seccion de plugins, subiendo nuevos sources de nuevos plugins (siempre y cuando el tiempo me lo permita).

Web del proyecto: FUU

FUU v0.1.1 Beta Download link: FUUv0.1.1b

Disfruten!.

Hasta el proximo release!.