2013年8月30日金曜日

懐かしい人を見つけた

とある人をWeb上で見つけてしまった(謎^^;

そっかー、結局こっちに戻ってるのね。久しぶりに会ってみたい。

2013年8月26日月曜日

exploitとチート

ネタ切れ感があるので、久しぶりにaskchopperなんぞ覗いていみたり。ここまだ生きてる?askchopperのアカウント、昔もってた気がするんだけど、わすれちった><

UO人口からしたら日本が多いんだろうけど、日本のexploitに関するまとめサイトって今はなし???
ん~大手サイト(ようするにパラリ)なんかでこの手の話題を禁じている(だから叩かれやすい)のが大きいんだろうなぁ。あと、日本人の気質として、正攻法の中で効率を求めることをよしとする考えが根強いし。

exploitとチート(プログラムに手を加えて使用の範囲内での自動化等と定義します)ってのも相容れない場合が多いと思う。いや、相容れない、というよりも互いに追求する方向性が違うから知らないだけって気もする。
僕のポリシーとして、「正攻法でやっているようにみせつつ、中ではチートしまくり」ってのを理想とするからでしょうか。「exploitなんぞ使わんでも正攻法をチートで突き詰めれば無問題」ってのもあるか。
そうは言っても仕様の理解を深めるためにはexploitとしてどんなものがあるかは有益なのでチェックは必要ですね。

2013年8月22日木曜日

UO安定期

次のPUB情報もでてこないし、休み明けで仕事忙しいしで、最近は掘り伐採BOTを回しているだけです。

掘り伐採BOT、今設定しているコースだと持っている堀伐採の全キャラをひと通り回すのに4~5時間かかりますw
1日運用しても各シャードごとに4回分になってしまうなぁ。最近はBOTまわしっぱなしwww

2013年8月17日土曜日

UOアシストツール

Razorって今起動できるのかなって試してみたら、、、

なんだ、動くじゃん

Razorは今見てもよくできたアシストツールですね。


2Dクライアントのアシスト系/マクロスクリプト系ツール、UO過疎化でもう新規ツールは作成されないだろうし進化もしないでしょうが、僕の使ったことのあるツールのまとめ(開発休止のものも含む)です。
僕の持っているイメージで大別すると、
 ・認可済(UOAssistだけで派生なし)
 ・ハッキング正統派(USハッカー)
 ・日本系(UOZ hookdllからの派生)
 ・RunUO系(サーバ開発成果物)
 ・欧州系(EasyUO、ドイツハッカー)
 ・東欧系(フリーシャード用開発、ロシアハッカー)
という感じです。

UOAssist
・今の基準で見ると物足りないですが、UOマクロがすこーし進化したとはいえ、2Dクライアント単体でのプレイはやっぱり無理。2Dクライアント単体で1キーでの騎乗ができないってどうなんだろうな。安定度の高さは髄一。

Razor
・少し重いところがありますが仕様範囲での「こんなことできたらいいな」がほぼ入っていると思います。ただし、フリーシャード開発元の開発/配布のため、対人で使える機能は自制しているところがあります。一部uoclistに機能を取り込んでいます。

UOClist
・拙作。もともとUOAssist/Razorで物足りないところを補助するために機能追加していったので、UOAssist/Razorと共存できる(はず、最近は未検証)。

UOZ
・開発停止。このツール(のhookdll)に影響を受けて、僕はUOClistの開発に着手しました。当時の和製ツールにありがちな匂いが(いい意味で)しますw

AssistUO
・Razorの開発停止(Win7以降の64bitOSでの不具合があるから?)にともない、RunUO開発が新規に開発しているアシストツール。ただし現在、僕の環境では動きませんでした><

EasyUO
・スクリプトツールの代表格。僕はマクロ書く/使用はあまり好きな作業ではないので、たまに起動してみる程度。基本的に2dクライアントを乗っ取るかたちで実装しているので、EasyUOからUOマクロを起動する、という芸当ができます。(uoclistにもハックして取り込んだ)

OpenEUO
・EasyUOのスクリプトエンジンをLuaにしたもの?これも1回起動したことがあるだけ。詳細は知りません。

FastLoot
・開発はでつ氏さん。UOZ→UOBの系譜のhookdllを使用してルート機能を強化するためのツールとして生まれたのがもともとの背景。開発自体は停止してますが、ソースコードが公開されているので今も生き続けているといえます。

ZeazyUO(CursedUO)
・開発はShadowさん。FastLootのhookdllのメンテをされたりしていた方がhookdllを利用して作成したスクリプトツール。スクリプト言語はJavascript。上記のように、僕はマクロ書く/使用はあまり好きな作業ではないので、あまり使ったことはないのですが、じきにクローズドなコミュニティに落ちていって今では一般人は使用できないようです。

injection
・開発はYokoさん(ウクライナの人だったかな)。東欧には正規サーバをOrigin/EAは置かなかったので、フリーシャードの設置と並行して開発された、という経緯のもののようです。今は開発停止?というかフリーシャードで使われるサーバのパブリッシュは最新の物である必要はないので、開発の必要性がない、ということでしょうか。ソースコードが公開されているので、UOClistの開発の参考にしました。

irw
・開発はNecr0Potenc3さん(ブラジル)。デコード/エンコード解析の成果物として生まれた感が強いです。開発停止。欧州系、かな。ソースコードを公開されていたので、UOClistの開発の参考にしていました。

UOCompanion
・US製で、Tavuさんの各種dllを組み込んだものだったと思うのですが、開発停止して詳細忘れてしまいました。


2013年8月16日金曜日

画像変換したい!!!(6終)

というわけで、statics??.mulの書き換えをするようにしました。

あっさり。



今日一日の徒労感MAX!!!

まぁ、uopのフォーマット変換の知識は後々役に立つこともあるかもしれないのでよしとします。


追記: ここまでの作業を盛り込んだバージョンを別館の方に置きました。
機能制限バージョンなので変な動きするかもしれないけど。。。

画像変換したい!!!(5)

しつこく研究中。

シャワーを浴びつつ考えていたのだけど、
うらうらツールに引っ張られてオブジェクトの画像を変換するようにしていたのだけど、マップ上の障害物を変更するだけなら、statics0.mulとかを変更した方がいいのかもしれない。こっちは幸いにもmulだし、オブジェクトのIDを書き換えるだけだし。
ただ、statics0x.mulとかもあるなぁ。

ただこの案も、client.exeがログイン画面に書き換わった頃にはメモリにすべて吸いだして以後ファイルマッピング情報を使用しない、なんてことだと徒労に終わるかもしれない。。。

画像変換したい!!!(4)

client.exe起動前に書き換えるんじゃ、うらうらツールを改造したほうがいいよね、っとうらうらツールのダウンロード先を探してみたんですが、もうない><

あったとしても、VBだしなぁ。。。

uoclistでやるとしたら、ランチャー的にclient.exeを一時停止状態で起動、その間にCreateFileMappingかMapOfViewにブレークポイントを仕掛けて再開、CreateFileMappingするファイルはartLegacyMUL.uopだけじゃないので、ブレークの度にチェックすれば、client.exeがメモリ内に辞書を完成させる前に書き換えることができる、って手法でしょうか???

うーん、やっぱりバックアップを取っておいて直接ファイルを書き換え、パッチのときに上書きして戻すほうがシンプルでいい。

画像変換したい!!!(3)

重大な落ち度ががが!!!

変換情報に書き換えても、すでにclient.exeはマップした情報を読み込み済みでした><
そりゃそうだよなぁ、ファイルマッピングしてすぐにやるのは辞書作ることだろうからなぁ。。。
やるとしたら、ファイルマッピングをclient.exeが実行した直後にブレイクして書き換える、っていう、client.exeの実行開始から面倒みなければいけない実装しかないよなぁ。

ということで、事前に書き換えるしかないっぽい???書き換えちゃうと、パッチ当てるときに面倒になるから嫌なんだよなぁ。
PAGE_WRITECOPYでなく、PAGE_READWRITE属性でVirtualProtect()してしまうと、書き換わってしまいます><


画像変換したい!!!(2)

ハッシュ変換したIDがartLegacyMUL.uopから見つからなくて困ってたのですが、、、

そーいえば、スタティックのIDは0x4000のオフセットがあったんじゃなかったっけ?とbuild/artlegacymul/%08d.tgaに0x4000のオフセットをいれてあげたら、、、

見つかったよ^^;;;

にしても、この辺の情報って逆コンパイルから解析して得たものらしいっすね。スゲ!!!


画像変換したい!!!(1)

ということで、コーディングを進めました。

とりあえず、
① artLegacyMUL.uopのファイルマッピングページをVirtualQuery()でプロセスメモリ内から見つける
② 上記ページをVirtualProtect()でPAGE_WRITECOPY属性にする
③ artLegacyMUL.uopのインデックス情報を全て読みだしてみる&ちょこっと書き換えてみる
④ VirtualProtect()でページ属性を元の属性に戻しておく
⑤ ログイン
⑥ 終了
⑦ artLegacyMUL.uopが書き変わっていないことを確認
までは確認してみました。

あとは、どのインデックスを、どの情報に書き換えるか、を準備してhookdllに食わせるだけでうまくいくと思う。多分、、、

元のソースコードは言語はC#で、文字列→ハッシュ→辞書(連想配列)→UOPファイルとしており、C++ STLでいうところのmapを使用して実装しているのですが、hookdllはCで書いているためmapに該当するコードを書き加えるのがめんどっちいから、文字列からのハッシュ値で判定するようになると思います。

ハッシュ関数への入力文字列ですが、printfフォーマットで言うと"build/artlegacymul/%08d.tga" (よくこんなのみつけたな)で、このハッシュのシード(?)が舐めてますw 0xdeadbeef www
(しばらくプログラミングから離れていたので、用語が間違っているかもしれませんがご容赦ください)

追記: 上記は%08x.tga??? あれれ、該当するIDが見つからない><

2013年8月15日木曜日

鍵開け、意外と上がるものですね

完成度の低いUOAマクロを半日回していたら85超えました^^

画像変換のアルゴリズム

これでいける、かな???

(1) あらかじめ、被変換画像IDと変換画像IDを調べておく
(2) さらに、(1)の被変換画像IDと変換画像IDに対応するハッシュIDを調べておく
(3) さらにさらに、(1)の変換画像IDのエントリー情報をartLegacyMUL.uopから抜き出しておく
(4) uoclistのAttachボタンを押す
(5) hookdll内で、artLegacyMUL.uopのファイルマッピング位置を特定
(6) artLegacyMUL.uopの解析/書換開始
(7) ハッシュIDが(2)の被変換画像のハッシュIDと同じだったら、(3)で抜き出しておいたエントリー情報に書き換える
(8) artLegacyMUL.uopの解析/書換終了
(9) ログイン

ログイン前にartLegacyMUL.uopの内容をクライアントが読み出していてキャッシュに保存していなければ、これで成功しそうな気がするんだけど。。。

画像変換の学習

うらうらツールの画像変換、僕も使ってました。木とかサボテンを切り株に変換して動きやすくするために。

ところが、復帰してみたら使えなくなってました><
mulフォーマットがuopフォーマットに置き換わって、もうmulフォーマットでのアップデートはしないみたい。
なので、InsideUOなんかはもう動きませんね。
その後継ツールとしてのUoFiddlerは対応している模様。
UoFiddlerでart.mul/artidx.mulの内容を見ると、なるほど、過去のインデックス最大値だった0x3ffe(だったかな)の馬以降にもグラフィックが追加されています。要するにインデックス容量が足りなくなったので、(開発陣としては仕方なく?)フォーマット変更に踏み切ったというところでしょうか?

ではどうしたら?とちょこっと調べてみると
こちら
のLegacyMULConverter-v4.rarを利用しろ、ということらしいです。
幸いにも、ソース付きです^^
さすがRunUO!!!

ちょろっとソースコードを斜め読みしたところ、uoclistにも利用できそうです。


さて復習。

mulフォーマットの仕様はこちら
artidx.mulのフォーマットを抜き出すと
3.2 ARTIDX.MUL
This file contains an index into ART.MUL. To load a specific tile number in ART.MUL, simply seek BNum * 12, read in the index tile data and use Lookup to find the tile within ART.MUL.
ARTIDX.MUL
Index Record (12 bytes)
0123456789AB
LookupSizeUnknown
DWORD Lookup - Is either undefined ($FFFFFFFF -1) or the file offset in ART.MUL
DWORD Size - Size of the art tile
DWORD Unknown - Unknown

うろ覚えなんだけど、artidx.mulのファイルサイズは12*0x4000で固定値、0から順番にインデックスを割り振り、各インデックスのバイト数は12、先頭4バイトがart.mulに格納されている画像データのオフセット値(上記Lookup)、次の4バイトがデータサイズ(Size)、になる。

なので、mulフォーマットベースで単純に切り株変換したい場合には、artidx.mulのLookupを変換させたい画像のオフセット値に書き換え、Sizeを変換させたい画像のデータサイズに書き換えるだけでよい、だったよな~?

あとはどうやって変換作業を実施するかだなぁ。うらうらツールと同じようにGUIで作業できることが理想だけど、無理っす><単純に被変換/変換のIDを書いたテキストファイルを実行時に読み込む、でいいよね???

2013年8月14日水曜日

鍵開け

こればっかりは、UOAにお任せしたほうがいいな、とひさしぶりにUOA起動してマクロ登録して、マクロの試運転してみました。

だるい。。。

予想はしていましたが、鍵開け(Lockpicking)のスキル上げは苦行です><
スキル50.0をソウルストーンで移して(後から考えると、100にしてから移したほうがよかったか)、51.0まであげてみましたが、だるい。。。

別アカのトレハンキャラはLockpickingGMなわけですが、よくこんなめんどくさい作業を続けたなぁ。サター上げができる前の話なので、95.0からは特に苦行だったろうに。

2013年8月12日月曜日

休みに入ったので

この暑さだと、日中は外に出たくないのでこもりっきり><
UOClistのバグがモリモリあったので直してました。(まだ全部直しきれてないと思う)
ゲーミングマウスとして昔使っていたLogitechのMX510を引っ張り出してきて、サイドボタンを活用できるように改良したり。
あとは、BO対策として青りんごの時間制限に引っかからなければBO後すぐに食べるようにしたり、ルートアイテム対象をゴリゴリハードコーディングして追加したり、くらいですね。

開発は、自分の遊び方の範囲で拡張しているので、その遊び方の範囲が狭いと安定期に入ってしまいます。
私の白豚のアクセはcursedなため、失うのが怖いので、まだまだ活動範囲が狭いです。
久しぶりにDOOM対岸に行ってみたいのですがねぇ、、、劣化版アクセで行ってみようかしらん。

2013年8月4日日曜日

2アカでTデスパやってみた

ケンタウルス×2でボス戦に30分位かかった。
目的のDespicableQuiverが一回目で出たからよかった(物理+10だけど)^^;;;
次もやろうって気にならないなぁ。。。