NOTE: I tried this method with Gingerbread, I don't know if this will work with other versions.
The method is far from easy, but it works if none of the existing exploits and tricks don't.
Ok, there are some simple-like steps to root your phones:
1. If you have an unrooted gingerbread, ask for a rooted gingerbread userdata partition image (aka CG37) with a modified local.prop file and USB debugging enabled.
The value that you need to modify is ro.sys.atvc_allow_all_adb from 0 to 1.
IMPORTANT: The best you can do is to double wipe the phone and then modify local.prop an allow USB debugging, so the data partition doesn't have any of your personal information.
Then you can create a userdata partition image by typing this in the shell (with root access)
dd if=/dev/block/userdata of=/sdcard/CG37.smg
busybox dd if=/dev/block/userdata of=/sdcard/CG37.smg
2. Once you got your CG37.smg in the SD card, you will have to boot into linux (so you can use sbf_flash).
3. When you are in linux, you need to extract the folder contained in the zip that you can download here mediafire.com/?n100jj66130lgra
4. Then you need to copy the CG37.smg and your original SBF (the non rooted one) to that folder.
5. Now you'll have to start a terminal with root permissions, and move to the folder by typing
4. Then you need to resize that partition to 200 Mb, since sbf_flash won't allow you to flash a big image (approx. 1,1 Gb). You have to type this
efsck -f CG37.smg resize2fs CG37.smg 200M
chmod +x sbf_flash
./sbf_flash -r --userdata CG37.smg ORIGINAL.sbf
and let it its work.
5. Once the phone started up, you now need to run this command
6. Now you have your phone rooted. You can just reboot into recovery mode and do a double wipe, because the files that we needed are now in system partition.