Ich versuche zu verstehen, wie Software App-V und Sandboxie ( Ссылка ) arbeiten. Aber für das Leben von mir kann ich mir nichts vorstellen, was das möglich machen könnte. Wie fangen sie API-Aufrufe ab und überlisten die Zielsoftware? Wenn jemand sagen würde, dass es nur Magie und Feenstaub ist, würde ich ihnen glauben. Im Ernst, gibt es irgendwelche Whitepaper, die Lösungen für dieses Problem diskutieren?
Wenn das auf der CLR-Ebene möglich ist, dann wäre das gut, aber ich bin bereit, nativ zu werden, wenn ich muss.
Sandboxie tut dies, indem er Code in die Kern-Windows-API einfügt, genau wie ein Virus (weshalb Vista x64 dieses Verhalten verhindert und warum Sandboxie unter diesem Betriebssystem nicht funktioniert).
Hier ist ein Projekt, das das API-Hooking erklärt. Ich habe gelernt, wie all das funktioniert, indem ich den Quellcode für Metamod: Source (verwendet für SourceMod for CounterStrike: Source :)) lese / p>
Ich weiß nicht, wie MS es gemacht hat, aber hier ist die grundlegende Theorie von einem Weg, es zu tun ...
Sie wollen sich in die Systemaufrufe einklinken (ähnlich wie beim Interrupt).
Hoffe, das hilft.
Schauen Sie sich die Wikipedia-Seite auf X86 Virtualization an, in der sowohl die Software-Virtualisierung (frühe VMWare , Wine, Sandboxie und in gewissem Maße App-V) und die modernere Hardware-Virtualisierung (Hyper-V, VMWare, andere).
Ich gehe davon aus, dass Sie speziell nach Software-Virtualisierung suchen. Wenn Sie .NET (oder eine beliebige CLR) verwenden, abstrahieren Sie sich bereits etwas von der CPU-Architektur, insbesondere mit der 'AnyCPU' Ziel.
Tags und Links .net c# c++ virtualization native