dishather/richprint

Do you have plans for recording other Microsoft tool IDs in comp_id.txt?

Closed this issue · 3 comments

There are other Microsoft tools that leave their fingerprints in the P.E. binary Rich header structure.
For example, CvtCIL, Link time code generator (LTCG), program guided optimization (POGO), etc.

https://github.com/avast/pelib/blob/master/src/pelib/RichHeader.cpp
https://hasherezade.github.io/bearparser/_rich_hdr_wrapper_8cpp_source.html
etc.

It seems that we could all benefit from a unified list instead of multiple incomplete implementations.

It sure sounds interesting.
I experimented with LTCG and PGO options for C and C++, and got additional fields in richheader ("Utc1900_LTCG_C", "Utc1900_LTCG_CPP", "Utc1900_POGO_I_C", "Utc1900_POGO_I_CPP" in bearparser repo). I also got "Cvtpgd1900" (00fe), but strangely enough, it has no build number (i.e., comp_id is simply 00fe0000).
I added these fields for current VS2022 releases. Since I use three-letter codes for the tools, the new ones are a bit clumsy... Maybe they need to be longer.

As for the other tools, I am not sure how to get them in the header. E.g., I couldn't get any of these:
AliasObj1400 (00fd)
Utc1900_CVTCIL_C (0106)
Utc1900_CVTCIL_CPP (0107)
Utc1900_LTCG_MSIL (010a)
Utc1900_POGO_O_C (010d)
Utc1900_POGO_O_CPP (010e)
Can you advise how to get them in the rich header?

Well, okay... I've added modern tools (version Utc1900 in bearparser repo), making the file comp_id.txt almost twice as large.
Since I have no means of checking older releases, I marked all added records as interpolated.
I expected to add only VS2022 and perhaps VS2019 records, but ironically, the tools IDs are consistent in VS2022, VS2019, VS2017 and down to VS2015. So the list grew quite large.