Frage

Kennt jemand einen guten Code obsfucator für Perl? Ich bin sein bitten in die Option suchen Code von obsfucating, bevor es an einen Kunden freigeben. Ich weiß obsfucated Code kann nach wie vor Reverse Engineering werden, aber das ist nicht unser Hauptanliegen.

Einige Kunden sind kleine Änderungen am Quellcode, die wir ihnen geben und es gibt uns Alpträume, wenn etwas schief geht, und wir müssen das Problem beheben, oder wenn wir einen Patch veröffentlichen, die mit nicht funktioniert, was sie haben sich verändert . So ist die Absicht, nur um es zu machen, so dass es schwierig für sie, ihre eigenen Änderungen am Code zu machen (sie sind nicht zu tun, dass sowieso sollte).

War es hilfreich?

Lösung

Ich habe auf diesem Weg gewesen und es ist ein absoluter Alptraum, wenn Sie auf „verschleierten“ Code arbeiten, weil es die Kosten nach oben treibt enorm ein Problem auf dem Server zu debuggen, versucht der Client, wenn Sie, der Entwickler, kann nicht lesen Sie den Code. Sie winden sich mit „deobfuscators“, den „echten Code“ Kopieren auf dem Server des Kunden oder eine beliebige Anzahl von anderen Fragen, die nur ein großes Problem geworden zu halten.

Ich verstehe, wo du herkommst, aber es klingt wie Management ein Problem hat und sie suchen Sie eine gewählte Lösung zu implementieren, anstatt herauszufinden, was die richtige Lösung ist.

In diesem Fall klingt es wie es ist wirklich eine Lizenzierung oder vertragliches Problem. Let ‚em den Code Open Source, aber es ist ein Teil der Lizenz machen, dass alle Änderungen, die sie vorlegen müssen Sie wieder kommen und zu genehmigen. Wenn Sie Patches herausschieben, überprüfen Sie die MD5-Summen aller Code, und wenn es nicht übereinstimmt, was erwartet, sind sie in Lizenz Verletzung und werden entsprechend berechnet (und es sollte eine weit, weit höhere Rate sein). (Ich erinnere mich an ein Unternehmen, das uns den Code Open Source haben lassen, aber deutlich gemacht, dass, wenn wir etwas verändert, wir haben „gekauft“ den Code für $ 25.000, und sie waren nicht verantwortlich länger für alle Fehlerbehebungen und Upgrades, wenn wir nicht eine gekauft neue Lizenz).

Andere Tipps

Nicht. Gerade dies nicht tun.

Schreiben Sie es in den Vertrag (oder den Vertrag revidieren, wenn Sie müssen), dass Sie für Änderungen verantwortlich sind, sie an der Software machen. Wenn sie f-ing Sie Ihren Code sind und dann erwarten Sie es zu beheben, haben Sie die Client-Probleme, die nicht durch das Verschleiern der Code gelöst werden werden. Und wenn Sie verschleiern sie und stoßen sie auf ein tatsächliches Problem, viel Glück in bekommen sie genau Zeilennummer zu melden, usw., in dem Fehlerbericht.

In diesem Fall Verschleierungs der falsche Ansatz ist.

Wenn Sie den Code freigeben an den Client eine Kopie des Codes halten, sollten Sie sie (entweder auf der Festplatte oder vorzugsweise in der Versionskontrolle als Tag / Filiale) senden.

Dann, wenn Ihr Kunde Änderungen vornimmt können Sie den Code, den sie auf den Code haben vergleichen Sie sie geschickt und die Änderungen leicht erkennen. Schließlich, wenn sie die Notwendigkeit, Änderungen fühlen gibt es ein Problem irgendwo, und Sie sollen es in der Master-Code-Basis zu beheben.

Eine weitere Alternative Ihr Programm in eine binäre für die Umwandlung ist das kostenlose PAR-Packer Werkzeug auf CPAN . Es gibt sogar Filter für Code-Verschleierung, obwohl wie andere gesagt haben, das ist vielleicht mehr Mühe, als es wert ist.

Ich stimme mit den vorherigen Vorschlägen.

Allerdings, wenn Sie wirklich wollen, können Sie PAR schauen und / oder Filter :: Crypto CPAN Module. Sie können sie auch zusammen verwendet werden.

habe ich die letztere (Filter :: Crypto) als wirklich leichte Form von „Schutz“, wenn wir unser Produkt auf optischen Medien Versand wurden. Dabei spielt es keine „schützen“ Sie, aber es wird 90% der Leute zu stoppen, die Quelldateien ändern möchten.

