jtalesを解析してみる その1
マイIPやらルーターやらで最近手を付けていた所が忘れてしまったのでこの機にjtalesを解析したいと思います。
TalesWeaverのエミュ鯖はjtalesというELF形式のファイルを中心に動いているそうな。このファイルを解析することで将来的にはおそらく下記の事項が達成可能と思われます。
・ステータスの上限を255以上に
・Lvの上限、EXPテーブルの上限を255以上に
・Tickの上限値(時間関連)を変更
・〇〇.jtalesを読み込む際のテーブル数の上限の変更
・・・etc
それで解析するにあたってまずELF形式のファイルってなんぞ?ということでちょっと調べてみました。
ELFはExecutable and Linkable Formatの略らしく、直訳すると実行可能およびリンク可能な形式・・・・らしい。ようするにSolaris版のexeファイルってことかな?このELF形式を解析するにあたってobjdumpというコマンドを使用するとプログラムをアセンブリ言語っぽく出力してくれます。Windowsでこのコマンドを使用するにはMinGWをインストールする必要があります。グーグル先生に聞けばすぐ分かるのでインストール方法は割愛。
objdumpの他にもコマンドがありますがまずnmコマンド。オブジェクトファイルのシンボルを表示できるとのことでよく分からず試してみたらずら~~~~~~っと関数だか変数名っぽいものが表示されました。
080cbf41 t _c_LevelManager__canLevelup_
080cbec8 t _c_LevelManager__forcedLevelupExp_
080cdc1d t _c_LevelManager__getFinishByLevel_
080cd475 t _c_LevelManager__increaseUserVital_vitalType_value_
080cb608 t _c_LevelManager__initialize
080cc213 t _c_LevelManager__levelup_
080cbd79 t _c_LevelManager__neededExp_
080cce45 t _c_LevelManager__parseLevelupPointTable
080cb6f1 t _c_LevelManager__parseLevelupTable
080cbe01 t _c_LevelManager__totalNeededExp_
こんな感じに。
あと他にもreadelfコマンド。引数によって出力結果が変わるようですが多分 -w -a付けて出力するのがよろしいかと。出力結果はこんな感じ。
<2><2ced96>: Abbrev Number: 57 (DW_TAG_variable)
<2ced97> DW_AT_name : maxHP
<2ced9d> DW_AT_decl_file : 35
<2ced9e> DW_AT_decl_line : 20572
<2ceda0> DW_AT_type : <0x2989e1>
<2ceda4> DW_AT_location : 2 byte block: 91 60 (DW_OP_fbreg: -32)
<2><2ceda7>: Abbrev Number: 0
<1><2ceda8>: Abbrev Number: 60 (DW_TAG_subprogram)
<2ceda9> DW_AT_sibling : <0x2cee6c>
<2cedad> DW_AT_name : HardCode_itemDownHP
<2cedc1> DW_AT_decl_file : 35
<2cedc2> DW_AT_decl_line : 20620
<2cedc4> DW_AT_prototyped : 1
<2cedc5> DW_AT_type : <0x2989e1>
<2cedc9> DW_AT_low_pc : 0x8272d3d
<2cedcd> DW_AT_high_pc : 0x8272eb2
<2cedd1> DW_AT_frame_base : 1 byte block: 55 (DW_OP_reg5 (ebp))
テキストファイルに書き出したら200万行くらいあってファイルサイズも100MB近くありました(笑)
う~ん・・・・いろいろいじってみたいけどどういじればいいんだ??バイナリエディタでいじっていいのかな?バイナリエディタいじるにしても上記のような出力結果からどう結びつければ良いのだろうか・・・。
もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!