コードプロテクト。新しいMQL4言語(Build 600+)の逆コンパイル保護とその他のクラック技術。

 

こんにちは。

私は新しいmql4(Build 600+)について読み、すでに私のEAを更新しました、今私は質問があります。クラッカーや他のタイプの実行ファイルのクラッキングやコード変更に対する新しい保護はどの程度安全ですか。EX: hex editing date of expiration, memory dumps, etc.... 今、EAに単純な時間制限(有効期限)はどの程度安全なのでしょうか?新しい言語を使って新しい保護技術を実装するには?

ex:

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);
        }  

ありがとうございます。

 

レナート(MetaquotesのCEO)が言ったことから。

  • 新しいex4はネイティブコード(DLLのような)であり、もう擬似コードではありません。そのため、デコンパイルがより困難になっています。
  • ex4は圧縮されているので(あるいは他の難読化技術は不明)、逆コンパイルすると理解するのが難しい。
  • ex4 for Marketは暗号化されています。具体的にどのような手法で作成されているかは公表されていません。

これらの情報は記憶に基づいて報告していますので、間違いがないことを祈ります。また、これらの情報を実際に確認 したわけではありません。

 
回答ありがとうございました。デコンパイルは可能なのでしょうか?(可能性あり?)
 
investguy:
回答ありがとうございましたが、私の知識にはあまりプラスになりませんでした。デコンパイルは可能なのでしょうか?(何か賭けが?)

暗号化された製品は 逆コンパイルできません。まず復号化する必要があります。製品はいつでも逆コンパイルできる。しかし、それはコストの問題です。古いex4の逆コンパイルに10ドルかかったとしたら、新しいex4は100万ドルかかるかもしれません(あくまで目安ですが)。お分かりいただけたでしょうか?

 
StrToTime("2014.09.30 00:00");

純粋な文字列はハックしやすい。コンパイルしてex4で文字列が見えるかどうか試してみてください。 今は暗号化されているはずです(Build 6xx)。検証してみてください。

また、なぜ文字列を使うのでしょうか?8バイトの本当のdatetimeを 使いましょう。

#define  EXPIRATION D'2014.09.30 00:00'
 

暗号化されていますが、残念ながらプロパティ変数は見えています。

 
investguy: 暗号化されていますが、残念なことにプロパティ変数はまだ見えています。
それは不幸なことではなく、意図的なことです。ファイルのコピーライトが読めないということは、コピーライトがないということです。でも、日付の文字列は見えないんだ。
 
investguy:

こんにちは。

私は新しいmql4(Build 600+)について読み、すでに私のEAを更新しました、今私は質問があります。クラッカーや他のタイプの実行ファイルのクラッキングやコード変更に対する新しい保護はどの程度安全ですか。EX: hex editing date of expiration, memory dumps, etc.... 今、EAに単純な時間制限(有効期限)はどの程度安全なのでしょうか?新しい言語を使って新しい保護技術を実装するには?

ex:

ありがとうございます。


今のところ、Build 6xxでコンパイルされた.ex4用のデコンパイラが動作する可能性はないようです。


しかし、あなたのコードの問題は、それをクラックすることに本当に興味を持っている人のために、それは非常に簡単にあなたのコードを回すことである。

if (condition...)

になります。

if (!condition

または、さらに簡単に、そのreturn(1) をNOPする。

再開するには、デコンパイルは、現在不可能です。


しかし、まだ可能なことは、コードを逆アセンブルすることです。アセンブラの知識があまりない人でも、あなたのコードをリバースエンジニアリングしてクラックするのはかなり簡単でしょう。

 
yokinfx: しかし、それでも可能なのは、コードを逆アセンブルすることです。アセンブラの知識があまりない人でも コードを逆アセンブルしてクラックするのは かなり簡単でしょう。
機械語コードではなく、暗号化されたコードであることが前提です。
 
yokinfx:


現在、Build 6xxでコンパイルされた.ex4用のデコンパイラが動作する可能性は、今のところないようです。


しかし、あなたのコードの問題は、それをクラックすることに本当に興味を持っている人のために、それはあなたのコードを回すことが非常に簡単であるということです。

になります。

あるいは、さらに簡単に、そのreturn(1) をNOPする。

再開するために、デコンパイルは現在不可能です。


しかし、まだ可能なことは、コードをディスアセンブルすることです。そして、アセンブラの知識があまりない人にとって、あなたのコードをリバースエンジニアリングしてクラックすることはかなり簡単でしょう。

本当に?あなたはそれを証明できますか?
 
DLLにあなたのコードを入れてください。それがMQL2以来の受賞歴のある答えです。