Code direkt ausführen

moin

ich wollt wissen wie ein Programm aussehen müsste, dass einen C++ Code ausführen soll,
der allerdings nicht als Datei vorliegt, sondern direkt im Quellcode stehen soll

das Prog dass das bewerkstelligen soll muss in Java oder C/C++ sein
 
c++ code kann man nicht "direkt ausführen", er muss erst kompiliert werden, bevor der Prozessor die Anweisungen versteht.
 
ah sorry falsch ausgedrückt
ich mein dass das fertig kompilierte Programm im Code steht

das ganze soll den Sinn haben einen Code zu entschlüsseln und in dann ohne irgendwo zu speichern auszuführen
damit ihn keiner erkennen kann
 
Meinst du so etwas wie das hier: ?(

Code:
FühreBefehlAus("BEFEHL();"); // diese Anweisung wird dann kompiliert und die Anweisung 'BEFEHL()' wird erst während der Laufzeit ausgeführt?!


MfG, BattleMaker
 
Hört sich für mich bissi nach Trojaner an, der sich inner Datei verstecken soll.
Das kann er auch viel einfacher haben :rolleyes: .

Allerdings bleibt mir der Sinn auch irgendwie verborgen:
Du willst ein Programm haben, welches "innendrin" ein anderes hat und dieses ausführen kann? Das geht - nur wahtscheinlich nicht so wie Du es Dir vorstellst:

Version 1: Code ... "fertiger Programm-Abschnitt" ... Code.
Das Problem mit dem "integrieren" in den Quelltext ist erstens : k.A wie ein C++ Compiler das genau handhabt ;), Du musst aber aufjedenfall die Binary integrieren (wenn ich Dich richtig verstanden habe) - es geht zumindest unter MASM und imho kann man es auch bei C++ hinbiegen (eventuell mit Tricks). Wahrscheinlich willst Du diese Binary noch vorher verschlüsseln. Das Problem ist jetzt die absolute Adressierung innerhalb der Binary - der Compiler hat die ganzen Variablenzugriffe schon als "fertige" absolute Zeiger aufgelöst, genauso mit den Sprüngen (Sprung != goto, sondern == if, while, case, und vieles mehr - Sprünge an sich sind zwar meistens relativ, aber Sprungtabellen stimmen dann natürlich auch nicht mehr) - da Du den Code integrierst, ist diese ganue Adressierung innerhalb der Binary komplett falsch, weil sich die Adressen "verschieben" (zumindest unter Windows - hat was damit zu tun, wie Windows Executables ausführt) -also viele Sprünge oder Variablenzugriffe gehen in die Nirvana). Es ist möglich, solche Codeabschnitte lauffähig zu programmieren - mit Hilfe der relativen Adressierung. Allerdings kenne ich das nur unter Asm ;)

Außerdem: wenn es wieder entschlüsselt werden soll, befindet es sich immer noch im Speicher wo es jeder mit einem Debugger auslesen kann. Grundsätzlich muss ja jeder Code vor der Ausführung entschlüsselt werden und kann zu diesem Zeitpunkt eingesehen werden (als Assembly).

Version2: Code ... das komplette,fertige Programm.... Code
jetzt entpackt man das fertige Programm "aus sich selbst" und startet es als ein "Eigenständiges". Man hat nicht soviel Aufwand, ist aber auch genauso "unsicher".
 
such mal nach managed / unmanaged code

und wenn dir das nicht reicht, gehst du über shellExecute auf einen compiler, der einen code compiliert, der zuvor in eine datei geschrieben wurde.

edit:
cdw's aufgeführte aspekte solltest du dabei schon berücksichtigen.
 
kann mir das nur so vorstellen, dass du (in java) den quellcode aus einer textdatei liest und dies in eine neue datei .class speicherst. dann rufst du mittels runexecute den compiler javac auf und kompilierst. und dann nochmals mittels runexecute die java datei aufrufen.

habs noch nie probiert, sollte meiner meinung nach aber klappen.

oder quellcode als string speichern und mittels getter bei bedarf rausholen und direkt irgendwo als .class speichern und wieder weiter wie oben. ist nur die frage ob ein
string die menge von einem programm aufnehmen kann ?!?
 
ob java oder c&co.Kg würde es wenn über einen Stream aus dem Code heraus laufen....

darüber hinaus würd ich dabei nicht zu java greifen... die sprache ist dafür nicht unbedingt geeignet, da hierbei ne eventstruktur ziehen muss, die viel zu viel overhead in der auslösenden klasse produziert.
schlauer ist es da die objekte ihren beitrag zum stream leisten zu lassen....(siehe: delegates)
hinsichtlich threading schon besser.

wenn man das ganze nun so verpackt, dass der managed code unmanaged code nutzt hätte man echte performance und könnte viel tiefer gehen....zB integrierter asm, dezentrale source etc....
 
Zurück
Oben