Warning
Extreme Confectionery!
Provides interoperability between various instances of deprecated/obsolete programs in the PE format, system programs and user environment.
Emulates backwards compatible environment of the deprecated/obsolete platforms (as stated by the original platforms provider) on a no more supported hardware.
In case contributor does attempts at reverse engineering: all corresponding contributions should follow Council Directive 91/250/EEC, Directive (EU) 2016/943 of the European Parliament and newer directives related to reverse engineering.
Most countries follow similar rules:
- USA - Digital Millennium Copyright Act
(f) Reverse Engineering. (1) (2) (3)
- United Kingdom - Copyright, Designs and Patents Act 1988 (as amended) Despite Brexit, the UK retained the decompilation exception in Section 50B
- Switzerland - Federal Act on Copyright and Related Rights (1992, amended 2020) Article 21 permits decompilation for interoperability
- Norway - Copyright Act (Lov om opphavsrett til åndsverk) of 2018 Section 39h implements EEA-aligned decompilation rights
- Iceland - Copyright Act No. 73/1972 (as amended) Implements the EEA Agreement including software decompilation provisions
- Japan - Copyright Law (as amended in 2018) Article 30-4 permits reverse engineering for interoperability purposes
- South Korea - Copyright Act (as amended in 2011) Article 101-4 explicitly allows decompilation for interoperability
- Singapore - Copyright Act (2021) Section 54 provides specific exceptions for decompilation
- Australia - Copyright Act 1968 (as amended) Section 47D allows reverse engineering for creating interoperable products
- New Zealand - Copyright Act 1994 (as amended) Section 80A-80C permits decompilation for interoperability
- Canada - Copyright Act (as amended in 2012) Section 30.6 permits reverse engineering for interoperability
- Brazil - Software Law (Law No. 9,609/1998) Article 6 contains specific provisions for reverse engineering for interoperability
- Chile - Intellectual Property Law (Law No. 17.336, as amended in 2010) Article 71Ñ provides for reverse engineering exceptions
- Colombia - Law 1915 of 2018 Article 7 introduces exceptions for interoperability purposes
- Israel - Copyright Law of 2007 (as amended) Section 24(c) permits reverse engineering for interoperability
- South Africa - Copyright Amendment Bill (pending implementation) Includes specific provisions for computer program interoperability
- Morocco - Law No. 2-00 on Copyright and Related Rights (as amended) Contains provisions for software interoperability aligned with EU standards
- China - Copyright Law (as amended in 2020) Article 17 provides limited recognition of software reverse engineering
- Russia - Civil Code of the Russian Federation (Part 4) Article 1280 contains limited decompilation rights for interoperability
- India - Copyright Act, 1957 (as amended) Section 52(1)(ab) provides some limited exceptions but less explicit than EU law
All contributors should be willing to provide evidence of the proper reverse engineering techniques being in use.
Screenshots of the reverse engineering software (with related project files), or videos, or a step by step description of the knowledge obtaining process, applied with the sole goals as described per this guideline (i.e. interoperability). Additional information may be requested.
This documentation approach focuses on demonstrating interoperability purposes rather than requiring exhaustive evidence of each reverse engineering step. Contributors should understand that in case of specific legal questions, more detailed information about their process might be necessary.
Decompilation is strictly limited to what's necessary for interoperability purposes.
Creating an open source, non-commercial, interoperable plugin is beneficial to the public interest and serves essential compatibility purposes.
- Prefer using a clean room implementation approach
- Make sure the necessary information is not already readily available
- Limit the decompilation to the parts needed for interoperability
- Avoid direct copying of code or implementation details
- Include comments in code that reference public documentation where available
As per Article 6 Decompilation 1. (a)
you should own a legal copy/license of the software before doing any attempts at reverse engineering. The software should be officially deprecated/obsolete.
As a safety measure we assume that most contributions obtained a right to use a copy of some of the listed program bundles at some point in their lifetime ("Pro" and other versions included):
- Windows XP
- Windows Vista
- Windows 8
- Windows 8.1
Caution
Windows 7 is still supported or may have technical support being provided
We assume that none of the contributors had the right to utilize any of the "server", "beta" or other editions beyound the desktop ones.
Note
Be very aware before using any knowledge from other reverse engineering projects if they conform to those guidelines
Original
- legaly obtained (partially or fully) copy of a computer program
Some programs are required to be reimplemented to provide the interoperability environment (like cmd.exe
).
Do NOT create computer program substantially similar in its expression to the original one (except when its required for the interoperability):
- Use different programming languages, here we use Hexa and NASM assembly dialect
- Extend default functionality and show this as a clear intent to the user
- Apply visual language (style guide) and naming distinct from the original
- In the properties or other user facing elements textually express program goal is to achieve the interoperability
Microsoft®, Windows™, and the Windows logo are trademarks, or registered trademarks of Microsoft Corporation in the United States and/or other countries.
Other names and brands may be claimed as the property of others.
All code should be under this one or compatible license.
Requires executive capable of the Tofita API set. Load PE and attach Caramel .dll
files into the address space of the process. Remember to run every entry point. FS/GS registers should contain thread-local data and initialization structures.