したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

【会員制】ZeazyUO総合スレ03【shadow氏】

1名も無きチーター:2011/04/10(日) 00:51:33 ID:/zOJ49FQ0
ZeazyUO等Shadow氏のツールについてまったり語るスレです。
ZeazyUOはスクリプトツールです。
スクリプト投稿は会員になって本家サイトにお願いします
規約等は本家で確認してください

ZeazyUO公式サイト
http://www.kurinton.net/~shadow/

Q. 動きません。
A. UOHOOK5.DLLが必要です同じ場所もしくはシステムフォルダにいれてください。

Q. UOHOOK5.DLLはどこに有るの?
A. 付属していませんので各自で用意してきてください。

Q. 〇〇のスプリクトください
A. 会員になって本家で手に入れるか、自作してください、作れないなら諦めましょう。

62名も無きチーター:2013/10/07(月) 17:07:29 ID:ICUs2mb20
今年もトリックBOT暴れまくりだな

63名も無きチーター:2013/10/12(土) 17:50:46 ID:S5xs6m0I0
>>60
ちょっと試してみたけど、playerIdが0返すようになってない?

6463:2013/10/12(土) 17:56:20 ID:S5xs6m0I0
すみません、こっちのミスでした!
正しく動作してますね!

ありがとうございます!

65名も無きチーター:2013/10/16(水) 13:26:38 ID:Oxz2bOYg0
P84になって、また不具合が出てませんか?

66申だった人 ◆42P2s/cnNc:2013/10/16(水) 18:53:44 ID:wewT8/6.0
どういった不具合が?

67名も無きチーター:2013/10/16(水) 20:44:19 ID:RiN3c0qc0
>>66
プレイヤーのBackpackが取得できてないんですが。

68申だった人 ◆42P2s/cnNc:2013/10/16(水) 20:52:32 ID:wewT8/6.0
結論からいいますと、uohookの不具合ではありません。
ソース見てもらえばわかりますが、触っているのは1Aだけで、
今回のパッチで変更されたパケットとは無関係です。

69名も無きチーター:2013/10/16(水) 23:06:22 ID:HhLS7W8E0
不具合ではなく仕様です。

70名も無きチーター:2013/10/20(日) 10:25:08 ID:aCLlF9vg0
pub84に対応したuohook5をupして頂ける神降臨に期待

71名も無きチーター:2013/10/21(月) 10:22:44 ID:/M4Vbp9s0
search_patch_adrs あたりの構造がよくわからない
code1からcode1は何を表しているの?

72名も無きチーター:2013/11/03(日) 10:26:14 ID:fNBPR2n60
久々に使ってみたらobject model が違うとか出た・・
last target model 見る限り一緒なのに。
uohook5 の問題なんだろうか。

73名も無きチーター:2013/11/20(水) 02:07:27 ID:1qBuHuXk0
Backpackの取得が未だにできず、対処方法教えてもらませんか・・・

74名も無きチーター:2013/11/20(水) 13:13:19 ID:RZgYt7G.0
諦める

75名も無きチーター:2014/02/08(土) 08:51:30 ID:TWNvgeH60
さすがに超過疎だな
コンテナの中身を別のコンテナにっていう簡単なスクリプトすら動かねーなんでや

76名も無きチーター:2014/02/10(月) 19:17:41 ID:Bn47WGyU0
パケ11が変更されたからではないでしょうか
会員じゃないなら諦めて下さい

77名も無きチーター:2015/09/19(土) 21:47:33 ID:7rCWgPzw0
Shadow氏の失敗は、ユーザに大き過ぎる期待をしてしまったことだろうな

78名も無きチーター:2015/09/20(日) 10:33:34 ID:p9Ffmh.I0
test

79名も無きチーター:2017/09/06(水) 02:39:15 ID:of0IgUUc0
FLスレを見ると PUB84 で 0x78 パケットの仕様変更があったの?
ttp://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1361720326/320

ググったら UO のパケットガイドのサイトを見つけた
Github にも恐らく同じものが置いてあって最終更新は3年前みたい
ttp://necrotoolz.sourceforge.net/kairpacketguide/

