*

EAのデコンパイルの実際とその対策

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

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

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

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

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

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

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

つまり、

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

問題は、こういったリバースエンジニアリングをさせないためにどういった対策を行うか、ということです。MQLにはnameof演算子がないので変数名の変化を使うことはできません。

一つは、改行を消して難読化処理をする手があります。
bandicam 2017-12-17 13-01-55-647
JavascriptやJqueryなんかで良く行われている方法で、改行が失われることで純粋に”読みにくく”なります。ただし、コード中に//でコメントアウトしている場所がある場合は、そこでコメントアウトされてしまうので、/**/でコメントにした方が難読化処理が捗ります。

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

二つ目は、ダミーの変数を作る方法です。

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

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

ちなみに、
faiさんのブログで「極端に巨大な数はデコンパイルされたときに一緒になる」という性質を使った方法もなくはないですが、必ずしもうまくいかなかったり、
逆にデコンパイルしていない状態でもバグになったりするのでオススメはしません。
(あとパッと見で分かるので、そこだけ削除されて終わりだと思います)

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

関連記事

no image

シンプルなニューラルネットワークに基づいたEA(の記事)

MQLの記事って、ロシア語->英語->日本語の順に訳されるんで日本語の検索結果に上がるころには結構時

記事を読む

第9回:ロウソク足による条件を作る~3回連続で陽線になったら買うEA~

ロウソク足の記述方法 MQLにはロウソク足の4本値が標準搭載されています。 それぞれ、

記事を読む

第25回:EAに指値注文、逆指値注文でエントリーさせる

EAに指値注文、逆指値注文でエントリーさせる記述 これまでには決済で指値注文、逆指値注文をしてきま

記事を読む

【EA】時には夢のある自動売買グラフを…【プレゼント】

2018/1/1~2018/11/19 H1 EURGBP (...なぜ11/19で

記事を読む

【MQL4】シンプルに稼働するコピートレードツールを作る。その⑩

今回はリバーストレードができるように改良します。 端的に言うと、コピー元と逆向きのポジションをコピ

記事を読む

 
  • ブログ管理人の横瀬兼元(ペンネーム)です。

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽者がいるらしいのでご注意ください。
【MT4】H4, D1用EA(プレゼント企画)

EURUSD 2018/1/1~2018/12/31 D1

質問回答コラム

Q. 管理人さん自身はEAで運用しているのですか A.  して

【MT5】MACD, ストキャスティクス, モメンタムEA(配布)

GBPUSD 2018/1/1~2018/12/31 H2

【MT5】 3通貨相関アービトラージEA(無料プレゼント)

EUR, GBP, USD の3通貨の相関を利用したさや取りトレード

no image
仮想通貨対応マーチンゲールEA(無料配布)

USDJPY 2018/1/1~2018/12/31 Spread:

→もっと見る

PAGE TOP ↑