Die Dekompilierung der (binären,NDK) C apps vs. Java-apps (Dalvik-bytecode)
Gut,
da ich interessiert bin reengineering ich verbringe viel Zeit auf Android-reengineering so weit.
Dennoch kam ich zu einem Punkt, wo ich hatte das problem der kompilierten binären C-Code (NDK) und ich bekam zu wissen, dass es sehr schwierig, zu dekompilieren, zurück zu C/C++ als Dekompilierung eine DEX-Datei zurück, um mehr oder weniger bekannte Java-Quellen.
Was ist der Grund dafür? Ich meine, dass der bytecode wird ausgeführt, indem der Dalvik VM, und im Falle eines üblichen Binär-Datei, die es ausgeführt wird, von den echten Prozessor direkt statt. Beide sind ziemlich ähnlich, außer für einige zusätzliche emulation-Layer, nicht wahr? Ich sehe nicht, dass viel Unterschiede an den moment oder den Grund für dieses problem.
Haben Sie irgendwelche Informationen für mich warum ist es schwieriger, zu dekompilieren einer üblichen Binär-Datei (z.B. ELF oder EXE MS) wieder auf die C-Quelle?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die kurze Antwort ist, dass die C/C++ - code enthält keine reflektierenden Informationen in es und C/C++ inline-Funktionen Makros und entrollte Schleifen, die der Java-compiler funktioniert einfach nicht (so viel wie C/C++ - Kompiler). Es ist auch möglich, zur Optimierung von C/C++ so umfassend, dass alles, was Sie tun können, ist zu dekompilieren, zu Montage, denn es gibt keine Verweise auf die Anwendungen eigene Funktionen. (Verweise auf die system-Funktionen gefunden werden, obwohl.)
BTW, Hex-Rays ARM Decompiler macht reverse-engineering job viel einfacher, check this out: http://www.hex-rays.com/hexarm_compare0.shtml
Die andere Frage ist, dass es kostet viel...