DragsTrail schrieb:
Ich nehme hier nichts persönlich.
Das ist schon mal gut. Hatten wir leider auch schon ganz anders.
DragsTrail schrieb:
Ja ich schätze trotzdem deine herabwürdigende Art.
Da war, soweit ich es erkennen konnte, keine Herabwürdigung. Lediglich die Erfahrung, die aus dem Kollegen sprudelt.
DragsTrail schrieb:
Deine Fragen sind meiner Meinung nach, leider absolut irrelevant zu dem Thema.
Da bin ich anderer Meinung.
DragsTrail schrieb:
Also ich messe keine Leistungsminderung.
Könntest du uns ein Beispiel zeigen? Würde mich tatsächlich interessieren, was du tust um die Leistung zu messen und vergleichen.
DragsTrail schrieb:
Das "As String" ist mein Problem.
Das habe ich wohl schon verstanden - das haben glaube ich alle verstanden.
Die Frage ist warum?
Selbst wenn du den Datentypen änderst, sobald du anfängst, den String zu vergleichen (was sowieso nur sinnvoll mit einem entschlüsselten String geht), ist es sinnvoller auf das Framework zurückzugreifen. Spätestens da, sieht doch jeder was deine Anwendung macht.
Mit einem simplen Programm wie CheatEngine kann ich von jeder Applikation den Speicher auslesen und verwerten. Mit wenigen Zeilen Code kann ich das auch aus dem Kernel heraus, wenn ich einen entsprechenden Treiber baue.
Solltest du dich für die Variante entscheiden, dass du doch die Klassen und Strukturen selbst implementieren willst (warum auch immer), dann könnte ich im Dekompilat ohne Obfuscation auch sofort sehen, was da gerade los ist.
Wenn du wirklich Mission-Critical Code hast, der um jeden Preis bloß schwer zu erkennen sein soll, dann bau dir eine Backend-Bibliothek in C++*, linke sie statisch und binde sie dann in deine Applikation ein. Jag' über die VTables ein Obfuscator rüber, der die ohnehin schon mangled Names noch weiter unverständlich macht und lass dir eine Tabelle ausgeben, damit nur du weißt, was was ist.
Mach ein DllImport-Wrapper um die Lib und verweise dort auf die neuen Namen. Änderst du etwas an der Bibliothek, muss das Frontend auch aktualisiert werden.
* In C würde es natürlich auch gehen, aber da hast du gar keine Objektorientierung. Die Namen werden in C auch nicht gemangled. (In C++ auch nicht, wenn du
extern "C" {}
machst, aber das ist nun ein gänzlich anderes Thema).EDIT:
Eine andere Möglichkeit wäre, dass du das Backend auf einen Server auslagerst und dann mit einer verschlüsselten API kommunizierst. Public/Private Key wäre hier ein Stichwort. Vielleicht noch ein AccessToken/OAuth.
Dann rechnest du nichts auf dem Client und hast deinen super-geheimen Quellcode weg von der Öffentlichkeit.
Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)
Meine Firma: Procyon Systems
Selbstständiger Softwareentwickler & IT-Techniker.
Meine Firma: Procyon Systems
Selbstständiger Softwareentwickler & IT-Techniker.