Wie schwierig gestaltet sich das decompilen einer Notiz-App?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Das ist einfach, Du musst das Ergebnis aber auch verstehen können und das kann unter Umständen sehr schwierig werden.

vermutlich in C++ oder Kotlin geschrieben

Das ist ein sehr entscheidendes Detail ;)

C++ kompiliert in Maschinencode, ein Disassembler kann dir zwar irgendwie brauchbaren Code liefern, nur hat das danach nicht Mal im Entferntesten etwas mit dem Original-Code zu tun, da kannst Du auch den Assembler-Code direkt lesen.

Kotlin kompiliert in die den Java-ByteCode und die kann man wieder zu Java dekompilieren, ggf. gibt's auch Tools, die wieder Kotlin ausspucken können. Wie zuverlässig das funktioniert, musst Du ausprobieren, aber zumindest theoretisch kann der Code am Ende durchaus gut lesbar und verständlich sein. Außer es wurde ein Obfuscator verwendet, dann ist der Code zwar immer noch gut lesbar, allerdings mit möglichst wirren Namen (ggf. nicht mal darstellbar) und anderen Tricks, ob es möglichst schwer zu machen, den Code zu verstehen.

Also ja, möglich ist es.
Mit C++ wird es sehr schwer und wenn Du dir davon nicht gerade riesige Gewinne versprichst, würde ich es erst gar nicht versuchen.
Mit Kotlin ist auf jeden Fall realistisch, wenn kein Obfuscator genutzt wurde. Wenn doch, auch hier: Ich würde es erst gar nicht versuchen.

Aber auch, wenn der Code am Ende gut verständlich ist, ist es nicht der Original-Code. Häufig formen Compiler einiges um und der Code am Ende ist deutlich schwieriger zu verstehen, als das Original. Ggf. gibt es auch Code, den man gar nicht mehr zurückübersetzen kann, an diesen Stellen musst Du dann den Byte-Code direkt lesen.
Der C#-Compiler macht beides sehr viel, bei Java oder Kotlin weiß ich es nicht, ich würde aber davon ausgehen, dass es da ähnlich ist. Diesen Code kann man zwar verstehen, ohne tiefgehende Kentnisse der gängigen Sprach-Funktionen, insbesondere dem, was der Compiler daraus macht, ist das aber schwierig.

PS:

Scheinbar kann man Kotlin auch in Maschinencode übersetzen lassen. In dem Fall gilt das gleiche wie bei C++: Versuch es erst gar nicht, außer Du stehst auf Schmerzen ;)

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

Helmut3445 
Beitragsersteller
 14.07.2024, 14:48

Wurde wohl in C++ geschrieben und der Code wurde offenbar durch irgendeinen Compiler nochmal "verschlüsselt". Das gestaltet sich relativ schwierig..

0
Palladin007  14.07.2024, 15:38
@Helmut3445

Wie gesagt: C++ wird in Maschinencode kompiliert.

Mit Verschlüsseln hat das nichts zu tun, Maschinencode ist einfach immer furchtbar zu lesen. Deshalb gibt's ja Sprachen wie C++, die machen den Umgang damit einfacher.

0
Helmut3445 
Beitragsersteller
 14.07.2024, 15:51
@Palladin007

Das kann man dann wohl vergessen - eine richtige Fummelei bis ich dann bei dem Feature angekommen bin, das mich interessiert

0

Dekompilieren ist extrem einfach. Kannst du in ein tool knallen und ist dekompiliert.

Der schwierige Teil ist das dekompilat zu verstehen, "Reverse engineering".

Es hängt immer von der Anwendung und ihrer Komplexität ab, ob und wie leicht oder schwer sie sich dekompilieren lässt. Nützliche Tools sind Reverse-Engineering Werkzeuge wie Ghidra, Ida Pro und Cutter bis hin zu eher simplen Hex-Editoren.

Wenn du keine Erfahrung hast, mit den Werkzeugen nicht vertraut bist und den dekompilierten Code nicht lesen geschweige verstehen kannst, nicht sehr weit kommst. Es Bedarf schon einiges an Wissen, um alles unter einen Hut zu bringen.

Woher ich das weiß:Berufserfahrung – UI/UX Designer, Full-Stack Developer