Program must be developed in any C Windows compiler (well structured C, please - inline assembly is also fine). Programmer should be experienced with assembly language (in terms of both assembling, disassembling, and debugging programs).
We need you to create an emulator for 32-bit Intel code (such as found in EXE files). It only needs to support the 'common' instructions (such as mov, cmp, inc, dec, sub, add, mul, div, jumps, etc). It also needs to emulate a virtual stack, and have proper emulation of all the flags. If it ever comes across any API calls or unknown/unsupported opcodes it should stop emulating at that point. Although it only needs to support common instructions, it should also be able to emulate complex variations of these instructions. For example:
8D843000600000, which disassembles to LEA EAX, [EAX+ESI+6000]
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done. 2) Complete ownership and distribution copyrights to all work purchased.
The project will only be considered complete when the emulator is capable of emulating a UPX-compressed program to the point where the original program has been decompressed (where it jumps to the original entry point). UPX can be found at <[url removed, login to view]>, please use any of the 1.x versions (such as 1.20 or 1.24).
Windows 95, 98, NT4, 2K, XP