*

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

自動売買における仮想ストップロス、仮想テイクプロフィットの概念と意味

最近の自動売買系の論文やコードを読んでいると「仮想ストップロス」、「仮想テイクプロフィット」という概

記事を読む

MQLxPHP サーバを経由するコピートレードツールを作る5

今回はトレードを受信する側のPHPのスクリプトを書きます。 これが終わればコピーツールの大枠が完成

記事を読む

ニューラルネットワークと自己最適化

MT4のEAから外部ライブラリALGLIBを呼び出し、 多層パーセプトロンを利用して、 自己最適

記事を読む

MQLxPHP サーバを経由するコピートレードツールを作る2

まず、データをサーバに送信するEAを作ります。 飛ばすトレード情報のデータは、 ・チケットナ

記事を読む

トレード専用サーバーが普通のサーバーと違うところ

よく「トレード専用のサーバーがどうたらこうたら~」と言いますが、 具体的に何が違うのかをはっきり知

記事を読む

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

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

H4 EURUSD 2018/1/1~2018/12/31 H

Q&A iCustomのEAのエラーについて

Q. 第24回:iCustomでインジケータをEA化するというサイ

【MT4】SP500,日経225,FX用EA(無料配布)

SP500 2018/1/1~2018/12/31 D1 PF:1.

【MT4】H4, D1用EA(プレゼント企画)

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

質問回答コラム

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

→もっと見る

PAGE TOP ↑