魔術師をめざして

魔術師を目指して、相場・数学・プログラム言語を研究しています。

デコンパイラ

世のなかにはデコンパイラ(Decompiler)というものがある。

プログラミングにおいては、作ったプログラムのソースコードファイルをコンパイル(Compile)して、コンピュータが実行できる形式にするのだ。メタトレーダー4(以下、MT4)向けに作られたロボット(EA)にもソースコードファイル(Source Code File / 以下、ソース)がある。

ソースにはたとえば StrongRobo.mq4 というようなファイル名がつけられている。これをコンパイルすると StrongRobo.ex4 というファイルに変換され、MT4 だけが読み取れる形式となる。人間には直接読むことができなくなるのだ。このことは、EA だけではなく、MT4 向けのインジケーターもどうようだ。

f:id:fxrobot:20130906062107j:plain

コンパイラは、コンパイルされて ex4 になったファイルを mq4 に逆戻りさせるのだ。そして、このデコンパイラは、だれにでもかんたんに手にはいる。(ちなみに、現在、ぼくはもっていない)

だから、MT4 向けのロボットもインジケーターも ex4 のファイルにコンパイルしたからといって、だれかにわたせば、すぐにソースに変換され mq4 ファイルを読み取られてしまうのだ。

したがって現在では、ex4 ファイルを公開すれば、それはすなわち mq4 ファイルを公開したこととおなじことなのだ。そう考えなくてはならない。

 おもしろいことに最新の MT4 はデコンパイルされた mq4 ファイルをその形式から判断しているのだろうが、デコンパイルされたソースは認めないというようなメッセージをだしてコンパイルを拒否するのだ。

有料ロボットや有料インジケーターなどは、ふつうにコンパイルだけをして顧客に提供するということはまずない。だれにでもかんたんにデコンパイルされてしまうからだ。

どうしているかというと、専門のプロテクトツールを使っているのだろう。ex4 ファイルだけでは動作しないように、DLL ファイルというものをいっしょに提供するのが主流になっているようだ。

この DLL というファイルは、MQL4(MT4向けの言語)のコンパイラとはちがうコンパイル言語を使って作ることができる形式だ。そのロボットの重要なロジックを他の言語で作って DLL に埋め込めば解読がむずかしくなるというわけだ。

しかし、どうやら、ロボットやインジケーターの重要部分を他の言語で書いている開発者は少数派のようだ。ただ、DLL がないと動かないようにして、DLL はユーザーコードの管理だけをおこなっているというケースが多いように思われる。

そうなると、デコンパイルは比較的容易となるのだ。 どちらにせよ、技術力のある者から 100% ロボットのソースを守ることはむずかしいということになる。

こんかいは、このあたりの事情をプログラミングと疎遠な人にもわかるようにまわりくどいくらいに書いたつもりだ。参考にしてほしい。