Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Programming detective work

Programming detective work

Scheduled Pinned Locked Moved The Lounge
question
19 Posts 9 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Franc Morales

    I have a program that I need to find out which compiler produced. I know it was VS6 but can't figure out if it was the Standard, Professional, or Entreprise editions. Does anyone know where on the PE header (or elsewere) that information could be found?

    M Offline
    M Offline
    Michael Dunn
    wrote on last edited by
    #6

    The only thing I can think of is that the less-expensive versions of the compiler didn't do optimizations. But that fact wouldn't show up in the PE header, you'd have to analyze the compiled code.

    --Mike-- Visual C++ MVP :cool: LINKS~! CP SearchBar v3.0 | C++ Forum FAQ I work for Keyser Söze

    F 1 Reply Last reply
    0
    • M Michael Dunn

      The only thing I can think of is that the less-expensive versions of the compiler didn't do optimizations. But that fact wouldn't show up in the PE header, you'd have to analyze the compiled code.

      --Mike-- Visual C++ MVP :cool: LINKS~! CP SearchBar v3.0 | C++ Forum FAQ I work for Keyser Söze

      F Offline
      F Offline
      Franc Morales
      wrote on last edited by
      #7

      Yes, I have reached a similar conclusion. Thank you for the reply.

      B 1 Reply Last reply
      0
      • F Franc Morales

        Yes, I've found linker information but still no way to differentiate the editions based on the PE header. My mistake, I fear. What is clear, though, is that the binaries produced by different editions are different. There must be a way to tell them appart... aside from the evident difference in size.

        D Offline
        D Offline
        Dr Russell
        wrote on last edited by
        #8

        I think the differences you are observing is the embedded timestamp. Every time you compile a program, the .exe is different! It doesn't matter if the source code changed or not. MS executable programs (PE format) do not lend themselves to being binarily compared after they have been recompiled.

        1 Reply Last reply
        0
        • F Franc Morales

          Yes, I have reached a similar conclusion. Thank you for the reply.

          B Offline
          B Offline
          Buzzby 0
          wrote on last edited by
          #9

          Can you infer the version based on referenced assemblies? Aren't there some assemblies that aren't added automatically to projects in the different versions and doesn't the enterprise version have some assemblies not normally available in the other versions?

          A 1 Reply Last reply
          0
          • B Buzzby 0

            Can you infer the version based on referenced assemblies? Aren't there some assemblies that aren't added automatically to projects in the different versions and doesn't the enterprise version have some assemblies not normally available in the other versions?

            A Offline
            A Offline
            azonenberg
            wrote on last edited by
            #10

            Referenced assemblies? In VC6? This app is all native code.

            B 1 Reply Last reply
            0
            • A azonenberg

              Referenced assemblies? In VC6? This app is all native code.

              B Offline
              B Offline
              Buzzby 0
              wrote on last edited by
              #11

              Doh! Guess who weren't readin' too good... Oh OH! I read this http://msdn2.microsoft.com/en-us/magazine/cc301805.aspx[^] In the IMAGE_OPTIONAL_HEADER there are linker version bytes:MajorLinkerVersion and MinorLinkerVersion. MajorLinkerVersion The major version of the linker used to build this executable. For PE files from the Microsoft linker, this version number corresponds to the Visual Studio version number (for example, version 6 for Visual Studio 6.0). BYTE MinorLinkerVersion Otherwise you can do some figuring from linker options that were added/changed in succeeding versions (like /merge?) or perhaps defaults that were used in specific versions? Like didn't the VS6 linker start sections at the same offset which produced larger exe's than the previous version? And while you don't have references, can you look at the run time libraries that are linked in? I hope this redeems me somewhat and helps you somewhat :)

              A F 2 Replies Last reply
              0
              • B Buzzby 0

                Doh! Guess who weren't readin' too good... Oh OH! I read this http://msdn2.microsoft.com/en-us/magazine/cc301805.aspx[^] In the IMAGE_OPTIONAL_HEADER there are linker version bytes:MajorLinkerVersion and MinorLinkerVersion. MajorLinkerVersion The major version of the linker used to build this executable. For PE files from the Microsoft linker, this version number corresponds to the Visual Studio version number (for example, version 6 for Visual Studio 6.0). BYTE MinorLinkerVersion Otherwise you can do some figuring from linker options that were added/changed in succeeding versions (like /merge?) or perhaps defaults that were used in specific versions? Like didn't the VS6 linker start sections at the same offset which produced larger exe's than the previous version? And while you don't have references, can you look at the run time libraries that are linked in? I hope this redeems me somewhat and helps you somewhat :)

                A Offline
                A Offline
                azonenberg
                wrote on last edited by
                #12

                He's looking to know whether it was a standard or professional edition compiler IIRC - not 6 vs 7 or 8.

                1 Reply Last reply
                0
                • B Buzzby 0

                  Doh! Guess who weren't readin' too good... Oh OH! I read this http://msdn2.microsoft.com/en-us/magazine/cc301805.aspx[^] In the IMAGE_OPTIONAL_HEADER there are linker version bytes:MajorLinkerVersion and MinorLinkerVersion. MajorLinkerVersion The major version of the linker used to build this executable. For PE files from the Microsoft linker, this version number corresponds to the Visual Studio version number (for example, version 6 for Visual Studio 6.0). BYTE MinorLinkerVersion Otherwise you can do some figuring from linker options that were added/changed in succeeding versions (like /merge?) or perhaps defaults that were used in specific versions? Like didn't the VS6 linker start sections at the same offset which produced larger exe's than the previous version? And while you don't have references, can you look at the run time libraries that are linked in? I hope this redeems me somewhat and helps you somewhat :)

                  F Offline
                  F Offline
                  Franc Morales
                  wrote on last edited by
                  #13

                  Thank you for putting time into this. As another poster said, I am trying to determine which version of VS6 was used. It turns out that the hearders don't contain that information _or_ that information is included in an undocumented fashion. I can tell you that tools such as PE Explorer see no difference between editions. You are right about the linker start sections, these vary. However, I have not been able to determine how it conclusively applies to each edition. To my knowledge, run times don't change. I was familiar with the link but, nonetheless, thanks again for putting time into this.

                  1 Reply Last reply
                  0
                  • F Franc Morales

                    I have a program that I need to find out which compiler produced. I know it was VS6 but can't figure out if it was the Standard, Professional, or Entreprise editions. Does anyone know where on the PE header (or elsewere) that information could be found?

                    T Offline
                    T Offline
                    txALI
                    wrote on last edited by
                    #14

                    Have you tried PEiD: http://protools.cjb.net/[^]

                    F 1 Reply Last reply
                    0
                    • F Franc Morales

                      I have a program that I need to find out which compiler produced. I know it was VS6 but can't figure out if it was the Standard, Professional, or Entreprise editions. Does anyone know where on the PE header (or elsewere) that information could be found?

                      K Offline
                      K Offline
                      kinar
                      wrote on last edited by
                      #15

                      I've read this entire thread and unfortunately I don't have any insight as to your problem. However, the thread did pique my interest. I am curious as to why you would need to know this information? I can somewhat understand needing to know which version of a compiler was used but why woudl you possibly need to know what edition?

                      F 1 Reply Last reply
                      0
                      • T txALI

                        Have you tried PEiD: http://protools.cjb.net/[^]

                        F Offline
                        F Offline
                        Franc Morales
                        wrote on last edited by
                        #16

                        Unfortunately, it did not help me on this particular endeavour. Still, I didn't know about this tool. Much, much appreciated.

                        T 1 Reply Last reply
                        0
                        • K kinar

                          I've read this entire thread and unfortunately I don't have any insight as to your problem. However, the thread did pique my interest. I am curious as to why you would need to know this information? I can somewhat understand needing to know which version of a compiler was used but why woudl you possibly need to know what edition?

                          F Offline
                          F Offline
                          Franc Morales
                          wrote on last edited by
                          #17

                          It is a freak situation involving lost source code that, depending on the edition, could be located on a different part of the planet... and, so far, it is looking quite grim....

                          1 Reply Last reply
                          0
                          • F Franc Morales

                            Unfortunately, it did not help me on this particular endeavour. Still, I didn't know about this tool. Much, much appreciated.

                            T Offline
                            T Offline
                            txALI
                            wrote on last edited by
                            #18

                            Email to PEiD author - s/he probably can help you

                            F 1 Reply Last reply
                            0
                            • T txALI

                              Email to PEiD author - s/he probably can help you

                              F Offline
                              F Offline
                              Franc Morales
                              wrote on last edited by
                              #19

                              My next thought.... thanks for putting time into this.

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • World
                              • Users
                              • Groups