x
This website is using cookies. We use cookies to ensure that we give you the best experience on our website. More info. That's Fine
HPC:Factor Logo 
 
Latest Forum Activity

wincepeinfo - A tool to get information about Windows CE exe files

1 2
Karpour Page Icon Posted 2020-12-01 4:08 PM
#
Avatar image of Karpour
Subscribers
H/PC Philosopher

Posts:
439
Location:
Austria
Status:
First release!

https://github.com/HPC-Factor/windows-ce-pe-info/releases

Linux/windows binary are available, both with 0 dependencies

Feel free to test it and let me know if you find any windows ce binaries that don't work!

Readme is here:
https://github.com/HPC-Factor/windows-ce-pe-info
 Top of the page
Karpour Page Icon Posted 2020-12-01 4:38 PM
#
Avatar image of Karpour
Subscribers
H/PC Philosopher

Posts:
439
Location:
Austria
Status:
One thing I would still like to do is print the CE core version. The core version is defined by SubSystemVersion, except with windows CE 1.0

With CE1.0 the SubSystemVersion is either 1.0 (which would be the correct way), or 4.0, which is of course the same as Windows CE 4.0 would use.

My thought process is: If the app was compiled before 2000 (before CE4.0 existed) and is MIPS/SH3, just print 1.0 as CE version, since it's pretty much guaranteed to be a CE1.0 app.

In theory, there could be a PE with build date past 2000, compiled for MIPS/SH3 with version 4.0.
In that case, it's fairly impossible to tell whether it's CE1.0 or 4.0, even though MIPS/SH3 CE4.0 devices are probably limited to some industrial devices.
 Top of the page
Karpour Page Icon Posted 2020-12-01 10:50 PM
#
Avatar image of Karpour
Subscribers
H/PC Philosopher

Posts:
439
Location:
Austria
Status:
Updated some stuff, new release!

Should be fairly useable now Please check the Readme for examples!

I implemented CE version guessing for those CE1.0 titles that wrongly have version 4.0. If it was compiled before 2000 and is SH3/MIPS, it will assume CE1.0 as version.
 Top of the page
smb_gaiden Page Icon Posted 2020-12-01 11:38 PM
#
Avatar image of smb_gaiden
Factorite (Elite)

Posts:
212
Status:
Very nice!
 Top of the page
CE Geek Page Icon Posted 2020-12-02 12:41 AM
#
Avatar image of CE Geek
Global Moderator
H/PC Oracle

Posts:
12,662
Location:
Southern California
Status:
I hope that won't present a problem reading MIPS CE 5.0 apps, like those in some later personal media players like my Viliv X5 and Cowon P5.

Looking at CE 1 files in a hexeditor, I noticed a long time ago that many of those files had 04 00 00 where one would expect to find the OS version. Since it was the first version of CE (and, as C:Amie points out in "History of Windows CE," it was "widely considered to be a public beta" ), there may not yet have been a conclusion about how to number it. At the time I had no idea where they came up with 04 00 00, but the inclusion of the "4.0" designation as an extension of Windows NT, as C:Amie mentioned earlier in this thread, makes sense. Only Microsoft knows, and nowadays they seem to be denying that CE ever existed. (The apps that have 01 00 00 instead of 04 00 00 were presumably written later, possibly even as CE 2.0 was being introduced.)
 Top of the page
Karpour Page Icon Posted 2020-12-02 1:01 AM
#
Avatar image of Karpour
Subscribers
H/PC Philosopher

Posts:
439
Location:
Austria
Status:
MIPS CE5.0 apps won't be a problem, it only does the extra check when the version is exactly 4.0
So unless someone compiles a program for MIPS/SH3 CE1.0 after 2000 that somehow includes the wrong version number, it'll display the correct CE version number!
 Top of the page
stingraze Page Icon Posted 2020-12-02 4:54 AM
#
Avatar image of stingraze
H/PC Vanguard

Posts:
3,656
Location:
Japan
Status:
Very nice!
 Top of the page
C:Amie Page Icon Posted 2020-12-02 8:58 AM
#
Avatar image of C:Amie
Administrator
H/PC Oracle

Posts:
17,952
Location:
United Kingdom
Status:
Another way to ascertain whether it is a CE 1.00 app might be through the linker/compiler version. CE 1.00 apps could only be generated by VC++ 5.0, while CE 2 and higher come from VC++ 6.0. If there is a linker version relating to the clmips.exe / clsh3.exe from VC++ 5, then it's a certainty that it is a CE 1 app.
Also, under CE 1.00 if Win32 method calls are prefixed with PEG instead of using their Win32 standard names (not exclusively, but quite a few), it is a 1.00 app. The bigger headache comes from Windows CE 1.01 which is where they shifted from the PEG prefix to standard Win32 naming conventions. I guess you would need to find some Japanese CE 1.01 apps and see if there is a difference in the PE headers between those and the EN-US ones.
 Top of the page
stingraze Page Icon Posted 2020-12-02 9:23 AM
#
Avatar image of stingraze
H/PC Vanguard

Posts:
3,656
Location:
Japan
Status:
That reminds me, there was the Windows CE 2.12 for devices like Pocket Post Pet. I wonder if that was a build target?

Edited by stingraze 2020-12-02 9:59 AM
 Top of the page
C:Amie Page Icon Posted 2020-12-02 10:04 AM
#
Avatar image of C:Amie
Administrator
H/PC Oracle

Posts:
17,952
Location:
United Kingdom
Status:
There was, 2.10 and 2.12 you had to use Platform Builder as the compiler.
 Top of the page
1 2
Jump to forum:
Seconds to generate: 0.188 - Cached queries : 67 - Executed queries : 9