Decompile: *.class Files - Übung 1

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

*Decompile: .class Files - Übung 1
CorrectSort: http://pastebin.com/9V64Xu29
BrokenSort1: http://pastebin.com/deLGtiDN
BrokenSort2: http://pastebin.com/KSnEGCsx
BrokenSort3: http://pastebin.com/gQCWN8h5

Have fun - ist ja nicht explizit untersagt worden.

1 Like

:#: Du weißt, dass damit die Aufgabe ziemlich sinnlos ist?
Was glaubst du, wieso die Implementierung nicht online war?
So übt man höchstens Sourcecode lesen, nicht das Testfall schreiben.

Ursprünglich dachten wir, wir belohnen alle, die sich die Mühe machen zu lernen wie ein Dekompiler funktioniert.
Aber da der Code offensichtlich im Forum landet, jagen wir die Dateien im nächsten Semester durch einen Obfuscator.

Ihr könnt übrigens allen euren Tutoren ein Bier ausgeben. Sie waren dafür, dass es weiterhin Punkte auf die Aufgabe gibt.
Wir hätten die Punkte eher umverteilt.

1 Like

Worum geht es bei der Aufgabe? Richtig, Trial & Error. Ich finde sie einfach nur bescheuert.


Ich habe ja keine Ahnung von diesen ganzen rechtlichen Dingen, aber es würde mich wundern, wenn es da nicht irgendeine Möglichkeit gäbe… Aber du hast dir da ja bestimmt Gedanken gemacht und kannst mir das alles aus juristischer Sicht erklären. :wink:

Es geht um Black-box testing. Welchen Sinn macht es, mit Tests Fehler zu finden, die man schon kennt? Oder willst du mir erzählen, du schreibst absichtlich Fehler, um dich dann darüber zu freuen, sie mit einem Test gefunden zu haben? Dazu sind alle Fehler nicht allzu schwer zu finden (es gibt immerhin theoretisch unendlich mögliche Arrays, die ein Scheitern eines Testfalles provozieren würden). Wenn du die Aufgabe – Zitat – „bescheuert“ findest, darfst du gerne konstruktive Kritik üben. Davon sehe ich hier aber nichts.


Wir studieren beide nicht Jura, oder? :wink:
Ich glaube auch kaum, dass mich irgendwer deswegen verklagen würde (und wenn, dann wäre das ein richtiges Armutszeugnis seitens der Universität).

BTT:

Dieses Black-box testing ist ja im Grunde auch nur trial & error, da es ja mehrere Dinge gibt, welche crashen könnten.

Ob man jetzt anhand von trial & error die Schwachstellen im Quelltext findet oder den Sourcecode dekompiliert um diese Schwachstellen zu finden, ist meiner Meinung nach egal.

Ich habe den Sourcecode zwar nicht gebraucht, jedoch kann ich mir vorstellen, dass er anderen Leuten eine Hilfe war.

Man lernt hierbei einfach nichts. Tut mir Leid.

Vielleicht bin ich die Aufgabe falsch angegangen - aber ich hätte lieber etwas Neues gelernt, anstatt meine Zeit damit zu verschwenden, die/eine Bedingung zu finden, bei welcher alle 3 Implementierungen crashen.

Ist nur meine Meinung zu der Aufgabe - gibt sicherlich Leute, welche das anders sehen.


Ich habe dir damit unterstellt, dass du dir keine Gedanken über die Auswirkungen der Veröffentlichung gemacht hast. Und das hast du mit deiner Antwort ja bestätigt. Aber lassen wir das.

