We have an application created with python2.7 and created into an executable using py2exe. However we are getting an issue with Windows 8 certification due to compiler parameters. We would like to have this application Windows 8 certified but we can't get pass the following warning:
=============================================== Windows security features test
WARNING Binary analyzer • Warning: The binary analyzer test detected the following errors: ◦File C:\Program Files (x86)\TestApp\test.exe has failed the DBCheck check. ◦File C:\Program Files (x86)\TestApp\test.exe has failed the NXCheck check.
• Impact if not fixed: If the app doesn’t use the available Windows protections, it can increase the vulnerability of customer's computer to malware.
• How to fix: Apply the SAFESEH, DYNAMICBASE, and NXCOMPAT options when you link the app. See link below for more information: Fixing Binary Analyzer Errors
In order to fix this issue I had to modify the file msvc9compiler.py by changing the following line from:
self.ldflags_shared = ['/DLL', '/nologo', '/INCREMENTAL:NO']
self.ldflags_shared = ['/DLL', '/nologo', '/INCREMENTAL:NO', '/DYNAMICBASE', '/SAFESEH', '/NXCOMPAT']
and rebuild py2exe. Once I have done this the test passed.
I could go about it by having a local patch available to my team but preferably I try to avoid patching the standard python modules.
My question is if there is another way to do this? and whether it would be a good idea to include these flags in future distutils?