Dies ist kein ernstgemeinter Vorschlag, nehmen jedoch einen Blick auf Gipfel :: Buffy .

Es wird mindestens aufhellen Sie den Tag!

Eine Alternative zur Verschleierung ist das Umwandeln Ihre Skript in einem binären mit so etwas wie Active Perl Dev Kit .

Ich bin ein Windows O / S ausgeführt und verwenden perl2exe von IndigoSTAR. Die resultierende Exe-Datei wird unwahrscheinlich sein, Vor-Ort-geändert werden.

Wie andere gesagt haben, „wie kann ich verschleiern es“ ist die falsche Frage. „Wie verhindere ich den Kunden ändert den Code“ ist die richtige.

Die Prüfsumme und Vertrags Ideen sind gut für die verhindern, dass die „Probleme“ Sie beschreiben, aber wenn die Kosten für Sie ist die Schwierigkeit der Roll-out-Upgrades und Bug-Fixes, wie sind Ihre Kunden Änderungen vornehmen, die das nicht passieren umfassende Testsuite ? Wenn sie diese Änderungen zu machen (oder zumindest, eine Änderung vorzunehmen, die zum Ausdruck bringt, was sie den Code tun wollen) in der Lage sind, warum nicht einfach machen es einfach / automatisiert für sie ein Support-Ticket zu öffnen und den Patch laden? Der Kunde hat immer Recht über das, was der Kunde will (sie könnten keine Ahnung, wie es „den richtigen Weg“ zu tun, aber das ist, warum sie Sie bezahlen.)

Ein besserer Grund, eine obfuscator wollen für den Massenmarkt Desktop-Bereitstellung sein würde, wo man nicht jeden Kunden auf einem stehenden Vertrag hat. In diesem Fall etwas wie PAR -. Alles, was die Verschlüsselung / Verschleierungs Logik in eine kompilierte Binärpakete ist der Weg zu gehen

Wie mehrere Leute haben schon gesagt:. Nicht

Es ist ziemlich viel implizit, die Art des Perl-Interpreter gegeben, dass alles, was Sie die Perl zu verschleiern tun rückgängig gemacht werden müssen, bevor Perl seine Hände auf sie bekommt, was bedeutet, Sie müssen den de-Verschleierungs Skript / binary herumliegen lassen wo der Dolmetscher (und Ihre Kunden so) kann es finden:)

Fix das eigentliche Problem: Prüfsummen und / oder eine entsprechend formulierte Lizenz. Und Support-Mitarbeiter geschult ‚zu sagen, dass Sie es sich verändert? wir Klausel 34b unserer Lizenz Berufung und das wird $ X, 000 sein, bevor wir es berühren ....

Lesen Sie auch warum-sollte-i-use-Verschleierungs für eine allgemeine Antwort.

Ich würde sie nur in meinem SVN Baum auf ihren eigenen Zweig einladen, damit sie Änderungen zur Verfügung stellen kann und ich kann sie sehen und ihre Veränderungen in meiner Entwicklung Baum integrieren.

Sie es nicht kämpfen, sie umarmen.

Wie Ovid sagt, es ist ein vertragliches, soziales Problem. Wenn sie den Code zu ändern, ungültig machen sie die Garantie. Laden sie viel, dass zu beheben, aber zugleich, geben ihnen einen Kanal, wo sie Änderungen vorschlagen können. Auch schauen, was sie ändern möchten und dass ein Teil der Konfiguration vornehmen, wenn Sie können. Sie haben etwas, was sie wollen, und bis Sie das erfüllen, sie versuchen, zu gehen zu halten um Sie zu erhalten.

Mastering Perl , spreche ich ein wenig über obfucators besiegen. Auch wenn Sie Dinge tun, wie Unsinn Variablen-Namen zu machen und dergleichen, Module wie B :: Deparse und B :: Deobfuscate , zusammen mit Perl-Tools wie Perl :: Tidy , macht es für die sachkundig und motivierte Person ziemlich einfach Ihre Quelle zu bekommen. Sie müssen nicht über die unknowledgable und unmotiviert so viele Sorgen machen, weil sie nicht wissen, was ohnehin mit dem Code zu tun.

Als ich Manager darüber sprechen, gehen wir durch die normalen Kosten-Nutzen-Analyse. Es gibt alle möglichen Dinge, die Sie könnte , aber nicht viel es kostet weniger als der Nutzen, den Sie erhalten.

Viel Glück,

Ein weiterer nicht ernst Vorschlag ist, Acme :: Bleach , wird es machen Sie Ihre Code sehr sauber; -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top