tumagonx / XomPie

Simple tools that might™ make newer application with trivial compatibility issue to run™ on Windows XP
GNU Lesser General Public License v3.0
61 stars 8 forks source link

XomPie

XomPie is pun of XP and Zombie

What XomPie is not XomPie won't turn XP into 7 or anything like that, it follow the principle "keep existing system intact" XomPie don't/won't extend something that can't utilise existing feature in XP, however it may dummified them which to some extend may be useful. The limitation also apply to most newer UI-related and Service-related API which XP simply don't have to begin with.

When Windows run executable, PE loader will check the kind of EXE (is it DOS, Win32, Win64 etc) including subsysver value in the header. When everything OK EXE will launched and start checkin its direct dependencies.

Sometime for example executable made by MinGW-W64, subsysver doesn't match with _WIN32_WINNT value, in this case this step isn't necessary.

When something missing (red) from kernel32.dll you need to rename "kernel32.dll" into "kernelxp.dll" in the dll or exe IAT. One of popular application to do this is PE Explorer from NTCore, though you can do this with sed as well with extra cautions. It is also possible to use manifest to load wrapper (without patching IAT) but since we still need to patch the exe (for subsysver) it's pointless and the method may trigger DEP as well.

Once both solved give your target executable a try.

Basically XomPie forward missing function/API into backported ones from various newer freely available MS runtime dll or simply reuse (reroute) into existing system dlls. When both options not possible XomPie borrow implementation from Wine or make them dummies (if preferable).

Example of "running" apps: Python 3.5, Adobe DNG Converter 9.6, MS Visual True Type

Which APIs exported can be seen in the .def files