2013年2月24日日曜日

0xdfの情報を使う

まだデバッグ中です。
毎回0xdfのbuff情報を送るのでなく、インジェクションdll側で集計させておく方式にしました。これで安定して情報取得できるかな?
まだ抵抗のMAX値は送られていないようです。(Pub81の仕込み???)

tiledata.mul

uoclistの修正をボチボチと続けてます。
プロトコル情報は、こちらが一番正確かな?

ultimaonlineのファイルフォーマットの調査をひき続いて実施。

tiledata.mulのflagが、4バイトから8バイトに変わったということで、TelMur用のマップデータの作成をしてみました。画像サイズは160*8の512*8、であってる?

結局、map5LegacyMUL.uopファイルは使わずに、map5.mulファイル(日付は2012/01/11)を使用して生成させました。statics5.mul, staidx5.mulはフォーマット的に変わっていないので、大きな間違いはないでしょう^^;;;

久しぶりに、したらばのその他スレを覗いてみましたが、zeazyuoもfasllootさえもuohook5.dllが生きているので、地下では健在なのねw
uohook5.dllの配布(ソース付き)は、lazybonesさんのところでソース付きでされてますね。
あぁ、そういえば、昔たびたびこの方の名前を見たことがあったなぁ、なつかしい~と感傷に浸りました^^

復帰してみて、ちょっと楽しいかな、と思えるのがimbuingのスキル上げ。こういう作業ゲーは好きなので、uosaをリリースとともに買って続けておけばよかったかな、とちょっと後悔。
テイマーで狩りに行って、ゴミアイテムをあさって、生産キャラに抽出してもらう、を繰り返してます。
なので、アイテムの強度評価を、アイテムクリックしたら自動的にしてほしいなぁ、と思う今日このごろ。。。


2013年2月18日月曜日

BANされる???

以下は、ほぼ解決したと思われる後に書いてますw

uoclist動作テスト中なのですが、たまにコネロスが発生しました、ログイン直後とか、リコした先で。
そんなときに、先に書いたようにYou are deadで暗転となったりもするのですが、一番ひどかったのが、キックされたこと><
0x26コマンドなんて、実際に使われるのを目の当たりにしたの、初めてだわ><
メイン垢、メインシャードで、BAN覚悟でやっているのですが、さすがにキックはドキッとした。。。

原因を調べてみても、特に原因らしいコードはみつからないのですよね。
なんでだろなんでだろ、って不具合なさそうなコードのチェック強化をしたり。

落ち着いて現象を分析すると、uoclist自身が落ちるわけではないので、uoclistのメモリエラーとかじゃない。クライアントとの通信部分でクライアントが落ちるんだ、とインジェクションdllの方を眺めてみて、、、理解しました。

UOSAクライアント/サーバになって、サーバから新しいコマンド(0xe5, 0xe6, 0xdf)を大量に送りつけてくるのですよ。で、僕の使っているインジェクションdllは、UOZを起源に(リスペクトして)使い続けているため、インジェクションdllとuoclistとの間をメッセージでやり取りしているのですね。
インジェクションdllでSendMessageしてrecv/sendの情報を逐一渡しているのです。
なので、大量にコマンドを送りつけられると、SendMessageでインジェクションdllの動作が止まる(uoclistでさばくのに時間がかかる)=クライアントのスレッドが止まる=クライアントの描画コードは待ち続けることが出来なくなって音を上げる
これがコネロスの真相だと思う。SendMessageはコード実行をブロックするからねぇ。

ということで、どうせ新コマンドはつかわないから、とインジェクションdllの中で使うコマンド使わないコマンドを選別して使うコマンドだけuoclistに送るようにしてやったら、コネロスは発生しなくなりました。

本当の原因は別にあって、これからもコネロスが発生するかもしれないですが、いまのところは全く発生しておりません^^



2013年2月17日日曜日

uoclistの復活

復活なりました。
ログイン関係を新規に書き起こした関係で、デバッグに手間取りましたが、一部機能省略で復活。
(ログアウトはPDのボタンを押せばいいだけだし、ってことで省略)
デバッグ作業中、固まって、"You are dead."なんて、メッセージとともに暗転してしまったことがあり、焦りました^^;;;;

