逆コンパイル

2016/4/29 記述 Minecraft1.9版

MCP(Mod Coder Pack)を使ってMinecraftを逆コンパイルしよう。
※検証wikiにそぐわないと判断されたら、本ページごと削除してください。

  • JDKインストール
 例:Java SE Development Kit 8u91

  • JDKのパスを通す
 環境変数 PathにJDKのbinを追加する。
 例:C:\Program Files (x86)\Java\jdk1.8.0_91\bin など。
 ※既存のパス壊すとか、ミスらないように注意

  • MCPをダウンロード
 MCP 9.24(beta1)

 MCP公式サイトにはMinecraft 1.8までのMCPしか配置されていない。
 Minecraft1.9の物はbeta中のようである
 MCP開発者Twitterから(+Mojangの中の人でもある(?))
 https://twitter.com/seargedp/status/705970418486788096
 http://www.mediafire.com/download/3ww1inazlkamkcc/mcp924-beta1.zip


  • MCPを解凍する
 配置先はパスの長さなどを考慮し、ドライブルートなどが良い
 以降の例は E:\mcp924-beta1\ に解凍したとして解説する

  • minecraft_server jarをダウンロード・配置
 https://minecraft.net/download
 画面下部のMultiplayer Serverからダウンロードする。

 ※が、現時点の最新版(minecraft_server.1.9.2.jar)だとMCPが未対応(後述)のため、1.9を落とすこと。
 https://s3.amazonaws.com/Minecraft.Download/versions/1.9/minecraft_server.1.9.jar

 ファイル名をminecraft_server.jarに変更し
 E:\mcp924-beta1\jars\に配置する

  • デコンパイル時のヒープの割り当てを変更する
 筆者の環境ではJAVAデフォルトの300Mではデコンパイル時にOutOfMemoryErrorが発生したため、
 以下のようにヒープの割り当てを1Gに設定することで解消した。

 E:\mcp924-beta1\conf\mcp.cfg
 174行目
 修正前:CmdFernflower = %s -jar %s -din=1 -rbr=1 -dgs=1 -asc=1 -rsy=1 -iec=1 -jvn=1 -log=WARN {extra} {indir} {outdir}
 修正後:CmdFernflower = %s -Xms1G -Xmx1G -jar %s -din=1 -rbr=1 -dgs=1 -asc=1 -rsy=1 -iec=1 -jvn=1 -log=WARN {extra} {indir} {outdir}

  • デコンパイル
 E:\mcp924-beta1\decompile.batを起動する

 全てが上手くいけば、
 E:\mcp924-beta1\srcにソースが出力される。
 あとは煮るなり焼くなり(ライセンスの範囲内で)

  • メモ
 E:\mcp924-beta1\docs\README-MCP.TXTは読めれば読むこと。

 クライアント側のlibraries,assets,versionsも配置する必要があるが、
 自動的に%APPDATA%\.minecraftから取得するので、
 バニラの通常インストールであれば考慮不要
 ※%APPDATA%\.minecraft\versions\1.9

 E:\mcp924-beta1\logsにデコンパイル時のログが出力されるためトラブルシューティングに使用する。

 "Decompile failed"で止まる場合、JVMの例外はログに出力されないため
 ログに出力されるデコンパイルコマンドを直接コマンドプロンプトで再実行すると、例外が見れる。
 #OutOfMemoryErrorの時がそうだった

 最新版である1.9.2のデコンパイルは
 設定を変更して実施しても難読化の解除等でエラーとなる(ぽ)
 (E:\mcp924-beta1\conf\version.cfg)

タグ:

その他
+ タグ編集
  • タグ:
  • その他
最終更新:2016年04月30日 18:55