No recoil can be done just my either patching the call to the function that adds the recoil ( Offsets are in the source code thread. )
No spread is more complicated for private versions. ( On steam, all you need to do is edit perk_weapSpreadMultiplier )