終わってみれば、当時、パブリッシュが入ったときに行うメンテ作業と変わらない作業量でした。
10年以上かわらないクライアント!!!当時の設計チームの優秀さがよくわかります。10年以上変わらずに現在も使われているアプリなんて、そうそうありませんよね?


やはりこれくらいのサイズでないとやってられません><

ただまぁコマンド自体はアップデートされ続けているわけで、今回の復活でも心配な点が残ります。
0x1aは廃止になった(なる)みたいですね。まだプロトコルとしては機能するけど、ゆくゆくは使えなるのかもしれません。おそらくフリーシャードが一応の市民権を得ている(?)ということで、消されはしないと思っていますが。。。

新規/修正のプロトコルコマンドの参照は、POL Packet's Guide を参照しました。
UltimaOnlineのコマンド参照として古くから使用されているのが、Jerrith's UO Packets Guide。
Jerrith'sの方も参照しつつ作業しました。印刷した紙は今では黄ばんでボロボロ、コメント書きまくりで、年季を感じさせますwwwこれって、当時の開発者が辞めた後で公開しちゃった資料でしたっけ???今ではWeb資料が主流ですが、当時のような印刷を考慮したフォーマットの方が参照作業的には便利ですね。



2013年2月14日木曜日

自分用開発メモ(3)

IDAで、前と同じrecvの位置がすぐにわかりました。
サーチアドレスをチョチョイと書き換えればフックの方はおしまいか???

残る心配事が2つ。

一つは、ゲームデータのフォーマットが変わってるみたいなこと。
*.uop
ってファイルが知らん間に出来てる。。。
アイテムデータは参照したいなぁ。tiledata.mulって今のクライアントでも使っているんだろうか???
一応、更新日を見ると、2012/12/12ってなっているから更新されている、と思いたい^^;;;

と、InsideUO起動して確認してみようとしたら、uopには対応してないみたいで、
UOfiddlerを使え、ということらしい。うーむ、、、

もうひとつの心配事は、チート防止策をうっているかどうか。
なんか、昔、PunkBusterがどうとかこうとか、ってあったように思う。

RazorとかEAサーバーに接続できないし、ZeazyUOは消えてるし、そこいら辺のゴタゴタがあって消滅したんだろうか???EUOは今も健在みたいだけど。

2013年2月12日火曜日

自分用開発メモ(2)

アドレスサーチのアドレスがサーチされるかOllydbgで検索アドレスを入力して試してみたのですが、
recv→NG
send→OK
UOマクロ起動→OK
サイズ変更→OK

なんだ、recvだけ調べればなんとかなりそうなのか。
久しぶりにIDA使ってdisassembleしてみようかな。
UOLogでrecvしたデータの表示に成功してたし(recvデータの書き換えはできるかわからないけど、recv系はUOLogの検索アドレスを使えばいいんだし)、まぁ、見通しがたったか。

しかし、ツールをモジュールごとに作成してこなかったのがツライです。全部入りのアプリしか作成してこなかったので、こういうブランク明けの復帰のときに、全部入りでないと動かないツールの修正は苦労します><

僕がこの手のツールを作成するときに重視するのは、もともと持っている機能をいかしつつ拡張できるかどうか。
たとえばUOAssist。非常に完成度が高いんだけど、不満なところは、UOマクロとの共存。同じキーにUOマクロとUOAマクロを割り当てると、必ずUOAマクロの方を先に実行(優先的にUOAマクロを実行)するのですね、確か。delay使えばいいんだろうけど、後で実行して欲しい、って場面もある、のかな???^^;;;あったような。どうだったかな?

自分用開発メモ(1)

一番手を出しやすい、クライアントのバイナリー調査。
OllyDbgで調べていきます。

やはり、UOSEクライアントとは、構造が変わってますね。
ソース修正はそこそこに、コンパイラの変更でもしたんでしょうか?
変わってないところは全然変わってないし、変わったところは大きく様変わりしてます。

変わってないといえば、クライアントにハードコーディングされたメッセージとかかな。
いまだに、ディザーム時の"You must wait to perform another action."とか直接テキストを書きこむようになってますね。

