Code-Schutz: Neue MQL4 Sprache (Build 600+) Dekompilierungsschutz und andere Crack-Techniken.

 

Hallo,

ich habe über das neue mql4(Build 600+) gelesen und meine EAs bereits aktualisiert, jetzt habe ich eine Frage. Wie sicher ist der neue Schutz gegen Cracker und andere Arten von ausführbaren Knacken und Ändern des Codes. EX: Hex-Bearbeitung des Verfallsdatums, Speicherabzüge, etc. Wie sicher ist eine einfache Zeitbeschränkung(Verfallsdatum) auf einem EA jetzt? Wie können neue Schutztechniken mit der neuen Sprache implementiert werden?

Beispiel:

bool Expire=TimeCurrent()>StrToTime("2014.09.30 00:00");
    if( Expire ) {
                Print("Demo period has expired: 2014.09.30 00:00 -  Contact: investguy@gmail.com ");
                return(1);
        }  

Danke

 

Von dem, was Renat (CEO von Metaquotes) sagte:

  • Die neuen ex4 sind nativer Code (wie DLL) und kein Pseudocode mehr. So sind sie schwieriger zu dekompilieren.
  • ex4 sind komprimiert (oder eine andere Verschleierungstechnik, die nicht bekannt ist), so dass es schwer ist, sie zu verstehen, wenn sie dekompiliert sind.
  • ex4 für Market sind verschlüsselt. Die genaue Technik, die verwendet wird, ist nicht öffentlich zugänglich.

Ich berichte diese Informationen aus dem Gedächtnis, so dass ich hoffe, dass ich keinen Fehler mache. Außerdem habe ich diese Informationen nicht in der Praxis überprüft.

 
Danke für die Antwort, aber sie hat meinem Wissen nicht viel hinzugefügt. Ist es möglich, zu dekompilieren? vielleicht in naher Zukunft möglich? (irgendwelche Wetten?)
 
investguy:
Danke für die Antwort, aber sie hat meinem Wissen nicht viel hinzugefügt. Ist es möglich, zu dekompilieren? vielleicht in naher Zukunft? (irgendwelche Wetten?)

AFAIK kann ein verschlüsseltes Produkt nicht dekompiliert werden. Sie müssen es erst entschlüsseln. Ein Produkt kann immer dekompiliert werden. Aber das ist eine Frage der Kosten. Wenn es Sie 10$ kostet, ein altes ex4 zu dekompilieren, wird das neue ex4 vielleicht 1.000.000$ kosten (nur um etwas zu sagen). Haben Sie die Idee?

 
StrToTime("2014.09.30 00:00");

Ein reiner String ist leicht zu hacken. Versuchen Sie, es zu kompilieren und zu sehen, ob die Zeichenfolge in der ex4 sichtbar ist. Sie sollte jetzt verschlüsselt sein (Build 6xx). Überprüfen.

Warum überhaupt eine Zeichenkette verwenden? Verwenden Sie eine echte 8-Byte-Datetime.

#define  EXPIRATION D'2014.09.30 00:00'
 

Sie ist verschlüsselt, aber leider sind die Eigenschaftsvariablen noch sichtbar.

 
investguy: Sie ist verschlüsselt, aber leider sind die Eigenschaftsvariablen immer noch sichtbar.
Das ist nicht unglücklich, das ist Absicht. Wenn man den Text in der Datei nicht lesen kann, dann ist sie auch nicht verschlüsselt. Aber die Datumszeichenfolge ist nicht sichtbar.
 
investguy:

Hallo,

ich habe über das neue mql4(Build 600+) gelesen und meine EAs bereits aktualisiert, jetzt habe ich eine Frage. Wie sicher ist der neue Schutz gegen Cracker und andere Arten von ausführbaren Knacken und Ändern des Codes. EX: Hex-Bearbeitung des Verfallsdatums, Speicherabzüge, etc. Wie sicher ist eine einfache Zeitbeschränkung (Verfallsdatum) auf einem EA jetzt? Wie können neue Schutztechniken mit der neuen Sprache implementiert werden?

Beispiel:

Danke


AFAIK gibt es bis heute keine Möglichkeit, einen Decompiler für .ex4, die mit Build 6xx kompiliert wurden, zu verwenden


ABER, das Problem mit Ihrem Code ist, dass es für jeden, der wirklich daran interessiert ist, ihn zu knacken, sehr einfach ist, Ihre

if (condition...)

zu

if (!condition

Oder noch einfacher, um NOP, dass return(1)

Um fortzufahren, Dekompilieren ist jetzt nicht möglich.


Was aber immer noch möglich ist, ist, den Code zu dissemblieren. Und für jeden, der nur wenig Assembler-Kenntnisse hat, wäre es ein Leichtes, Ihren Code rückzuentwickeln und zu knacken.

 
yokinfx: Was aber immer noch möglich ist, ist das Zerlegen des Codes. Und für jeden, der nur wenig Assembler-Kenntnisse hat, wäre es ein Leichtes, den Code zurückzuentwickeln und zu knacken.
Es sollte kein Maschinencode sein, sondern ein verschlüsselter Code.
 
yokinfx:


AFAIK gibt es bis heute keine Möglichkeit, einen Decompiler für .ex4, die mit Build 6xx kompiliert wurden, zu verwenden.


ABER, das Problem mit Ihrem Code, für jeden, der wirklich daran interessiert ist, ihn zu knacken, ist, dass es sehr einfach ist, Ihre

zu

Oder noch einfacher, um NOP, dass return(1)

Um es noch einmal zu sagen: Dekompilieren ist jetzt nicht möglich.


Was aber immer noch möglich ist, ist das Dissassemblieren des Codes. Und für jeden, der nur wenig Assembler-Kenntnisse hat, wäre es ein Leichtes, Ihren Code rückwärts zu entwickeln und zu knacken.

Wirklich? Können Sie das beweisen?
 
Packen Sie Ihren Code in eine DLL. Das ist die preisgekrönte Antwort seit MQL2.