There are folks that will say that shims can LOOSEN the sub-floor. (How far DO you bang them in? Do you do one side of the joist or BOTH?)
Soooo, I'll offer 2 alternatives. The first one is for sub-floors where you have access to the joists (ie., your situation.) The 2nd one is for floors where you don't have access to the joists.
Squeak-Relief made by Accuset Tool Company in Troy, MI, comes with an aluminum bracket and custom-sized screws. The enclosed bracket is used instead of the 'sistered' 2 x 4. I've 'heard' it works well.
Squeeeek No More is made by O'Berry Enterprises in Crystal Lake Ilinois. And it's installed ABOVE the squeak through material such as carpeting, hardwood flooring, and the like. It's a special bracket, too, that holds and drives a long, notched screw THROUGH the top covering and into the sub-floor and joist below. The screw eventually disappears as you drive it in. The bracket's purpose is to make sure the screw is driven in to the proper depth. Then, you take the bracket and break off the head and shank of the screw just below the wood. On a hardwood floor, you'll have a small hole that can be patched with wood putty.
There are other materials and methods that can 'fix' this job. My best to ya and hope this helps.