How can I make an app think it's running on iOS 5?
Even if you could fool the app, it would crash as soon as it called on a part of the system that exists in iOS 5 but not in iOS 4. Your editing of the file would both have to be the main version requirements check as well as any internal checks that the app makes to determine the capabilities and API present on that device as the program runs. I don't know any developer that just said they need iOS 5 out of spite against people running 4, 3, 2 versions of iOS. It's always been because they need features and code frameworks added in iOS 5 and couldn't code around it in the program. When a developer can do that, they change their app to work on multiple os versions and let you know feature X is disabled or works differently when running on iOS 4. For developers that want to use the latest tools in iOS, it is actually more work for them to keep the older OS support in each build so there needs to be a good financial reason to keep doing that work in many cases. 



Think of the iOS version test as sealing a door to nowhere opening up on the third floor of a building when the fire escape stairs (or balcony or whatever) is not yet built. When the program you deceive into thinking it's running on iOS 5.x calls on code that doesn't exist, the app will crash. 

Apple designed the version check to "lock the door or perhaps the entire wing of that building" in a very visible way. By bypassing this check, it's like removing the "danger / hazard" signs and nailed wood braces covering the opening and letting someone walk out into thin air from that third-floor door to nowhere.