qilingframework / qiling

A True Instrumentable Binary Emulation Framework
https://qiling.io
GNU General Public License v2.0
5.11k stars 742 forks source link

System-Wide Emulation for Windows #1450

Open joeyoropesa-dev opened 8 months ago

joeyoropesa-dev commented 8 months ago

Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] No, the problem is not the reason for this suggestion : ) Describe the solution you'd like Send us a pull request always help, or any pseudo code might be useful. Well, I don't have any PoC of this idea but I believe that skilled devs will see an potential from this and try to make something cool

It would be nice if an dll that is responsible for emulation gets called in Windows for any executable, that would lead to being able to run any executable for any architecture on Windows natively. That dll library also needs to directories for each architecture where the libraries for the target architecture emulation will be found and used for full support of those apps and full functionality.

For example, an Intel/AMD CPU on Windows 64-bit will be able to execute ARM64 apps easly. Windows on ARM (Insider Builds) provides their System32 folder with all arm64 and arm dlls (libraries) and the loader itself. So, an Quiling System-Wide Emulation library for example C:\Windows\System32\libquiling.dll should try to detect is there any folder C:\Windows\System_%ARCH% being created and in this case cloned System32 folder from Windows on ARM version of Windows into this 64-bit OS C:\Windows\System_ARM64 shoud use ARM64 emulation to load required drivers, libraries from that directory for each executable that requires arm64 support to work

It will take more free space since we have basically two versions of System32 folders just their name is different but it will load natively any ARM64/ARM apps on Intel/AMD machine running just an normal version of Windows on x64 CPU and it will be very optimized and perfect for executing those apps - support problems and missing dlls will not be detected since that library is taking care of paths that is giving to each execution that is running under an type of CPU emulation.

If this is too hard, an UEFI boot manager that emulates correct CPU instructions and architecture for detected Windows bootloaders will also help since Intel/AMD machines will be able to boot into unmodified version of Windows On ARM and test it natively without needing for any type of Virtual Machine - just running directly from the host machine using an UEFI boot manager that did CPU emulations for selected bootloader to boot from it using that UEFI boot manager. That UEFI boot manager could also be called Quiling Boot Emulator.

Let's hear also from you some ideas for native emulations like this - it would be so cool to see it implemented and to test first test versions of this cool feature : )