*

EAを実際にデコンパイルしてみて、対策を考える(追記あり)

デコンパイルとは

デコンパイルというのは実行ファイルからソースコードファイルを復元することで、デコードとかリバースエンジニアリングとかって言われたります。

 

高値で取引されるソフトウェアではこのデコンパイル対策が必須で、EAも例外ではありません。

今はあまり聞かなくなりましたが、2014年2月のbuild610アップデート以前は、MT4のコンパイラのシンプルさ故にデコンパイルソフトが存在していたようです。

MQLはもともとCをベースに開発されているため、Cのデコンパイラがそのまま通ってしまっていたそうですね。ちなみにbuild610以降、MQL5では大丈夫だと思います。(希望的観測~~)

今回は実際にデコンパイルされるとどうなるのか、その対策について紹介します。

 

デコンパイルされるとどうなるか

まずは、実際にデコンパイルされたコードを見てみてください。

これはコードのほんの一部ですが、基本的にはこのように変数名とコメントが失われます。このまま再コンパイルしてももちろん通るのですが、アタッカーはいろんな理由で中身を読み解こうとします。

つまり、

こんな感じで経験と勘と努力で変数の意味を解読していく訳です。
組み込みの関数はデコンパイル時に喪失しないので、for文とオーダーの価格の取得から建玉の確認をしているということは容易に推察されてしまいます。

 

また無理して意味を読み解かなくても制限解除とかができればOKな場合も多いと考えられるので、口座縛りの個所だけ読み解かれたら終わりのような気もします。

 

実際にデコンパイルしてみる

では、実際のこの流れをやってみましょう。

まず古いMT4をインストールします。

FXDD MT4 build221 ダウンロード

Alpari MT4 build219 ダウンロード

どっちかでOKです。Windows10だと動かなかったので、Windows8以下推奨です。

インストールしたら、起動する前にオフラインにします。オフラインにしていないとMT4が強制的にアップデートを開始して最新版のMT4になってしまいます。

UIがふるーーい

 

あとはこの古い古いMT4に付属している古い古いメタエディタでコンパイルすればOKです。

デコンパイル前のサンプルソースコード

 

これはMT4にデフォルトで入っているサンプルのMACDのEAです。

これをデコンパイルします。

デコンパイル後のサンプルソースコード

あとはIQ勝負です。

 

傾向と対策

問題は、こういったリバースエンジニアリングをさせないためにどういった対策を行うか、ということです。変数名が失われているので、「変数名がxxじゃなかったら動かない」のようにプログラミングしたいところではありますが、MQLにはnameof演算子がないので変数名を取得することができません。

 

また一つの手として、改行を消して難読化処理をする手があります。
bandicam 2017-12-17 13-01-55-647
JavascriptやJqueryなんかで良く行われている方法で、改行が失われることで純粋に”読みにくく”なります。

ただし、コード中に//でコメントアウトしている場所がある場合は、そこで以降のコードが一気にコメントアウトされてしまうので、/**/でコメントにした方が難読化処理が捗ります。

(逆に言うと、やたら/**/でコメントしている人はそれを意識している可能性が高いのかも)

 

他には、ダミーの変数を作る方法です。

変数名が失われたコードを解読する際には、変数にどの値を代入したかを追っていく作業があります。そのときに、意味が分かっていない変数が何個も出てきてそれが複合的に演算されると追跡作業が困難になるという性質があります。

そのため、実際には意味のない変数をいくつか作っておき、それを変なタイミングで使うと、”多少”対策になります。

 

ちなみに、
faiさんのブログで「極端に巨大な数はデコンパイルされたときに区別がつかずに同じ数字になってしまう」という性質を使った方法もなくはないですが、

必ずしもうまくいかなかったり、逆にデコンパイルしていない状態でもバグになったりするのでオススメはしません。
(あとパッと見で分かるので、そこだけ削除されて終わりだと思います)

 

最終的に最強の手としては、”そもそもex4ファイルにトレード手法を記載しない”ことなんじゃないかと思います。

これはもちろんDLLやライブラリにコードの一部を格納するということでもあるのですが、そっちもデコードされる危険性はある訳です。

 

究極的にはトレードの演算は別のところ(サーバー)でやって、トレードタイミングになったらフラグ(シグナル)をEAに送る、というのが最強だと考えられます。要するにWEBサーバーを使ったコピートレードツール型の認証EAです。

 

なにせ、デコンパイルされたとしても受信機能が見られるだけなので、超安心です。

 

WEBサーバーを経由するコピートレードツールの作り方はこちら

このコメントはWEBに公開されるので、問い合わせ等はメールでお願いします。

関連記事

EA(.ex4)は一般的に編集できませんが…

タイトルですべて終わっているのですが、こういった問い合わせが多いので一応記事にします。 FXONやM

記事を読む

 

  • (↑広告です。このサイトの管理者の運営ではありません)



  • 横瀬兼元(ペンネーム)です。

    ご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    偽者(オリジナルある模倣者)がいるらしいのでご注意ください。
【MT4EA】半年で5万回以上トレードしても右肩上がりにできる証明(EA配布)

(ただし、スプレッドが狭ければ...) EURUSD

no image
(MT4EA)MACDと特殊ベッティング【EA検証班求ム】 

. . 超シンプルなMACDのEAです

MT4の1分足テストで起こる致命的な現象

1分足っていうのは他の時間枠といろいろ違う点があります。 まず、本題か

no image
【EA検証班募集】コツコツドカンとドローダウン(MT4) ~原理は単純を、構造は複雑を、人は最も人らしく~

EURGBP 2018.11.1~2019.4.30 D1 Sp

MT5のテスターではスプレッドは変更できないという事実

を知らない人が多くて、「このバックテストのスプレッドはいくつですか」と

→もっと見る

PAGE TOP ↑