refxnexus
@refxnexus

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

MQLの.ex4バイナリファイルについての質問

ソースファイルの文字データが確認できない

以下の.mq4ファイルをコンパイルした.ex4を16進ダンプして、string型の文字列がデータに現れないか確認したかったのですが、abcというデータがダンプしたファイルに出現しませんでした。

どうすればabcというデータをダンプしたファイルから確認することができますか。

該当するソースコード

//test.mq4
string str = "abc";

void OnStart()
{
   Print(str);
}

ダンプしたファイル一部

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000   45 58 2D 01 70 00 63 09 00 00 00 00 00 20 00 00  EX-.p.c...... ..
00000010   A4 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ¤...............
00000020   3A 44 DD 9F 89 66 97 C4 E6 75 35 0B 86 3F 0B 06  :Dݟ‰f—Äæu5.†?..
00000030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000040   01 00 00 00 29 02 00 00 00 00 00 00 00 00 00 00  ....)...........
00000050   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000060   89 03 00 00 00 00 00 00 00 00 00 10 00 00 00 00  ‰...............

例)
こちらの右側の文字列部分にデータとしての"abc"がどこかに現れると想定していました。しかし、結果として"abc"が含まれることはありませんでした。

自分で試したこと

・test.mq4のコンパイル
・powershellによるformat-hex test.ex4 > test.txtコマンド

環境
windows10
metaeditor
version: 5.00 build 2403 21 Mar 2023

お手数をおかけしますが、どうぞよろしくお願い申し上げます。

0

1Answer

ダンプして見つけられるかどうかはex4ファイルのフォーマットに依存します。
文字列をASCIIやUTF-8でエンコーディングで保持しているのであれば見つけられる可能性はありますが、UTF-16のようなエンコーディングで保持しているのであれば検索に工夫が必要です。
また、ファイルが圧縮されていたり暗号化されている場合は見つからないでしょう(圧縮した結果や暗号化された結果から見つかる可能性はありますが、元の文字列として検出されるわけではないです)。

ここの解説を見る限り、コンパイルで独自のフォーマットに変換しているようなのでダンプから見つかることはないでしょう。

0Like

Your answer might help someone💌