*

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に公開されるので、問い合わせ等はメールでお願いします。

関連記事

ここが変だよMQL5

MT5を久しぶりにちょっといじってみたので、所見(愚痴)を書かせてください。 ここが変だよMQ

記事を読む

2chの市況版のスレをテキストマイニングして逆張りする

よく「大衆の逆をいけば勝てる」みたいなことが相場の世界では言われますよね。 今回は2chの市況版の

記事を読む

第11回:様々な値を使う~Bid,TimeCurrent(),iOpen(Symbol(),0,0)~

MQLで使える数値を引き出す MQLでは様々な値を簡単な記述で参照することができます。 例え

記事を読む

MT4チャート上で動画を表示する

MT4にはチャート上に画像を表示させる機能があります。 しかし、動画を表示させる機能はありません。

記事を読む

合成通貨アービトラージEA

まず合成通貨のパターンを構成する通貨を選択します。 どんなに採用通貨ペアが少ないFX業者でも利

記事を読む

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

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽物がいるらしいので偽物にご注意ください。
no image
【初心者向け】VPSでWebサーバー構築 (さくらVPSxUbuntu16.04)

今回はサーバーの構築について扱ってみようと思います。VPSを使った一般

no image
2018年中盤~の仮想通貨(ビットコイン)アービトラージの相場について

ちょくちょく「最近、ビットコインのアービトラージどうですか」という質問

no image
最近の海外のEA開発の流行り:ロングとショートのパラメータ群を分ける

表題の通りですが、最近海外製のEAではロングとショートのパラメータを分

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

MQLの記事って、ロシア語->英語->日本語の順に訳されるんで日本語の

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

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

→もっと見る

PAGE TOP ↑