Simple tools that might™ make newer application with trivial compatibility issue to run™ on Windows XP
C Batchfile
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
7z.sfx make sfx directly load inf Jul 18, 2017
LICENSE Initial commit Oct 2, 2016
README.md update readme Oct 27, 2016
TODO update TODO Oct 10, 2016
advapixp.c add dummies for event functions Oct 18, 2016
advapixp.def ready for 0.1a Oct 20, 2016
advapixp.dll use cmd instead of bat, fix ordinal import in advapi32 Oct 24, 2016
d2d1.dll rebuild or strip verinfo rsrc to dodge false-positive Jul 19, 2017
d3d10.dll rebuild or strip verinfo rsrc to dodge false-positive Jul 19, 2017
d3d10_1.dll rebuild or strip verinfo rsrc to dodge false-positive Jul 19, 2017
d3d10core.dll rebuild or strip verinfo rsrc to dodge false-positive Jul 19, 2017
d3d11.dll rebuild or strip verinfo rsrc to dodge false-positive Jul 19, 2017
d3dx.dll rebuild or strip verinfo rsrc to dodge false-positive Jul 19, 2017
dwmapi.dll strip verinfo rsrc from dwmapi Jul 19, 2017
dwnl.c add downloader (for updating) from ReactOS 0.4 Jul 13, 2017
dwnl.exe don't upx dwnl to reduce false-positive (remaining FP by Cyren and F-… Jul 19, 2017
dwrite.dll fix import Jul 13, 2017
dxgi.dll rebuild or strip verinfo rsrc to dodge false-positive Jul 19, 2017
gdixp.c add initial gdi32 forwarder Oct 23, 2016
gdixp.def add initial gdi32 forwarder Oct 23, 2016
gdixp.dll at the moment use gdi32 from one-core which has kmt Jul 13, 2017
gsar.exe http://home.online.no/~tjaberg/gsar121.zip Oct 10, 2016
install.cmd cleanup Jul 13, 2017
isadmin.exe admin check Oct 12, 2016
kernelxp.c add GetUserPreferredUILanguages dummy, fix typo in perfile patcher Jun 3, 2017
kernelxp.def add GetUserPreferredUILanguages dummy, fix typo in perfile patcher Jun 3, 2017
kernelxp.dll rebuild Jul 13, 2017
ldd.exe rebuild ldd to dodge false-positive Jul 19, 2017
msiexec7-wine-1.8.5.patch msiexec7: patch for wine msi Nov 1, 2016
msiexec7.exe win7 msiexec with SendTo helper, modded from wine msi Oct 31, 2016
msvcp140.def kernel32 wrapper with some backports Oct 2, 2016
osslsigncode.exe Optional: http://sourceforge.net/projects/osslsigncode/ Oct 11, 2016
pedump.exe add pedump for analysis https://github.com/martell/pedump Jul 18, 2017
peflags.c add peflags by C. Wilson from CygWin rebase (to enable >2GB LAA) Nov 18, 2016
peflags.exe rebuild peflags to dodge false-positive Jul 19, 2017
pehdr-lite.c add pehdr source and rebuild with gcc to dodge false-positive Jul 19, 2017
pehdr-lite.exe add pehdr source and rebuild with gcc to dodge false-positive Jul 19, 2017
rcedit.exe don't upx dwnl to reduce false-positive (remaining FP by Cyren and F-… Jul 19, 2017
shellxp.c Initial shell32 with SHGetStockIconInfo, SHGetFolderPathEx and SHGetK… Oct 23, 2016
shellxp.def missing NONAME on ordinals Oct 27, 2016
shellxp.dll missing NONAME on ordinals Oct 27, 2016
updtxompie.cmd forgot ws2_32 Jul 15, 2017
upx.exe Optional: https://upx.github.io/ Oct 11, 2016
userxp.c initial user32 forwarder with SetProcessDPIAware dummy Oct 23, 2016
userxp.def export ordinal forwarder and setprocessdpiaware dummy Oct 27, 2016
userxp.dll export ordinal forwarder and setprocessdpiaware dummy Oct 27, 2016
uspxp.c add uspxp.dll will to install need powerpoint viewer 2010 (legal way) Nov 2, 2016
uspxp.def Initial usp10 forwarder. but probably not made because office 2010 us… Oct 14, 2016
uspxp.dll add uspxp.dll will to install need powerpoint viewer 2010 (legal way) Nov 2, 2016
uxtheme32.manifest add uxtheme control manifest Oct 23, 2016
wer.dll WER dummy Oct 29, 2016
wevtapi.dll wevtapi dummy Oct 29, 2016
wineconsts.c enable idn* functions Oct 14, 2016
wined3d.dll rebuild or strip verinfo rsrc to dodge false-positive Jul 19, 2017
wineft2.dll updated with wine 2.11 Jul 13, 2017
winetxc.dll updated with wine 2.11 Jul 13, 2017
ws2_xp.c add poll() fallback from curl to winsock Nov 21, 2016
ws2_xp.def add poll() fallback from curl to winsock Nov 21, 2016
ws2_xp.dll add poll() fallback from curl to winsock Nov 21, 2016
xominstall.cmd too many (!) Nov 18, 2016
xompie.inf missing wineft2 Jul 13, 2017
xpatcher.cmd ldd after patching Jul 13, 2017
xpvcrt.c Initial msvcr120 forwarder for msvcrt Oct 18, 2016
xpvcrt.def rebuild Jul 13, 2017
xpvcrt.dll rebuild Jul 13, 2017

README.md

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.

  • Subsysver issue happen when it set above XP version: 5.1 and can be fixed using open source software called pehdr-lite which can patch the value in the executable. Usually you only do this on *.exe file. It would nice though if there is MITM method that bypass the check...

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

  • Dependency issue can be very complex (please use Dependency Walker to analyse your target). This kernel wrapper behave like api-ms-win.dll does by forwarding existing functions into kernel32.dll and k32* into psapi.dll with additional function from msvcp140.dll and few internal functions from WINE project (see below). In short: very few compared to the total missing API.

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