fc2ブログ
2017/04/27

蔵解析再開・・・!ついにdtx3000以上読み込めるようになったドン!

2chにてOllydbgの使い方を教えてもらえたので公開。
1.OllyDbgで藏開く
2.タブバーのView→Executable modules
3.Executable modulesウインドウの藏をダブクリ
4.右クリ→All referenced text strings
5.Unknown Effect IDで検索してダブクリ

Unknown EffectIDについては後で調べるとして前から解除したかったdtxファイルの制限を解除してみたいと思います。TexImageで検索をかけてASCII "DUfwImageMgr::CreateNewTexImage() error"をダブルクリックして飛びます。

アドレス 16進ダンプ コマンド コメント
00430AA0 /$ 53 PUSH EBX ; InphaseNXD.00430AA0(guessed Arg1)
00430AA1 |. 57 PUSH EDI
00430AA2 |. 8B7C24 0C MOV EDI,DWORD PTR SS:[ARG.1]
00430AA6 |. 81FF B80B0000 CMP EDI,0BB8
00430AAC |. 8BD9 MOV EBX,ECX
00430AAE 72 1B JB SHORT 00430ACB
00430AB0 |. 6A 00 PUSH 0 ; Type = MB_OK|MB_DEFBUTTON1|MB_APPLMODAL
00430AB2 |. 68 688B5B00 PUSH OFFSET 005B8B68 ; Caption = "DUfwImageMgr::CreateNewTexImage() error"
00430AB7 |. 68 3C8A5B00 PUSH OFFSET 005B8A3C ; Text = "UD3"mage Index Overflow."
00430ABC |. 6A 00 PUSH 0 ; hOwner = NULL
00430ABE |. FF15 E8735B00 CALL DWORD PTR DS:[<&USER32.MessageBoxA>

エラーメッセージが出る周辺のアセンブリコードが並んでると思います。んで重要なのは赤字で書かれてる行。ある条件が満たされた時、指定したアドレスへジャンプするので下記のエラーメッセージが出力されるのを防ぐことが出来ます。それでこの部分を書き換えたいと思います。結論から言うと無条件でジャンプさせてしまえばいいのでJB SHORT 00430ACBをJMPSHORT 00430ACBに書き換えてみて下さい。これでtexファイルを3000以上読み込むことが出来るようになります。。確認できたら後は蔵をバイナリエディタで概要の箇所を書き換えます。

なんか色々と書こうと思ったけど眠いので答え書いちゃいますね。
30AA00E、この場所を指してるバイナリ72をEBに書き換えてみて下さい。するとエラーメッセージが出なくなりました。UnknownEffectIDも今後解析してみたいと思います!多分エラーチャックだから回避したとして結局エフェクトが表示されないと思うのですが・・・・まあやれるだけやってみます。



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!

2017/04/26

編集しがいのありそうなd2dファイルまとめ

0000.d2d
アイテム、装備などのアイコンやテキスト、装備条件などを設定できる

0001.d2d
セット装備のテキスト関連、装備時のエフェクト(紅炎とか)などを設定できる。

0002.d2d
メニューなどのUI関連?FIREARROWとかなんでここにあるんやろうか?

0004.d2d
アビリティ関連のテキストが設定できそう。

0006.d2d スキルのアイコン、テキスト関連、最大Lvやらなんやら設定できる。
サーバー側で作成したスキルを特定のXienに入れたい場合もこちらで設定できます。

0008.d2d
状態異常のアイコンを設定できると思う。

0009.d2d
MOBが設定できる(主に名前とグラ)

0010.d2d
NPC関連、グラもここで設定できる

0011.d2d
キャラクターの設定ができるはず。クロエなど未実装キャラはゼリッピのグラフィックがして あるのでそれを変えてTEXファイルを揃えてやればフィールドで動き回すことが出来る。 装備時のグラフィックはd2dを分解したフォルダの中のtxtファイル(ジョシュアなら4.txt)を編集する。

0013.d2d
シエンのアイコンと説明文を設定できる。

0014.d2d
エモーションを設定できそう。

0018.d2d
キャラクター作成画面に出てくるタイプ?の説明文を設定できそう。

0019.d2d
経験値テーブル・・・の何を設定するのだろうか。

0034.d2d
ワープポイントの設定ができる。

0055.d2d
ステータスの必要Pを設定できそう。

0068.d2d
染色の色の定義が設定できそう。

0097.d2d
装備の能力値一覧に表示される装備の種別が設定ができそう。

0105.d2d
ステータスの説明文を設定できそう。DEXとAGIの説明をちょっと修正するくらいしか変更箇所無さそう。

ざっと見た感じこんなもん。スキルエフェクトを設定してるっぽいものが見当たらなかったので、もしかしたらd2aファイルで設定してるのかもしれませんね。何かわかった方いたら2chかここへコメントお願いします!



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!

2017/04/23

蔵解析挫折しました。

蔵の解析やってみて思いましたが断言します。私には無理です。(ついでにjtales本体の解析も)
だってプログラムの動きを見てもどこでエラーメッセージのウィンドウAPIを呼び出してるのか全然わからないんだもん! なのでd2aファイルを解析してtexファイルを3000以内、d2aファイルを19999以内で読み込める方向で行きたいと思います。

んで武器やアイテムのアイコンを設定してるd2aを解析してみました。今回はセイラ魔法師のローブのアイコン0167.dtx.2606.zipを設定 している8689.d2aを読んでみました。

まずアイコンを設定しているだいたいのd2aファイルは最初の8バイトが共通のようです。

0E 02 00 00 00 00 00 00

d2dファイルだと最初の4バイトがテーブルの数だったけどd2aファイルも一緒なのかな?だとしたら46・・・?アイコン設定する 時の値はだいたい0~18だったので19(13)だと思ってたのですが・・・まあとりあえずこれは置いておきましょう。

次9バイト目から4バイトはファイルごとに違うっぽいです。

33 00 00 00

10進数表記だと51・・・3の倍数?

次の4バイトは多分識別コード含んでるかな?

01 00 00 00

17バイト目から4バイト

33 00 00 00

んー9バイト目と同じだな。

21バイト目から8バイトが他ファイルと共通っぽいです。(15バイト目を除く)

「11」 00 00 00 00 00 03 02

29バイト目が16、その次が00、さらにその次が16

16 00 16

10進数表記だと22。22かぁ・・・なんだろうこれ。

32バイト目から15バイト目

00 01 00 00 00 02 00 00 00 00 00 00 00 A7 00

A7は167・・・ん!?0167.dtx.2606.zipの0167じゃないか!?

次の 2バイト

21 0A

10進数表記だと2593。この後のデータをみる限り下記のバイナリがひとつのデータのようです。
A7 00 21 0A 00 00 10 01 00 00 00 04 00 00 16 00 16 00 01 00 00 00 02 00 00 00 00 00 00 00

この後データを見ていくとこのようなデータががあと2回繰り返されるようです。

A7(167) 00 2E 0A(2606) 00 00 10 01(272?) 00 00 00 04 00 04 18(24) 00 18(24) 00 01 00 00 00 02 00 00 00 00 00 00 00

A7(167) 00 2E 0A(2606) 00 00 18 01(280?) 00 00 00 04 00 0E 00 00 00 03 02 18 00 18 00 01 00 00 00 02 00 00 00 00 00 00 00

んー・・・なんだろう、まあ細部まで分からずともaaa.dtx.bbb.zipのaaaとbbbは変えられそうなので、とりあえずtexファイルの3000番以降に欲しいアバター装備がある場合はDACいじくってて2999番以内に収めましょう。もし有志がエラー検出を解除してくだされば本日のお話は無かったことに。

七色の硝子羽実装してみようと思いました・・・がしかしアイコンだけはどうにもならないですね。装備時のグラフィックはファイル名変えればいいですが、アイコンは全部167.dtx.zipにまとまってるので中身を入れ替えるくらいのことができないとダメかぁ・・・はぁ。



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!

2017/04/21

クライアントを解析中その2

色々なサイトを見てたらAPIがうんたらとかフラグがうんたら・・・ワケワカメ。エラーメッセージのダイアログを呼び出すAPIをcallするアドレス周辺にジャンプさせなければ良いってこと?Ollydbg使って解析してますがエラーメッセージ出たところでF7繰り返して探していく感じですよね?

まるで底なし沼に落ちた宝を探しにいく感覚です。それっぽい所を書き換えるといちいちクライアントを起動しなおさなくちゃならないから時間もかかるし非常に面倒。なんかいい探し方ないかなぁ・・・。



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!

2017/04/20

クライアントを解析中・・・難易度が高すぎ

2chにて藏のエラーチェック外せばtexファイルが3000個、DACも20000個以上読み込めるようになるらしいのでクライアントを解析したいと思います。が現状どこから手を付けていいかわからないから機械語を勉強したいと思います。

プログラム的には< 3000 とか <=2999 だったらエラー、もしくは>3000 とか >=2999 じゃなければエラーという感じでエラー出力をしている・・・といいなぁ!InphaseNXD.exeはexeファイルだし使い方が分からないollydbgも出番かな・・・。



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!

2017/04/20

圧縮されたd2aファイルは一応圧縮解除できる・・・がしかし

ZlibUnpacker試したら圧縮解除できたのでとりあえずは456以降のd2aも読み込めるようにはなりましたが・・・さすがに10000以上のファイルを1つ1つ解除なんてバカバカしくてやってられません。なので一括で圧縮解除できるツールを誰かが配布してくれるまではd2aファイルでも解析してみますかね・・・。

それはそれとして・・・イフリートコアのアイコン指定したらCAniMgr::CreateNewObjAni()Error, dwIndex[20071]>=MAX_OBJANI[19999]って出たんですが d2aファイルって19999までしか読み込めないの?あと19999以内に収めるべく適当に18336を指定したらTex Image Index Overflow とか出たんですけど 蔵本体をいじらないといけない感じ・・・?あっ・・・ちょっと頭痛くなってきた。

う~ん・・・鯖側に気に入ったアバター装備やらなんやらダミーテキストに設定しちゃったけどしばらくお蔵入りになりそうだ・・・。



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!

2017/04/18

456のd2aファイルが404じゃ読み込めない!?

はい、してやられました。d2d編集した後、お目当てのアイテムが画面に出る瞬間クラッシュ。d2aファイルの中身を見てみると他の読めてるd2aと中身がだいぶ違ってました。(そもそもサイズが小さすぎ)おそらく456のd2a、いやそれ以降のバージョンのd2aも圧縮か暗号化が施されてるっぽいので456のアイテムを実装するのが困難になってしまいました。むむむ・・・・これはd2aを解析しなきゃいけない流れですかぁー?!


TWCI_2017_4_18_19_54_52.jpg


幸い92TWのd2aは暗号化されてないみたいなので92TWにある雑貨類、装備品は実装できそうです。



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!

2017/04/18

色々並行で作業してたら混乱してきた・・・。


先日からとりあえずジョシュアにゴーストバーストと一撃を実装させることはできたのですがアイコンの設定がうまくいかない・・・。d2aファイルとtexファイルを持ってくればそれで良いと思ったのですが・・・はてはて。

そして次にサーバーで設定した装備とアイテムを0000.d2dにて編集・・・というよりは456や528からの移植作業ですが非常に骨が折れます・・・。私が原因なのですがサーバー側で初級者装備など個人的に絶対使わない装備を115武器などに上書きしていたため、移植先と照らし合わせる作業が発生するのがまず一つ。そして2つ目に456と528にあって404にないカラムなどを削除したりしなければならない為、その作業が非常に苦痛なので皆さんは先にクライアント側で移植作業をしてからサーバー側に装備を実装した方がいいですよ。非常に後悔しています・・・orz

仮に0000.d2dを編集し終わった後、0011.d2dにてグラフィック反映の設定をしなければならないという二重苦。1ヶ月じゃ設定終わら無さそう・・・w



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!

2017/04/17

ツール開発中止のお知らせ

TWエミュ鯖スレその15よりd2d分解結合ツールなるものを公開された方がいて私が開発してるツールよりも全く使い勝手が良さそうだったので中止致しました。ふぅ・・・これで自鯖の構築が進められる・・・59さん、本当にありがとう!

とりあえずジョシュアにゴーストバースト(もどき)と一撃を追加してみたいと思います。あと実装できそうなのは弱化とスペードシールドですね。弱化は毒舌、スペードシールドは木の葉の処理を真似ればいいだけなので形にはなりそうですが・・・アンプリケーションはどうしようか。いや404で魔法の威力を上げるスキルがないんですよ(ついでに被ダメを軽減する効果も)・・・・だもんで情報が出て直接魔法の威力を上げられるようになるまではステータスのINTとDEFを+する効果にしておきますか。

やることリスト

・ジョシュアのスキルに下記のスキルを追加
ゴーストバースト、一撃、弱化、スペードシールド、アンプリケーション

・中級、上級魔法をティチエルとは別に作成する。
おそらくこれでモーション問題は解決すると思われる。

・合成鎧や115~215武器、合成材料やにアイコンを追加する。

・115~215武器のグラフィック・・・って追加できるの??

・クロエ、ランジエの追加・・・できたらいいな。



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!

2017/04/15

0000.d2dを解析ついでにツール開発中

前回前々回でアイコンのいじり方が分かりましたがいちいち手で計算して場所を割り当てるのが面倒だったので下記の画像のようにアイテムIDを入力するとDBTYPEとDBID、アイテム名、アイテムの説明文、アイコンのアドレスが出力されるようにしました。またバイナリエディタのバイナリジャンプ機能を使えば変更したい箇所を間違うことがないと思ったので、入力したIDのアイテムのそれぞれの項目のアドレスを16進数で出力されるようにしました。これがあるのと無いのとjじゃ・・・編集の労力が全然違いますね!


WS0010239.jpg

アイコンまではなんとかなったのですがその次のよく分からない項目を読むための区切りがいまいち理解できてないんですよね。 01 04 とか00 04 とかだったら4バイト区切りにすればいいのですが03 02ってどうすれば区切れるのさ・・・。2chに書き込んでくれた人が
03のことを言ってるなら、
列4byte、行4byte、データ
列4byte、行4byte、データ
・・・
こんな感じになってる。とのことですがむむ・・・・分からん。今日は仕事で疲れてるし考えがまとまらへん・・・・。



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!