I want to make a custom module to personalize products, such as add text on tshirt, upload images on products and then save it as final product.
I have searched many links, but all extensions are paid.
You don't need an extension for what you want to do.
In the backend go to:
Catalog -> Products.
Choose existing product or New Product.
On Product Page go to Custom Options.
By the way: Paid extensions aren't necessarily useless, as you are suggesting.