Last January, I got a little challenge from @hdmoore via my Twitter account: add data to a signed executable without invalidating the Authenticode signature. I updated my Digital signature tool, but I realize now I had only announced the update on Twitter, not on my blog.
The trick is to increase the size of the image data directory for the digital signature and inject the extra data after the digital signature. This way, the Authenticode validation algorithm ignores the extra data, because it considers it to be part of the signature. Use Disitool’s new inject command:
disitool.py inject ms-patch.exe data.bin ms-patch-data.exe
The authenticode signature of ms-patch.exe will remain valid in ms-patch-data.exe, provided that the length of the injected data (file data.bin) is a multiple of 8.
You can use the paddata option to make the injected data size a multiple of 8 if it isn’t:
disitool.py inject --paddata ms-patch.exe data.bin ms-patch-data.exe
Disitool can be downloaded here.