You would want to remove the through hulls from the hull. Then you would want to grind the fiberglass to a 12:1 bevel for the thickness of the laminate in the area of the repair. This means that if the fiberglass is 1/2" thick, you would grind a beveled area 6" in radius from the through-hull's original location. Be sure to wash the area well with a good solvent wash like Fiberglass Prep Wash 202 before doing the grinding, since you don't want to grind any oil or wax into the fiberglass.
Then you would wet the area with straight epoxy, and the laminate it with several layers of fiberglass cloth or roving, depending on the thickness of the laminate you need to build up. There are two schools of thought on this. You can start with a small patch and then use increasingly larger patches, or you can start with a large patch and then use increasingly smaller patches. Either will work. The patches should start about 2-3" wider than the actual hole and end up as large as the beveled area, with about 3-4" size difference in diameter between the patches or so. For a 3-4" hole, I'd recommend glassing it over from both sides if you can, but if not, use a backing board on the interior to help keep the patches smoothly integrated to the hull.
Wet each layer out with the minimum epoxy to get it fully wetted out. Having a high-glass to resin ratio will provide the strongest repair.
Once the hole is patched. You will want to use thickened epoxy to fill and fair it so the hull is smooth. Chopped glass fibers or Microballons are both good thickeners to use, but you do have to give the thickened epoxy a final skim coat of unthickened epoxy to seal the microballons after sanding it fair if you use them.
It will be easier and simpler if you use a no-blush epoxy, like MAS epoxy.
The West System's website
has a lot of good articles on this type of work, and they have a newsletter
you can sign up for as well.