Die JUnit-Aufgabe wurde eingeführt, damit man bei den späteren Aufgaben seine sequentielle Implementierung testen kann. Und dabei nützt dann das Dekompilieren des Quellcodes nichts – schließlich hat man den selbst geschrieben. Dass man nichts lernt, halte ich in dieser Allgemeinheit auch für eine unbewiesene Behauptung – und wenn es nur die Verwendung von JUnit ist, die man vorher noch nicht beherrscht hat. Außerdem weißt du nun, was Black-box testing ist und kannst es, so der Idealfall, für die künftigen Aufgaben anwenden. Wie gesagt, konstruktive Kritik ist immer erwünscht, aber so bleibt nur, die nächsten Semester eine andere Aufgabe zu stellen… und ob die besser ist, sei dahingestellt. Ich schicke dann die rebellierenden Studentenheere zu dir, ja? :wink:


(deleted)


Ich hoffe das soll nicht Teil der Argumentation sein, um while(true)'s Vorstoß zu entschuldigen. AuD ist keine Reverse Engineering Vorlesung. Im übrigen ist es in den meisten Alltagssituationen üblich, dass eine perfekte Lösung schwerer zu erreichen sind und keinen linearen Aufwand widerspiegelt. Allein schon durch das Schrumpfen der mögliche Anzahl erreichbarer Punkte mit jeder weiteren korrekten Lösung.

Ein Großteil der Klausuren lässt sich durch reine Anwesenheit in der Vorlesung bestehen. Für eine 1.0 wird man häufig nicht drum rum kommen sich etwas ausgiebiger mit dem Modul zu beschäftigen.
Theoretische Führerscheinprüfungen sind mit gesundem Menschenverstand zu bestehen und zwar ohne jemals mental in der Fahrschule anwesend gewesen zu sein. Da in Prüfungen optional auch Fragen bezüglich Anhängerkupplungen auftauchen können, die man ohne sich damit auseinandergesetzt zu haben nicht trivial korrekt beantworten kann, ist eine fehlerlose Prüfung teils Glückssache, teils vom Engagement abhängig.

Edit: Wenn es euch darum geht, euerer Meinung nach nicht sinnvoll gestellte Aufgaben zu monieren, dann nutzt die Evaluation und fallt den Aufgabenstellern nicht unter dem Semester in den Rücken.


Wenn du den Sourcecode liest, machst du leicht den genau gleichen Denkfehler wie der Programmierer.
Klar kann die das auch beim Black-Box Testing passieren, aber es ist unwahrscheinlicher.


Das ist für euch wohl ein echtes Kapitalverbrechen (facepalm).
Ist zwar PFP hier, aber wurscht. Ist dem so? Bei einer Fehlersuche betreibt man doch i.d.R. immer Reverse Engineering.

Die Aufgabensteller mussten doch damit rechnen, dass das jemand macht. Ich habe nur die gegebenen Sachen ausgereizt. Es ging mir auch nie darum, irgendjemanden in den Rücken zu fallen, sondern den anderen Leuten zu helfen, weil die Aufgabe einfach in der Form bescheuert ist (siehe meinen Post weiter oben).


Schlaumeier.


related https://narf-archive.com/pix/ab49e02895a6a3d080d9bbd1ad9f1c94ea9543d7.png

3 Likes

Ich habe den Sinn von Unittests verstanden

Warum hilfst du den anderen Leuten nicht einfach indem du gleich die Lösung postest?
Damit müssen die Aufgabensteller doch auch rechnen, oder?

Es geht bei der Aufgabe doch nicht darum die Fehler zu finden. Du solltest bei der Aufgabe lernen Unittests zu schreiben.
In PFP lernst du auch noch, dass man eben viele Fehler durchs bloße ansehen des Quellcodes halt eben nicht sieht…


Haha :stuck_out_tongue:

Du hast das x vergessen!

Weil das ein Plagiat wäre cpt. obvious.
Müssen sie, aber dagegen gibt es ja Maßnahmen.

Ich verstehe nicht, warum ihr wegen dem Sourecode jetzt so einen Aufstand macht - macht euch doch mal nen Kaffee, hört ein bisschen gute Musik und regt euch doch nicht so darüber auf.
Man könnte das Gefühl bekommen, dass ihr euch auf den Schlips getreten fühlt…