IK restraint makes hand rotate weird in relation to gun, how to fix?
You need to change the rig. Now you have almost no control over wrist rotation. Also it's never a good start to have rig rotation and location different then 0,0,0 and scale different then 1. It will in almost every case cause problems after exporting to a game engine, so you need to fix this. As for the rig, you need to make IK targets of the hands chains to be exact copies of hand_l and hand_r bones, parented to the root bone. Then give both hand bones Copy Rotation constraint set to World Space > World Space and Bone target of appropriate IK target bone. This will give you more control and make your work easier.Also use Child of constraint for IK targets to follow gun bones, when you set up the grip (don't forget to click on set inverse after that or you will be disappointed)  It's hard to repeat rigging steps just by reading it and .gif would be to large, so here is a link with your file, but with fixed rig. Compare and learn.Happy New Year :)