とりあえず、今すぐに実装しなくてもいいやって思う(検証テストが必要だし)なのは、スタミナチェック関係、スムーズウォーク関係。これらは別にあってもなくてもいいか。

今回の調査で、へぇ、こうだったのか、と新たな発見もいろいろありました。前はちょっと強引に実装していましたので^^;;;内部仕様もしらずに挙動からリバースエンジニアリングだけでCコードを予想して組み立てていくわけで、そこが作業してておもしろいところではあります。

ログイン関係、位置座標と向いている方向、ターゲット/ダブルクリック/ピックアップのID情報、カーソル情報、ガンプ情報
あたりを調べました。位置座標やタゲIDを調べるのに、既知のアイテムやペットを使って調べたのですが、ペットとかIDが更新されちゃったのですね。ペットスロットの修正が過去パブで入ったのでしょうか?(あれ、いないΣ(゚д゚lll)、誰かに譲ったんだっけ?ってペットもいたし)。アイテムIDも、休止前のゴタゴタがあったので、結局一から確かめながら調査を進めました。

前もそうだったのですが、ガンプ関係(PD等)のアドレスを調べるのは骨が折れます。タゲのアドレスなんかは、staticな変数なので、起動のたびにアドレスの移動はなく、一度調べればオシマイなのですが、ガンプ関係は動的にメモリ確保されるので、ガンプの表示/非表示からアドレス変化を探し出し、その変化したアドレスを参照するポインタのアドレスを探し出し、そのポインタを操作するコードを探し出し、と面倒な作業になります。

ログアウトをさせるための実装として前のuoclistでは、
PDを最前面に押し出し、PDが最前面になったらPDの座標を調べ、LOGOUTボタンの座標位置をクリックさせ、LOGOUTガンプを表示されるまでまって、LOGOUTガンプが表示されたら座標を調べて、OKボタンの座標位置をクリックさせる、という面倒な手順を踏んでいました。

