<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>解析 アーカイブ - MT4解除研究所</title>
	<atom:link href="https://mt4decompile.com/category/%E8%A7%A3%E6%9E%90/feed/" rel="self" type="application/rss+xml" />
	<link>https://mt4decompile.com/category/解析/</link>
	<description>EAの中身を、知るための場所</description>
	<lastBuildDate>Sat, 16 May 2026 02:43:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://mt4decompile.com/wp-content/uploads/2025/12/cropped-cropped-images-32x32.jpg</url>
	<title>解析 アーカイブ - MT4解除研究所</title>
	<link>https://mt4decompile.com/category/解析/</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://mt4decompile.com/category/%E8%A7%A3%E6%9E%90/feed/"/>
	<item>
		<title>Ghidraを使ったEX4解析の実態と、最終的に残る技術的な課題について</title>
		<link>https://mt4decompile.com/ex4-decompile-ghidra/</link>
		
		<dc:creator><![CDATA[MT4解除研究所運営者]]></dc:creator>
		<pubDate>Wed, 24 Dec 2025 04:27:11 +0000</pubDate>
				<category><![CDATA[解析]]></category>
		<guid isPermaLink="false">https://mt4decompile.com/?p=700</guid>

					<description><![CDATA[<p>ex4ファイルをGhidraで開いてみようと思った時点で、あなたはもう初心者ではない。 一般的なデコンパイルツールは試した。コードらしきものも見た。でも、そこから先に進めなかった。だから、Ghidraに辿り着いた。 私は...</p>
<p>投稿 <a href="https://mt4decompile.com/ex4-decompile-ghidra/">Ghidraを使ったEX4解析の実態と、最終的に残る技術的な課題について</a> は <a href="https://mt4decompile.com">MT4解除研究所</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ex4ファイルをGhidraで開いてみようと思った時点で、あなたはもう初心者ではない。</p>



<p class="wp-block-paragraph">一般的なデコンパイルツールは試した。コードらしきものも見た。でも、そこから先に進めなかった。だから、Ghidraに辿り着いた。</p>



<p class="wp-block-paragraph">私はEX4デコンパイルを専門に扱うエンジニアとして、「Ghidraを使ってみたけど、結局どうすればいいのか分からない」という相談を何度も受けてきた。</p>



<p class="wp-block-paragraph">結論から言うと、<strong>Ghidraは確かに強力だが、それでもex4解析には固有の壁がある</strong>。そして、それは技術力の問題ではない。構造上の問題だ。</p>



<div style="text-align:center; margin: 32px 0;">
  <a href="https://formok.com/f/64hux0wy?case_id=4ZAMXB" style="display:inline-block; background:#e8622a; color:#fff; padding:14px 44px; border-radius:50px; font-weight:700; font-size:15px; text-decoration:none;">無料でお見積もり →</a>
  <p style="color:#888; font-size:12px; margin-top:10px;">最短1日で納品可能・実績5,000件以上</p>
</div>



<h2 class="wp-block-heading">Ghidraでex4を開こうとしたときに起きること</h2>



<p class="wp-block-paragraph"><a href="https://github.com/NationalSecurityAgency/ghidra">Ghidra</a>は汎用的なリバースエンジニアリングツールだ。ELF、PE、Mach-O…さまざまなバイナリ形式に対応している。だが、MT4のex4は、その「さまざま」の中に含まれていない。</p>



<h3 class="wp-block-heading">ex4は独自フォーマット</h3>



<p class="wp-block-paragraph">ex4ファイルは、MetaQuotes社が独自に設計したバイトコード形式で構成されている。標準的なバイナリとは構造が違う。命令セットも異なる。セクション分割の概念も独自だ。</p>



<p class="wp-block-paragraph">Ghidraにex4をそのまま放り込んでも、「Unknown Format」と言われるか、誤った形式として読み込まれるだけだ。</p>



<h3 class="wp-block-heading">カスタムローダーが必要になる</h3>



<p class="wp-block-paragraph">Ghidraでex4を解析するには、<strong>カスタムローダー</strong>を用意する必要がある。ex4のヘッダ構造を解釈し、バイトコードをGhidraが理解できる形に変換するスクリプトだ。</p>



<p class="wp-block-paragraph">問題は、このローダーを書くには<strong>ex4の内部仕様を理解している必要がある</strong>ということ。公式には公開されていない情報を、逆算して組み立てることになる。</p>



<h2 class="wp-block-heading">ローダーを用意しても、次の壁がある</h2>



<p class="wp-block-paragraph">仮にカスタムローダーを用意できたとする。Ghidraにex4が読み込まれた。逆アセンブル結果が表示された。ここで、次の現実が待っている。</p>



<h3 class="wp-block-heading">シンボル情報は失われている</h3>



<p class="wp-block-paragraph">元のソースコードにあった変数名、関数名、コメント、引数の意味——これらはコンパイル時に消えている。残っているのはメモリアドレス、命令列、制御フローだけだ。</p>



<p class="wp-block-paragraph">だからGhidraの画面には、<code>FUN_00401234</code>とか<code>DAT_00405abc</code>とか、そんな無機質な名前ばかりが並ぶ。</p>



<h3 class="wp-block-heading">逆コンパイル結果は「推測の塊」</h3>



<p class="wp-block-paragraph">Ghidraには逆コンパイル機能がある。アセンブリコードをC言語風の擬似コードに変換してくれる。でも実際に見ると分かるんだけど、元のコードとは全然違う姿になってる。</p>



<p class="wp-block-paragraph">たとえば、元のMQL4コードが、</p>



<pre class="wp-block-code"><code>if (OrdersTotal() > 0) {
    CloseAllOrders();
}</code></pre>



<p class="wp-block-paragraph">こんな感じだったとする。でもGhidraで逆コンパイルすると、</p>



<pre class="wp-block-code"><code>if (iVar1 > 0) {
    FUN_00401678();
}</code></pre>



<p class="wp-block-paragraph">こうなる。意味は何となく推測できる。でも<code>iVar1</code>が何なのか、<code>FUN_00401678()</code>が何をしてるのかは<strong>文脈から推測するしかない</strong>。元のロジックを正確に再現できるわけではない。</p>



<h2 class="wp-block-heading">MT4特有の構造が、話をさらにややこしくする</h2>



<h3 class="wp-block-heading">外部関数呼び出しが「見えない」</h3>



<p class="wp-block-paragraph">MT4では、<code>OrderSend()</code>や<code>iMA()</code>や<code>AccountBalance()</code>みたいな関数はすべてMT4ランタイムが提供する外部関数だ。ex4の中には<strong>呼び出し部分しか記録されていない</strong>。</p>



<p class="wp-block-paragraph">どの関数を呼んでいるのか、引数が何を意味しているのかを推測するには、MT4の内部仕様を知っている必要がある。しかもこの仕様、公式には公開されてない。</p>



<h3 class="wp-block-heading">インジケーター呼び出しも同じ</h3>



<p class="wp-block-paragraph">カスタムインジケーターを使っている場合、そのロジックはex4の中には含まれていない。別のex4ファイルとして存在している。つまり、<strong>一つのEAを理解するために、複数のファイルを解析する必要がある</strong>。</p>



<h2 class="wp-block-heading">難読化が入ると、もう別次元になる</h2>



<p class="wp-block-paragraph">最近のEAには難読化処理が施されていることが多い。無意味な分岐を大量に挿入する制御フロー難読化、定数や文字列を暗号化するデータ難読化、デバッガの存在を検知して動作を変えるアンチデバッグ——こうなると、もう静的解析だけでは限界だ。</p>



<h2 class="wp-block-heading">Ghidraでできることと、できないこと</h2>



<p class="wp-block-paragraph">Ghidraでできるのは、構造を把握する、制御フローを可視化する、処理の大まかな流れを理解する——「このEAがどういう設計思想で作られているか」という<strong>全体像を掴む</strong>ことだ。</p>



<p class="wp-block-paragraph">一方でできないのは、元のソースコードを完全に復元する、難読化を自動で解除する、口座縛りやブローカー制御を取り除く——これらはGhidraだけでは無理だ。<strong>解析はできても、解除や再構築はできない</strong>。</p>



<div style="text-align:center; margin: 32px 0;">
  <a href="https://formok.com/f/64hux0wy?case_id=4ZAMXB" style="display:inline-block; background:#e8622a; color:#fff; padding:14px 44px; border-radius:50px; font-weight:700; font-size:15px; text-decoration:none;">無料でお見積もり →</a>
  <p style="color:#888; font-size:12px; margin-top:10px;">最短1日で納品可能・実績5,000件以上</p>
</div>



<h2 class="wp-block-heading">結局、Ghidraの先に何があるのか</h2>



<p class="wp-block-paragraph">Ghidraを使い切った後に残る道は多くない。</p>



<p class="wp-block-paragraph">学習として割り切る——「構造が理解できた」「設計思想が掴めた」それで十分という選択。自分で一からEAを書き直すなら、得られた知見は価値がある。</p>



<p class="wp-block-paragraph">完全に諦める——「ここまでやっても無理だった」その判断も正しい。時間とスキルを天秤にかけて引き返すのは健全な選択だ。</p>



<p class="wp-block-paragraph">再構築前提で切り替える——口座縛りを解除したい、自分の環境で動かしたい、元の挙動を維持したいという目的なら、<strong>解析ではなく再構築</strong>が必要になる。これが最終的な到達点になることが多い。</p>



<p class="wp-block-paragraph">・<a href="https://mt4decompile.com/ea-decompile-detected">EAデコンパイル解除はバレる？依頼前に知っておくべき点</a><br>・<a href="https://mt4decompile.com/ea-decompile-illegal/">EAデコンパイル解除は違法か？依頼前に整理しておく考え方</a></p>



<h2 class="wp-block-heading">まとめ｜Ghidraの先にあるもの</h2>



<p class="wp-block-paragraph">Ghidraを使ったex4解析は、技術的には可能だが、完全な復元には至らない。それは失敗ではない。遠回りでもない。現実的な到達点だ。</p>



<p class="wp-block-paragraph">だからこそ、解析を学習で終えるか、再構築へ進むか——この判断だけが残る。</p>



<p class="wp-block-paragraph">静かに、必要な人だけが次に進めばいい。</p>



<div style="margin: 40px 0;">

<div style="background: #1a1a1a; border: 1px solid #2a2a2a; border-radius: 8px; padding: 28px; margin-bottom: 24px;">
  <p style="color: #fff; font-size: 16px; font-weight: 700; margin: 0 0 6px 0;">まずはデコンパイル可能か診断する</p>
  <p style="color: #888; font-size: 13px; margin: 0 0 16px 0;">5つの質問・約1分で判定します</p>
  <style>
    .diag5-q{background:#242424;border:1px solid #333;border-left:3px solid #e8622a;border-radius:6px;padding:14px;margin-bottom:10px}.diag5-q.hidden{display:none}.diag5-q-title{color:#e0e0e0;font-size:13px;font-weight:600;margin-bottom:10px;display:flex;align-items:center;gap:8px}.diag5-qnum{background:#e8622a;color:#fff;width:22px;height:22px;border-radius:50%;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.diag5-options{display:flex;flex-direction:column;gap:6px}.diag5-option{display:flex;align-items:center;padding:8px 12px;background:#1a1a1a;border:1px solid #333;border-radius:4px;cursor:pointer;font-size:13px;color:#ccc;transition:all .2s}.diag5-option:hover{border-color:#e8622a;color:#fff}.diag5-option input{margin-right:8px;accent-color:#e8622a}.diag5-progress{width:100%;height:3px;background:#333;border-radius:2px;margin-bottom:14px}.diag5-progress-fill{height:100%;background:#e8622a;transition:width .3s;border-radius:2px}.diag5-btn{background:#e8622a;color:#fff;border:none;padding:10px 28px;font-size:13px;font-weight:700;border-radius:4px;cursor:pointer;transition:background .2s}.diag5-btn:hover{background:#d05520}.diag5-btn:disabled{background:#444;color:#777;cursor:not-allowed}.diag5-result{background:#242424;border:1px solid #333;border-radius:6px;padding:20px;text-align:center}.diag5-result.hidden{display:none}.diag5-badge{display:inline-block;padding:4px 14px;border-radius:20px;font-size:11px;font-weight:700;margin-bottom:10px;letter-spacing:.5px}.diag5-badge.easy{background:#2e7d32;color:#fff}.diag5-badge.medium{background:#e65100;color:#fff}.diag5-badge.hard{background:#b71c1c;color:#fff}.diag5-result-title{color:#fff;font-size:17px;font-weight:700;margin-bottom:8px}.diag5-result-msg{color:#aaa;font-size:13px;line-height:1.7;margin-bottom:16px}.diag5-cta-btn{display:inline-block;background:#e8622a;color:#fff;padding:12px 32px;border-radius:4px;font-weight:700;font-size:14px;text-decoration:none}.diag5-cta-btn:hover{background:#d05520}
  </style>
  <div id="diag5Form">
    <div id="diag5Progress" class="diag5-progress" style="display:none;"><div id="diag5Fill" class="diag5-progress-fill" style="width:0%"></div></div>
    <div id="diag5Intro" style="text-align:center;padding:10px 0 16px;">
      <button class="diag5-btn" id="diag5Start">診断を開始する →</button>
    </div>
    <div id="diag5Questions" style="display:none;">
      <div class="diag5-q" data-q="1"><div class="diag5-q-title"><span class="diag5-qnum">Q1</span>ファイルの拡張子は？</div><div class="diag5-options"><label class="diag5-option"><input type="radio" name="d5q1" value="ex4"> .ex4ファイル</label><label class="diag5-option"><input type="radio" name="d5q1" value="mq4"> .mq4ファイル（ソースコード）</label><label class="diag5-option"><input type="radio" name="d5q1" value="other"> その他</label></div></div>
      <div class="diag5-q hidden" data-q="2"><div class="diag5-q-title"><span class="diag5-qnum">Q2</span>特定の口座でしか動作しませんか？</div><div class="diag5-options"><label class="diag5-option"><input type="radio" name="d5q2" value="yes"> はい、特定の口座のみ</label><label class="diag5-option"><input type="radio" name="d5q2" value="no"> いいえ、どの口座でも動く</label><label class="diag5-option"><input type="radio" name="d5q2" value="unknown"> わかりません</label></div></div>
      <div class="diag5-q hidden" data-q="3"><div class="diag5-q-title"><span class="diag5-qnum">Q3</span>起動時にエラーが表示されますか？</div><div class="diag5-options"><label class="diag5-option"><input type="radio" name="d5q3" value="account"> 口座番号に関するエラー</label><label class="diag5-option"><input type="radio" name="d5q3" value="other"> 別のエラー</label><label class="diag5-option"><input type="radio" name="d5q3" value="none"> エラーなし</label></div></div>
      <div class="diag5-q hidden" data-q="4"><div class="diag5-q-title"><span class="diag5-qnum">Q4</span>外部DLLファイルを使用していますか？</div><div class="diag5-options"><label class="diag5-option"><input type="radio" name="d5q4" value="yes"> はい</label><label class="diag5-option"><input type="radio" name="d5q4" value="no"> いいえ</label><label class="diag5-option"><input type="radio" name="d5q4" value="unknown"> わかりません</label></div></div>
      <div class="diag5-q hidden" data-q="5"><div class="diag5-q-title"><span class="diag5-qnum">Q5</span>外部サーバーでライセンス認証を行いますか？</div><div class="diag5-options"><label class="diag5-option"><input type="radio" name="d5q5" value="yes"> はい</label><label class="diag5-option"><input type="radio" name="d5q5" value="no"> いいえ</label><label class="diag5-option"><input type="radio" name="d5q5" value="unknown"> わかりません</label></div></div>
      <div style="text-align:center;margin-top:12px;"><button class="diag5-btn" id="diag5Next" disabled>次へ</button></div>
    </div>
    <div class="diag5-result hidden" id="diag5Result">
      <div class="diag5-badge" id="diag5Badge"></div>
      <div class="diag5-result-title" id="diag5Title"></div>
      <div class="diag5-result-msg" id="diag5Msg"></div>
      <a href="https://formok.com/f/64hux0wy?case_id=4ZAMXB" class="diag5-cta-btn">無料で相談する →</a>
    </div>
  </div>
  <script>
  (function(){
    var cur=0,total=5,ans={};
    var s=document.getElementById('diag5Start'),n=document.getElementById('diag5Next');
    var intro=document.getElementById('diag5Intro'),qs=document.getElementById('diag5Questions');
    var res=document.getElementById('diag5Result'),fill=document.getElementById('diag5Fill'),prog=document.getElementById('diag5Progress');
    s.addEventListener('click',function(){intro.style.display='none';qs.style.display='block';prog.style.display='block';cur=1;showQ(1);});
    document.getElementById('diag5Form').addEventListener('change',function(e){if(e.target.type==='radio'){ans[e.target.name]=e.target.value;n.disabled=false;if(cur===total)n.textContent='結果を見る';}});
    n.addEventListener('click',function(){var b=document.querySelector('#diag5Questions [data-q="'+cur+'"]');if(!b)return;b.classList.add('hidden');cur++;fill.style.width=(cur/total*100)+'%';if(cur<=total){showQ(cur);n.disabled=true;n.textContent=cur===total?'結果を見る':'次へ';}else{qs.style.display='none';prog.style.display='none';showResult();}});
    function showQ(i){var b=document.querySelector('#diag5Questions [data-q="'+i+'"]');if(b)b.classList.remove('hidden');}
    function showResult(){res.classList.remove('hidden');var sc=0;if(ans.d5q1==='mq4'){set('easy','すでにソースコードです','mq4ファイルはそのまま編集可能です。口座縛り解除も容易に対応できます。');return;}if(ans.d5q1==='other'){set('medium','ファイル形式の確認が必要です','ex4以外のファイルは対象外になる場合があります。まずはお問い合わせください。');return;}if(ans.d5q3==='other')sc+=2;if(ans.d5q4==='yes')sc+=3;if(ans.d5q4==='unknown')sc+=1;if(ans.d5q5==='yes')sc+=3;if(ans.d5q5==='unknown')sc+=1;if(sc===0)set('easy','デコンパイル可能性：高','標準的な口座縛りのケースです。比較的スムーズに解除できる可能性が高いです。');else if(sc<=2)set('medium','デコンパイル可能性：中〜高','やや複雑な保護が施されている可能性がありますが、多くの場合対応可能です。');else if(sc<=4)set('medium','高度な解析で対応可能','専門的な技術で対応できるケースが多くあります。');else set('hard','詳細診断が必要です','実際のファイルを解析して対応可否を判断します。');}
    function set(lv,title,msg){var b=document.getElementById('diag5Badge');b.className='diag5-badge '+lv;b.textContent={easy:'対応可能性：高',medium:'要詳細確認',hard:'要詳細診断'}[lv];document.getElementById('diag5Title').textContent=title;document.getElementById('diag5Msg').textContent=msg;}
  })();
  </script>
</div>

<div style="text-align:center; margin: 32px 0;">
  <a href="https://formok.com/f/64hux0wy?case_id=4ZAMXB" style="display:inline-block; background:#e8622a; color:#fff; padding:16px 48px; border-radius:50px; font-weight:700; font-size:16px; text-decoration:none;">無料でお見積もり →</a>
  <p style="color:#888; font-size:12px; margin-top:10px;">ファイルを送るだけ。最短1日で納品</p>
</div>

</div>

<p>投稿 <a href="https://mt4decompile.com/ex4-decompile-ghidra/">Ghidraを使ったEX4解析の実態と、最終的に残る技術的な課題について</a> は <a href="https://mt4decompile.com">MT4解除研究所</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