80名も無きチーター:2017/09/15(金) 04:42:51 ID:9mIHw1J.0
ZeazyUO 向けに uohook5.dll を packet 0x78 の仕様変更に対応させてみました
自キャラのバックパックID を取得できることは確認しましたが、デバッグにご協力ください
ソースは安定してから公開する予定です

ttps://www.axfc.net/u/3844981

81名も無きチーター:2017/09/15(金) 04:52:34 ID:9mIHw1J.0
>57
ソースを公開していただいてありがとうございます。大変参考になりました。

> uohook5.dllを複数インスタンス対応にしたいなぁと思って

ツールもしくはツール内の uohook5.dll から client.exe を CreateProcess() するのが
よいと思います。そうすれば PID がわかりますし、uohook と client が確実に 1 対 1
になります。Razor もその方式です。

FindWindow() はデスクトップ全体から探すので、1 対 1 にするには向いていないと
思います。

まあ、今の方式は先にクライアントを起動しておいて、後からフックできるのは利点なんですけどね。

82名も無きチーター:2017/09/22(金) 21:36:30 ID:aFkCRAak0
考えてみたら CreateProcess 方式だと、Razor や他のツールと併用できないですね。
ツールと UO クライアントの uohook5.dll を 1対1 にするために、
既に dll がアタッチされているかどうか確認するアプローチを試そうと思いましたが、
その手前で #pragma data_seg ("sharedata") が邪魔してうまく行きませんね。

share 構造体を配列にするか、data_seg を廃止するか、
やっぱり、多重起動への対応は面倒なんですね。

FL はどうやって実現しているんでしょうか。

83名も無きチーター:2017/09/25(月) 01:29:33 ID:75zw0TNM0
パケット 0x08 の検証

UO クライアントは Z = 0x00, Z の次のバイト(grid) = 0xFF として送信する
ZeazyUO は Z = 0xFF, Z の次のバイト(grid) = 0x00 として送信する
Razor は Z = ANY, Z の次のバイト(grid) = 0x00 として送信する

1. Z = 0x00, grid = 0xFF
2. Z = 0xFF, grid = 0x00
3. Z = 0xFF, grid = 0xFF
4. Z = 0x00, grid = 0x00

* 1 の Z = 0x00, grid = 0xFF の場合
* You can not pick that up. となったのは 1/800

* 2 の Z = 0xFF, grid = 0x00 の場合
* You can not pick that up. となったのは 16/800
* もう一度やったら 105/800

* 3 の Z = 0xFF, grid = 0xFF の場合
* You can not pick that up. となったのは 2/800

* 4 の Z = 0x00, grid = 0x00 の場合
* You can not pick that up. となったのは 0/800

2 だけなぜか発生しますね
結果から見ると 2以外ならどれでも良さそうですが
UO クライアントと同じ 1 が妥当でしょうね

4種類の uohook5.dll と検証スクリプトをアップしました
検証にご協力ください

ttps://www.axfc.net/u/3848213

あと、銀行は普通手動で D&D するので X,Y 座標は数値がきちんとセットされています
ZeazyUO は銀行の X,Y 座標を 0xFF に指定するので、ツール特定できそうですね

84名も無きチーター:2017/09/25(月) 02:21:34 ID:75zw0TNM0
uohook5.dll のソースを公開します。
先人の皆様方のソースをベースに pub84 と pub66 に対応させたものです。
解析メモも同梱しています。

ttps://www.axfc.net/u/3848216

デバッグにご協力ください

85名も無きチーター:2018/02/14(水) 23:38:49 ID:fKWyZ4K20
uohook5.dll の若干の不具合を修正しました

ttps://www.axfc.net/u/3888233

修正履歴
- プロセスが残る問題を修正
- 外部 DLL を必要としないように修正
- UO クライアントの各種データファイルをパースするスクリプトを同梱

デバッグにご協力ください

86名も無きチーター:2018/03/27(火) 01:33:10 ID:bTb8WnFo0
ログイン画面が EJ の画像に変更されたことに伴い
ZzAutoLogin.dms の判定処理に変更が必要です

