Schönen guten Tag.
Ich habe vor kurzem einen Auftrag von einem Bekannten bekommen, der sich eine Software für die Datenverwaltung anfertigen ließ.
Das Problem ist jetzt, dass er nur das fertige Programm/Installtions-datei hat, der Programmierer leider verstorben ist und das Programm fehler aufweißt.
Ich wurde darum gebeten, das Probgram sozusgane (Decodieren), bzw den quellcode hervorzuheben
um Fehler im Programm beheben zu können.
Meine Frage nun, ist das überhaupt möglich ?
Wenn ja - welche ansetzmöglichkeiten habe ich ?
Wenn Nein - Welche möglichkeiten gibt es, den bekannten da weiter zu helfen, da wie gesagt der Programmierer der Software verstorben ist ?
Ist es ein .NET Projekt? Wenn ja, dann gibt es mit Reflector, DotPeek und dergleichen genügend Tools, um an den Code zu kommen.
Bei nativem Code wird das ungleich schwieriger, eher sogar unmöglich.
Ja, ich vermute schon. Das Programm wurde seines wissens nach in c / c++ geschrieben.
Ich auf der Festplatte nun nur das Fertige Programm mit den ganzen Franmes, daten ect.
Wie kann ich herraus finden ob das Programm in .Net geschrieben wurde oder nicht ?
7716984E outs dx,byte ptr [esi]
7716984F jbe 771698BA
77169851 jb 771698C2
77169853 outs dx,byte ptr [esi]
77169854 ins dword ptr es:[edi],dx
77169855 outs dx,byte ptr gs:[esi]
77169857 je 771698AC
77169859 je 771698CD
7716985B imul ebp,dword ptr [esi+67h],74520073h
77169862 ins byte ptr es:[edi],dx
77169863 inc ebp
77169864 js 771698D6
77169866 popad
77169867 outs dx,byte ptr [esi]
77169868 inc ebp
7716986A outs dx,byte ptr [esi]
7716986B jbe 771698D6
7716986D jb 771698DE
7716986F outs dx,byte ptr [esi]
77169870 ins dword ptr es:[edi],dx
77169871 outs dx,byte ptr gs:[esi]
So ein Code wird mir nun angezeigt <.<
Nun weiß ich nicht, wie ich das in den normalen Quellcode umwandeln kann.
jemand eventuell einige Tipps.
Mit .NET REFLECTOR geht das leider nicht, da die Anwendung kein .NET datei is.
"The following file is not a .NET assembly and cannot be decompiled"
Welche möglichkeiten habe ich noch an das Quellcode herran zu kommen ?
Was ich vergessen hab zu sagen. die DLL dateien habe ich ebenfalls. Wobei ich schätze mal ich damit nicht viel anfnagen kann, da dies ja nur Bibliotheken sind.
Hi Gh0st21,
öffne mal eine dll mit einem TextEditor eine Datei und Schau mal ob du für einen hinweise auf die Sprache findest. Microsoft dll starten z.B. mit MZ. Wenn du die Sprache hast findest du vielleicht einen Decompiler. Ansonsten einfach mal ausprobieren ob du einen passenden findest.
Grundlegend wirst du aber wohl erst mal klären müssen unter welcher Lizenz dein Bekannter die Software gekauft hat. Wenn er nur eine Nutzungslizenz hat ist das was du versuchst Illegal.
MFG
Björn
Sollte man mal gelesen haben:
Ihr solltet den Threadstarter darauf hinweisen, dass - trotz des Todes des Entwicklers - das hier zumindest in Deutschland eine verbotene Handlung wäre, wenn dies nicht ausdrücklich durch den Entwickler gestattet wird bzw. wurde-
Das Urheberrecht liegt beim Entwickler bzw. nun in diesem Falle bei dessen Erben.
Selbst wenn es nicht nur eine Nutzungslizenz wäre wird der Verkauf - jedenfalls wäre das üblich - "wie sie ist" erfolgen.
Eine Fehlerbehebung wäre damit in den normalen Fällen nicht eigenständig erlaubt.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ein ganzes Projekt anhand des Programmcodes herzustellen ist selbst unter .Net fast unmöglich.
Bei einem nativen Programm den Maschinencode in ein c/c++ Projekt umzuwandeln werdet Ihr mit Sicherheit scheitern.
Je nachdem wie umfangreich die Anwendung ist wäre eine Neuentwicklung anzuraten.
Neidhard, eine in .NET entwickelte Anwendung bekommste problemlos in 100% C# Code.
Der C# Code, insbesondere zB Conditions werden aber nicht dem Original entsprechen.
Auch fuer C++ bzw. Native Code gibts mittlerweile Tools, die aber nur ganz selten wirklich funktionieren; wenn dann nur bei ganz wenigen, kleinen Anwendungen.
Der kann man auch immer noch davon sagen, dass Native Code nicht zurueckverfolgbar ist.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Vielen dank schonmal für die zahlreichen Antworten und Informationen.
Ich konnte mein Bekannten nun davon überzeugen, aufgrund der Lizensvereinbarung und schwierigkeit das Code wieder herzustellen ich Ihnen anbiete eine neue Software in C# zu erstellen was viele Vorteile mit sich bringen würde. Da so die Lizens an niemanden gebunden wäre und auch der Code jederzeit zugreifbar ist.
Ich bedanke mich nochmals für die vielen Antworten.
Wenn Dein Bekannter schlau ist, dann macht er dieses mal eine Vereinbarung, dass er uneingeschränkte Rechte am Code erhält.
Um meinen anderen Beitrag zu verbessern: das Urheberrecht in Deutschland ist nämlich nicht übertragbar.
Trotzdem liegt das (Verwertungs)Recht des Verstorbenen bei zB den Erben.
Wenn er also ein zweites Mal die jetzige Situation vermeiden will, dann muss er sich ausgiebig Rechte einräumen und den Code aushändigen lassen (was übrigens bei Freelancern/Auftragsarbeiten gar nicht so selten ist).
Trotzdem braucht es was schriftliches (damit beide Seiten abgesichert sind).
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code