今日の調査結果のメモ
LOGOUTガンプが表示されているかどうかのフラグアドレス=955d44、4バイト
最前面ガンプのポインターのポインターのアドレス=955d44+0x28、4バイト(#1)
最前面ガンプのポインターのアドレス=#1に格納されたアドレス+0x58、4バイト(#2)
最前面ガンプのID(?)=#2に格納されたアドレス+0x00、12バイト???
最前面ガンプのX座標=#2に格納されたアドレス+0x34、4バイト
最前面ガンプのY座標=#2に格納されたアドレス+0x38、4バイト
これで正しいのかは、もうちょっと様子見が必要。。。

2013年2月11日月曜日

全シャードにソーサラーセットを

いまさらなのですが。
クリーンアップブリタニア2011(もう2013だけど^^;;;)って、今まで律儀にログインしている人へのプレゼントというべきか、それとも、過去をリセットしたいプロデューサーの意向なのか。。。
AOS~武刀の天地まで、まめにプレゼントをもらっていれば、1キャラごとにソーサラーセットをもらえるんですね。
前のクリーンアップブリタニアよりもポイントアップされてます。前のクリーンアップブリタニアで、ポイント交換してしまうと損になります。おかげで、無限ではあと10000ポイント足りなくってソーサラーセットが完成しなかった><

海外シャードで一番重いのが欧州シャードでした。バルへだとブリ銀にゴミ箱置いてなくって、しかたなくルナ銀まで出張しました。

2013年2月10日日曜日

魔術師の護符って高いんだね

仮復帰しましたが、やったことはセキュアの整理。
これだけで、暇つぶしに十分楽しめるのがUO、ということでしょうか。

魔術師の護符、2つもっているんだけど、sakuraで1つ50Mくらい?

3年くらいやってない(UOSA入った直後に休止しました、課金は続けてたけど^^;;;)ので相場が良く解らん><
なによりわけわからなくしているのが、余計な日本語化。変に訳されてるので、これなんだっけ?ってモノが多いです。

クリーンアップブリタニアがまだ続いている、ってことで、セキュアの整理で、当時交換できなかったソーサラーセットとブーツ5種を2セット揃えました。
DOOM-AFも上限3つまで残す、って感じでぽこぽこ捨てていきましたが、後からベンダーをめぐってみて、影足とか鹿頭とか、捨てずに売ったほうがよかったか?とちょっと後悔><

3年ブランク空いていたんで、装備が古くさいかな~とちょっと心配だったけど、ベンダーめぐって品揃え、プロパティをみた限りはそんなに遜色ないようでほっとしてます。(当然ですが、当時の相場からは大分安くなってますね)

ちょっとベンダーめぐりしてみたところ、SAで登場のアイテムとかやっぱり欲しくなって買いたいんだけど、これからどうやって稼いでいこうか。。。貯金は1億程度だったかな。あれもこれもと買うとすぐ金欠になるし、これからも人が減り続けていくなかで、資金源確保のあては作っておきたいよなぁ。

2013年2月6日水曜日

今って砦くらいなら空き地があるのね

UO sakura

Tのブリ東に砦が立てれる空き地があったので、砦たてました。
とはいえ、砦って使いにくいなぁ。。。ストレージの多さは魅力だけどタワーの方が使い勝手がよい。

2013年2月4日月曜日

UO復活できるのか?

チート系アプリで、UOLogは普通に動きました^^

アプリの作り方を思い出し中です。

UOのパケットを操作する場合、大きく分けて4種類あります。
1つめが、クライアントがrecv()したコマンドを横取りし、必要に応じて加工してクライアントに流す操作。
UOLogが動いたので、復活に向けて希望が持てます。
2つめは、クライアントに擬似的にコマンドを送ってだます操作。これはなくてもいいか。
3つめは、クライアント側にsend()をさせる操作。結構重要なんだけど、後述の追加機能があれば必要ないかも。
4つめは、クライアントがsend()しようとする情報を加工したり削除したりする操作。これもいらないかも。

3つめのクライアント側にsend()させる操作、ってそのアドレスを見つけるのが大変かも。
1つめの操作は、実行コードを解析すると膨大な分岐のcase文として見つけられるので、難易度は低いです。

で、ここまでできたとして、次の難関がEasyUO的な操作の実現。
ようするに、UOマクロを発動させる、ってやつです。これ、結構使える機能かな。EasyUOを動かしながらアドレス探したりするのですが、EasyUOがその辺をこそこそっと処理するため、情報を見つけにくいです。これ、どうやって実装したかなぁ。。。

あとは、クライアントのメモリをよみこんで、自分の座標を確認したり、タゲを書き換えたりって操作。これは、OllyDbgなんかで、変化したメモリを探し出して見つけるだけなんで、難易度は低いです。

うん、なんかできそうな気がしてきた。

zeazyuoとか健在なら、そっからアドレス情報を抜いてくればいいので楽なんだけど、作者さん、やめちゃったのかな><


脱出しよう

ウィルコムのPHSアプリで毎月配信されているやつ。

今月はえらい簡単だったな。少し引っかかったのは、モニタでの矢印操作くらいか。
(とはいえ、E51の反転は153だと間違って、金庫で引っかかっていたのは秘密だw)

このシリーズ、一回クリアすると、コツというかどこら辺をクリックすればよいかとかアイテムの使い方とかわかってくるので、サクサク解けるようになります。

初回はエラく苦労して、WEBにのってるヒント情報を頼りにしました><
PHSアプリなので、こんなのやっている人いるのかなぁって思っていたんだけど、意外といるもんですね。そのことに驚いたwww

2013年2月3日日曜日

SWのリアスピーカー交換

してみました。無理な体勢での作業が続いたので明日は体があちこち痛みそう><
コーン紙が破れて、リアスピーカー鳴らすとビリビリなっていたので、やむなく。
10cmスピーカーがそのまま取り付けられず、1点のボルト止めのみで今日の作業は終了とさせていただきましたw

SWのタイヤのスローパンクチャー後、エアーだけ入れてもらって1ヶ月ほったらかしでしたが、空気圧は維持している模様。サイドウォールのひび割れがひどかったんだけど、まだもつかな???

QP=250馬力、SW=160馬力、程度に落ちているんだろうけど、SWの方がやっぱりパワー感、トルク感、レスポンスがいいですね。乗ってて楽しくなってついついアクセル踏み込んでしまう。

しばらくSWを自宅駐車場に置いて、ナビ取り付けの配線を新設したい。
取り付け作業の資料として、昔はSONYの車種別作業のpdfが役立ちましたが、いまは同じ資料がアルパインに移管されているんですね。SWもQPも資料廃棄されずに残っていてありがたいです。

QPのナビ用のスピードセンサー配線の位置ですが、一昨日作業したときには、助手席からセンターコンソールへ伸びるハーネスの中にスピードセンサーってラベルされた線があったのでそれをつないだんだけど、ナビ側で認識してくれない><SONY(アルパイン)の資料に従って、ステアリング近辺(メーター近辺)の配線から引っ張ってこようと思う。
(その作業が嫌になって、SWを引っ張り出してきたw)

UOのパッチが当たらん

ハードディスクの整理をしていて、久しぶりにUOを起動してみた。

ら、なんか、去年の3月のパッチが当たってから、バッチシステムが変わった、ということのようで、ログイン画面に進まない><

結局、新規にインストールしてログインしてみたんだけど、閑散としてるな。というかまだ続いてたのね^^;;;
僕はカード課金を惰性で続けていて、いまだに家が腐っておらず健在w

UOAが起動しないのは未だ修正できてないんだけど、過去の2Dクライアントをアンインストールする勇気がない。。。

追記:
昔のフォルダーにインストールしたらUOA→パッチ→UOクライアントとすすめることが出来ました。
でも、、、なんかダルいな。今って、チート系ツールはあるのかねぇ???

追記2:
当時と変わらないスペックのPC、回線なんだけど、なんか重い。
またuoclist作りたいなぁ。

当時役立った機能(自分用ありで)
・ターゲットのマーキング
・リストから選択して自動ログイン(シャード、キャラの自動選択)
・画面サイズの拡大(Razorのハックから)

2013年2月2日土曜日

OSD(スーパーインポーズ)

さらに続き。
OSD表示には、Sparkfunから出ている、MAX7456のブレークアウトボードを使う。
こちら
aitendoのはSparkfunとは別物なのか。。。switch-scienceとかから買える。

MAX7456はSPIで制御可能。ArduinoのForumを検索すれば、ライブラリが見つかる。


オーディオミキサーとビデオスイッチ

NAVI搭載時に作成してきた回路の続き。

NAVIのスピーカー出力→ライン入力とし、ミキサーで既存のライン入力に割り込ませる。
オペアンプには、OPA2134を使用。(元にした回路図でそれを使ってたから^^;;;)
抵抗、コンデンサの組み合わせは有り合わせの部品を使ったので、不確か。
オペアンプの負電圧は、LTC1144で負電圧を作った上で、7905で-5Vにした。(正電圧は7805で+5Vにした)



ビデオ出力の方は、スイッチ切り替えとする。
NJM2246使用。




SW1,SW2はArduinoのGPIO出力。ArduinoにXBeeを載っけて、前に作ったArduinoFIO+XBeeのリモコンで通信。






2013年2月1日金曜日

2抵抗のアッテネータ

こちらで書いたリンク先の写し^^;;;

特に音質に拘らなければ、これが一番楽っすよね。
抵抗値の決め方については、リンク先参照で。。。


オンディレイタイマー

某所に貼られていた画像の写しです^^;;;
回路図を作成するのにどんなアプリがよいかいろいろ試しましたが、結局sPlanを使っていくことにしました。
これはこれで、抵抗やコンデンサ(電解コンデンサ)の表記が好みじゃないのだけど、シンプルにさくさく書けて、ICを見たままに置けるってアプリだとこれかな、と。
一応、他に調べたアプリは、LTSpice, EAGLE, TinyCAD, DesignSpark。

このソフトはユニコード化されていないので、μ、Ωを表示させるのに苦労しました。
少し調べてみての結論。

μを表示させるには、欧文フォントで半角のを表示させる。
Ωを表示させるには、BRAZILフォントを使って半角のスを表示させる。

回路の方は、+5Vを入れるとdelay(sec)後にリレーをオンにする、というもの。
この図だと、1.1*0.1*100=11秒後にオンとなる、というもの。


2013/1~のアニメ

新規スタートの中にはめぼしいものはないのかな?

THE UNLIMITED 兵部京介、は録ってる。

あとは、先クールからの続きで、新世界よりとPSYCHO-PASSくらいか。