修正前
if (WinApi.GetDeviceCaps(hdc, 12) == 32) {
var pixcol = 0x315218;
修正後
if (WinApi.GetDeviceCaps(hdc, 12) == 32) {
var pixcol = 0x29; // After Pub 99

誰も使ってないのか、情報提供してないだけなのか・・・

87名も無きチーター:2018/03/27(火) 01:39:57 ID:bTb8WnFo0
UO のパケットを直接いじりたい人向けに、Razor のソースを紹介
かなり勉強になります

各パケットの読み込みとパース処理
ttps://github.com/msturgill/razor/blob/a9bec3f16a39a49c8eacb46cdd41dfcaf2c9f11d/Network/Handlers.cs

各パケットの生成処理
ttps://github.com/msturgill/razor/blob/a9bec3f16a39a49c8eacb46cdd41dfcaf2c9f11d/Network/Packets.cs

88名も無きチーター:2018/03/27(火) 12:58:46 ID:XcuCoEfs0
朝から自動ログインさせるほど寝マクロって人はもうほとんどいないでしょう。

ところで、アカウント名入力させるときのクリック座標は変更無しで動きました?
自分のところでは(520,355)を(420,295)にしないと空振りしてました。

89名も無きチーター:2018/03/28(水) 00:03:24 ID:P5CwS/2c0
確かにテキストボックスの位置も変わりましたよね。

アカウントを切り替えることはないので、そっちの分岐には行かず、
パスワード入力→Enter の方しか試していませんでした。
>88 さんの方法でアカウント名付きでもログイン成功しました。
情報ありがとうございます。

90名も無きチーター:2018/05/01(火) 23:47:12 ID:lS8B5fpk0
ZzEuo.pathfind が動作しないので uohook5.dll に代替機能を実装しました
PostMessage で動作するため ZeazyUO のスクリプト内から直接呼ぶことも可能です

ttps://www.axfc.net/u/3907427

修正履歴
- Pathfind による自動移動機能を追加
- プレイヤーのZ座標を取得するメソッド UOHOOK_GetZLoc() を追加
- それぞれの仕様は同梱のドキュメントを参照

EUO と同じ方式ですがメモリ書き換えは行っていません
実験的な機能追加のため、予告なく仕様変更する可能性があります
デバッグにご協力ください

PASS:この投稿の中にキーワードがあります
SHA1:33EB9E75C400AC4CBB03CED1D76F45E7C166299C uohook5_20180501_src.zip

91名も無きチーター:2018/05/02(水) 00:17:07 ID:Eu1I19OQ0
結果的に動作しなかったので、自分用メモ

- EUO のソースを見ると pathfind 機能は client.exe v6.0.6.2 より前と以降との2つのタイプがある
- ZzEuo.pathfind は恐らく前者のタイプで実装されているので現在は動作しない
- 前者のタイプは 0x53,0x55,0x56,0x57 (push ebx; push ebp; push esi; push edi;) という特徴的なバイト列を持つ
- ZeazyUO.exe 内ではこのバイト列は 1ヶ所しかない
- この 4 byte を 0x90,0x90,0x90,0x90 (nop) に変えたが ZzEuo.pathfind は動作しないまま
- 多分、この場所に到達する前のどこかで動作していない
- ZzMapData.getZ も動作していないので、そっちも怪しそうだが力尽きた

ソースが無いものをバイナリ変更するより、ソースがある方を書き換えるほうが楽
爺のソースが見たいなぁ。あと FL系のソースも見たい

[参考]
EUO の pathfind の実装
ttps://github.com/EUOCheffe/easyuo/blob/master/uo/uoevents.pas#L379

UOInterface の pathfind の実装
ttps://github.com/jaryn-kubik/UOInterface/blob/master/UOHooks/OtherHooks.cpp#L66

92名も無きチーター:2018/05/02(水) 00:31:50 ID:Eu1I19OQ0
デバッガでアタッチしてたら警告が出た
ビビリなのでエミュ鯖ですが・・・本番サーバーでも出るかもですね

ttps://www.axfc.net/u/3907468

爺の更新が止まっても uohook 側で機能追加していく道筋は示せたかも

93名も無きチーター:2018/05/13(日) 11:32:13 ID:SFM0Iuu60
おかげさまでZeazyUOが今でも使えるようになっていますが
ZeazyUOがパケットF7に対応していないため、
HSタイプの船などでオブジェクトを認識していないようです。
(船倉のモデルやidがとれない)

パケットF7はパケットF3を複数内包している形なので、
ためしにその分を丸ごと切り出して渡してみましたが
連結されたパケットを許容していないZeazyには反映されませんでした。

どのようにしたらいいものでしょう・・・。

94名も無きチーター:2018/05/13(日) 19:06:10 ID:SFM0Iuu60
ZeazyUOがGuideではなくPOLに準拠した処理が原因だったようです。

uohook5.cppで
*(u16*)(p+ 9) = pf3->amount1;
*( u8*)(p+11) = 0; // ZeasyUO用にここ追加
//*(u16*)(p+11) = pf3->x |= 0x80000000; //ZUOスレ 532様のオリジナルの修正
としたら(確認した範囲では)モデルやカラーが取得できました。
ただし、やはり古いせいかモデルが0x8000以上のものでは
その値を引いたものとして扱わないといけないようです。

95名も無きチーター:2018/05/14(月) 00:09:33 ID:E9iIDOHE0
検証ありがとうございます。
HS を持っておらず、何が問題なのかついていけてないのですが、
F7 が来たら F3 を複数送信するようにしてみたら、UOHOOK の F3 to 1A の処理でうまくいってなさそう、
ということですか?

で、POL のこの処理を実装したら、HSタイプの船のデルやカラーが取得できました、ってことですか?

If (Graphic & 0x8000)
BYTE Increment Counter (increment graphic by this #)

あと、質問ばかりですみませんが、↓はスクリプト内での話ですか?

>ただし、やはり古いせいかモデルが0x8000以上のものでは
>その値を引いたものとして扱わないといけないようです。

ZeazyUO 本体は POL 準拠というのが分かったのはとても有用です
POL 準拠の上記処理を入れることは可能です

96名も無きチーター:2018/05/14(月) 00:46:45 ID:E9iIDOHE0
連投すみません

> *( u8*)(p+11) = 0; // ZeasyUO用にここ追加

↑は、パケット 1A に一つフィールドを追加したってことですよね
で、F7 to F3 to 1A のときは、multi だから 0 をセットしても、たまたま動いたってことでしょうか?

multi 以外で model_id が 0x8000 を超えた時に、何の値セットすればよいのか不明で、ちょっと困ってしまいました
ちなみに Razor は model_id & 0x7FFF としていて、フィールドを追加することはないようです(見てるソースが古いかもですが)

9794:2018/05/14(月) 07:25:22 ID:wZKjVyD20
>>95
>ZeazyUOがGuideではなくPOLに準拠した処理が原因だったようです。
すみません、私の勘違いです。
よく読んだらGuideもPOLも表現が違うだけで、同じでした。

今回の発端はアクセスできるオブジェクトのモデルIDに
0x8000以上の値をもつものが追加されていたことによるものです。
(簡単に見た限りでは徳之島船の「船倉」が0x916F〜0x9177)

そのため、ZeazyUO側の解釈ではフラグビットが立っているとみなされ、
正常なパケット扱いされずにオブジェクトの登録がされなかったようです。

対処としてF7パケットに対してはなにもせずスルーのまま、
convert F3 to 1Aのところで上記条件の場合にフィールド追加
という形で認識が正常に行われるようになりました。

9894:2018/05/14(月) 08:02:42 ID:wZKjVyD20
追加部分に書き込むべき内容については全く不明です。
クライアント(ZeazyUO)側へのものであることから>>94では
とりあえず0を入れてみた感じです。

https://www.axfc.net/u/3910789?key=1a
としたのが現状で、確認した狭い範囲の中では特に異常はなさそうです。

9994:2018/05/14(月) 08:05:42 ID:wZKjVyD20
訂正:
変更部分ミスってます。構造体の配置間違ってる

100名も無きチーター:2018/05/14(月) 14:03:13 ID:qrIgXOJ60
未確認なため、これらはすべて妄想です

修正案1
  *(u16*)(p+7) = pf3->model_id & 0x7FFF;

修正案2
  if (pf3->model_id & 0x8000)
    *(u16*)(p+11) = pf3->direction;

修正案3
  if (pf3->model_id & 0x8000)
    *(u16*)(p+11) = 0;

※全角空白注意

何れにせよ、スクリプト内では モデルID から 0x8000 を引いた値として認識されるなら、固定長で扱える分、修正案1 が良さそうです
ちなみに、532様のすごいところは、全てのフラグを立てることでパケットを常に固定長として扱えるようにしているところ

[仮説]
- art.mul 内では同じモデルでも、向きや色毎に異なるモデルID を持っているが、クライアント内ではそれらは同一のモデルID(基本モデルID と便宜的に呼ぶ) として扱われている
- 基本モデルID から art.mul 内の向き別・色別モデルID を求めるために、1A の追加フィールド (pf3->direction フィールド) が存在する
- 爺本体がこの追加フィールドを使用していないのであれば、修正案2 と修正案3 はどちらであっても違いはない。(描画のために必要な値で、爺では使用していない可能性が高い)

[制限事項]
- 0x8000 以上のモデルID を持つモデルは、スクリプト内では 0x8000 を引いた値として認識される
例) MODEL.TokunoSensou = 0x916F - 0x8000
- スクリプト内では、本当の 0x116F と 0x916F とを区別できない

101名も無きチーター:2018/05/14(月) 14:06:55 ID:qrIgXOJ60
>98 がリンク切れだったのですが、>100 は、その意図を汲み取ってると思ってます

ちなみに、0x8000 を引いたモデルとして認識されてるなら、アイテム名も変わってしまうんでしょうか?
自分で試せって感じですが…

10294:2018/05/15(火) 00:28:38 ID:20T89R.c0
>>100
修正案1にならってMSBを常時1ないしは0にしてみたところ、
サイズさえあわせておけばとりあえずトラブルはなさそうです。

ざっくり調べたところ、0x8000以上のモデルIDは結構使われているようです。
見た感じUOHS以降に追加されたものがそれにあてはまり、
今現在は0xA12Dまでが使用(準備)されているかと思われます。
なので、特定のオブジェクトを検索する際にはモデルIDだけでは
よろしくない場合もあることを念頭におく必要があるかもしれません。

10394:2018/05/15(火) 00:40:23 ID:20T89R.c0
寝ぼけてたようで>>102の修正です。
件の1バイトはどうやらMultiオブジェクトにのみ関わるようです

104名も無きチーター:2018/05/15(火) 02:07:14 ID:JTc0QdvE0
検証ありがとうございます。とても助かります。
当方でも試したところ

修正案1 (追加フィールド無し)は、
- ルナ場内の Moonstone Crystal も徳之島船の船倉 cargo hold も認識しなかった

修正案2 と修正案3 (追加フィールドあり)は、
- 両方ともルナ場内の Moonstone Crystal を 0x9CBB ではなく 0x1CBB としてを認識した
- 両方とも徳之島船の船倉 cargo hold を 0x916F ではなく 0x116F として認識した
- ただ、ヘイブンの徳之島船の船倉は時々うまく検索にヒットしなかった

の結果となりました。94様とは修正案1 の結果が異なるようですが、修正案2 か 3 が無難かもです

別の検証で、pilow (緑地に金色のハート) は、バックパック内では 0x9E1D として認識しますが、
地面に置くと、0x1E1D として認識されます

この辺の違いも考慮してスクリプト書く必要がありそうです
理想は、爺本体のバイナリ書き換えたいですが大変そう…

あと、0x8000 を超えるモデルID については、当方でも画像を作りましたので参考まで

ttps://dotup.org/uploda/dotup.org1533922.jpg.html
ttps://dotup.org/uploda/dotup.org1533923.jpg.html
ttps://dotup.org/uploda/dotup.org1533924.jpg.html

105名も無きチーター:2018/05/16(水) 02:08:03 ID:b/fPLQPA0
ZeazyUO.exe のバイナリ変更

66 25 FF 7F 66 89 43 0C 66 3D 06 20
でバイナリサーチすると(爺のバージョンによらず) 1ヶ所に絞れると思う
そこを下記のように書き換え (FF 7F を FF FF)
66 25 FF FF 66 89 43 0C 66 3D 06 20

意味は eax &= 0x7FFF を eax &= 0xFFFF に変更
この変更と uohook5.cpp ソースの修正案2 か 3 の変更とを合わせると
地面のアイテムも 0x8000 引いた値とならず、元のモデルID で認識されました

解析結果は別途あげるかも
ほんと、94様のおかけです

106名も無きチーター:2018/05/20(日) 20:08:11 ID:dYAM8.eM0
>>105様によるZeazyUO.exe書換え情報のおかげで、
モデルIDの取得・判別はうまくいくようになりました。
ありがとうございます。

なお、パケットF6を受信してもZeazyがスルーしているため、
船の移動時に自身ないしは同乗しているオブジェクトの位置情報が
更新されないという不具合もあったりします。
ただこれはZzInfo.getXYFromMemoryをオンにしてやれば
追従してくれるので問題はなさそうです。

107名も無きチーター:2018/05/23(水) 02:33:53 ID:mCrbBH6c0
報告ありがとうございます。動いているようでよかったです。

F6 については 爺もハンドリングしてませんし、uohook 側での対応も難しそうそうなので
>106 の対処法が良いように思います。

(船の座標が変わった後、サーバーからプレイヤーの座標更新パケットが来るわけではなく
パケットのやり取り無しに、クライアント内部でプレイヤーの座標を再計算しているぽい?)

(爺内の座標とクライアント内の座標がずれたときは、何でもいいのでパケット受信すれば、
同期される作りになっています。なので、open paperdoll とか open status とか適当に
送信するのでもいけそうですが、それより >106 の方法が簡単ですね)

話変わって、パケット 78 についても潜在的には 1A と同じ問題を抱えていて
装備品やペットで 0x8000 以上のモデルID の場合 0x8000 を引いた値で認識される気がします。

まあ、今は問題起きてないようなので、その時が来れば修正する感じですかね

108名も無きチーター:2019/09/18(水) 17:12:59 ID:/PTDBW8w0
パケットを、使って直接ログインさせたいのですが、何か参考になる情報は無いでしょうか。

爺の公式が健在な頃に落としたスクリプトは、クライアント上でID PASを入力する方式でした。
色々思案してるのですが、解決できません。

109名も無きチーター:2019/09/19(木) 01:24:00 ID:5jET.t2A0
C->S: 0x80: Account Login Request (Login Request)
S->C: 0xA8: Servers List (Game Server List)
C->S: 0xA0: Play Server (Select Server)
S->C: 0x8C: Play Server Accept (Connect To Game Server)

* ここまでの接続先IPはログインサーバー、次からの接続先IPはゲームサーバー

C->S: 0x91: Game Server Login
S->C: 0xA9: Characters List (Characters / Starting Locations)
C->S: 0x5D: Play Character (Login Character)

* C = Client, S = Server.
* 0x73 の Ping パケットが時々流れるらしい
* 下記リンク先を参考にしただけで、実際に試したわけではないので誤っている可能性があります
* Razor でパケット記録して観察するとよいと思います

ttps://sites.google.com/site/ultimaonlineoldpackets/protocol/login-server
ttps://sites.google.com/site/ultimaonlineoldpackets/protocol/game-server-login

110名も無きチーター:2019/09/19(木) 14:26:28 ID:lgHvX2bM0
>>109
ありがとうございます。

頂いた情報を元に、トライして見ます。

111<垢ぼ〜ん>:<垢ぼ〜ん>
<垢ぼ〜ん>


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板