Mq4 プロテクションメソッド... - ページ 4

 
mqlのコードを保護するために、専門的なソリューションが必要です。それは簡単な話題ではありません。このDLLの話は、あなたのコードを保護するためには役に立ちません。
 

皆さんは次のようなことを考えたことがありますか?

通常通りMetaTraderを実行する。重く保護されたインジケータや何かをロードする。プロセスダンプツールを実行し、terminal.exeプロセスの全メモリをファイルにダンプする(...そしておそらく他のメモリ範囲も割り当てる)ヘキサエディタまたは通常のテキストエディタを使用して、完全に保護されたIndicatorの断片を検索する。

私はこれを試したことはありませんが、30年近く低レベルのプログラミング(680x0アセンブラ、パワーPCなど)の知識を持っています。

どうぞよろしくお願いします。

:)

 

このスレッドに返信したとき、私は少し急いでいたので、いくつかの行を拡張したいと思います。本当のコード保護のようなものは存在しません。あなたは、あなたのコードを暗号化、移動、回転、コピーロックすることができるかもしれませんが、最後にそれは再び裸である。

例えば、こんな感じです。以前、私はプログラムを書き、そのコードの開始と終了のアドレスをファイルにダンプしたことがある。コード内のジャンプはすべて相対オフセットに設定され、コード(結局は通常のデータ)は1ビットだけ回転されました。したがって、コードはもう存在しません。ローダーパーツをコードに追加し、再び回転を解除してラベルのアドレスを再割り当てさせることができます(通常、ハンクに含まれます)。エントリにジャンプすると、ほら、またプログラムが実行されます。

したがって、大多数の人は、crypt(実行ファイル)からラベルなどを読み取ることができないので、あなたのプログラムやインジケータは十分に保護されていると考えるでしょう。最後にそれは再び見えるようになります。あなたがそれを実行し、あなたのプロセス(またはプログラム)を通して実行させれば、目に見えるようになります。

不自由にしたり、コードをずらしたり、プロテクトをかけたり、好きなだけできます。プログラムが実行されると、その後、ほとんどの保護は再びなくなります(キーファイルやシリアル番号などの一部の例外を除いて)。

ですから、私はインジケータについても同じだと考えています。彼らははいコンパイルされます。それはバイナリですか?知らない。それはバイトコードですか?私はどちらかわからない。でも、terminal.exeで実行して、terminal.exeがインジケータ用に割り当てたメモリ領域をダンプすれば、あなたのコードの痕跡を得ることができるかもしれないことは確かです(たとえ、その中に使われている文字列や似たようなものであっても)。

もしかしたら、あなたの*.mql4ファイルのように、ある種のCODEを取り戻すことができるかもしれません。そうでないかもしれません。多分、あなたはいくつかのバイトコードを得るかもしれませんし、そうでないかもしれません。多分、あなたは何かを得るでしょう。もしかしたら、terminal.exeは内部に独自のコードインタプリタを持っていて、metaeditor.exeが生成したコードをterminal.exeが理解できるように解釈しているのかもしれませんね。以前言ったように、私はそれを試していません。

私が説明したいのは、もしあなたが自分のコードを暗号化したり保護したいのなら、いつも一方から見るのではないということです(例えば、メタエディターがコンパイルしたex4ファイルが未知のコードで覆われている場合。他の側面からそれをまた見なさい。一度それを実行すれば、保護されたコードは再度裸になる。そして、これはそれに指を得るために1つの部分である。動作可能です。いけない。

実行中のコードのスタートアドレスとエンドアドレスをダンプすることによる弊害として、こんなことがあります。すべてが初期化される。配列は値で満たされ、プレースホルダーは値を持つことができるなど。

 

いいこと言うね、アリさん。ありがとうございます。

メモリダンプでのマイニングは高価なソリューションのようです。これまでのところ、安価な解決策はMetaquotesからの知識リークからしかありませんでした。私は、誰かが - メモリコードのマイニングが可能な - 自分でゼロからMQL4をコーディングできることを期待しています、より少ない労力で。そのため、新しい知識リークによって安価なデコーダーが登場するまで、私は今のところ安心しています。そして、プランBは、分解されたコードの改ざんが高いコストに見合うような方法でコーディングすることです。