したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

技術情報交換スレ

1管理人★:2004/06/16(水) 20:44
RTXのみならずROや支援ツール全般に関する技術的な情報を交換するスレです。
コーディングに詰まった作者が他力本願的に知恵を増やす目的で設立されましたが、
それだけでなく広く情報交換に使っていただけることを願っています。

管理人の手持ちの情報は少ないですが、RTX/RoTimerの内部動作に関する
御質問などでしたら、できるだけお答えしたいと思います。

規約云々や解析手法の是非などは別スレ/別BBSへ誘導のこと。
水面下に落ちるまではsage縛りで。

42人柱さん:2004/06/24(木) 00:41
>>21
>また、フックするにしても .adata+.data の正規セクション(.text/.rdata/.data)
>への展開が完了したタイミングを検知してからフックしないと成功しないようで、
今までの方法で失敗してる?

タイトルバーに"Ragnarok"と出ていればASProtectの展開は完了してる

現在のクライアントは全言語共通(サクライはちょっと違うがほぼ同じ)
中国鯖(本土)はタイトルバーが違う
clientinfo.xmlの内容で決めているので展開する前ではタイトルバー設定は不可能

>exeのmd5送信は、クライアントの改竄防止としては有効期間が短すぎます。
>むしろ、昔のバグありクライアントを継続使用、といった弱い形での不正利用を
>やんわりと抑止するのが目的ではないでしょうか。
台湾・テスト鯖でもBOT対策と思われるパッチ(移動・アイテム使用パケ長変更)があった
こっちはBOT全滅したがパッチ当て直後は(BOT問わず)Zoneにログイン不可能だった
一週間たたないうちに元に戻してある(中国鯖のftpパッチにもあったが適用されず)

テストされてるんだよ

今回のパッチだけで結論を出すべきじゃない

43人柱さん:2004/06/24(木) 00:44
>>42
INTとIATを使ってフックするものに関しては展開完了していてもできないはず
できるというのはINTを無視して他のAPIHookを使用するツールを完全に排除した場合

44人柱さん:2004/06/24(木) 00:47
>>42
ハムの人?

45人柱さん:2004/06/24(木) 02:04
>>43
最初にフックを仕掛けたアプリがIATからINTを復元する、くらいしか思いつかないなあ。
まあフックが必要なアプリ全部でそのコード持つのも辛いから、
RoAddr.dllあたりにやってもらうか、あるいは独立したIAT復元サーバを作るか。

ところで、あちこちで見る「INT」って、ImportNameTableの略だと推測してるのだけど、
これって(MSDNのPE仕様書で言う)ImportLookupTableと同義?

46人柱さん:2004/06/24(木) 03:37
展開後のイメージ(Neko57v110のPEdump)がW32dsm89で逆汗できるかやってみたが
ASProtectした日蔵はダメだった

47人柱さん:2004/06/24(木) 03:46
それは単にPEヘッダやidataの再構築などができてないだけじゃ?
Unpackerで展開すればきちんと逆アセンブルできますよ

48人柱さん:2004/06/24(木) 09:40
支援スレでこんなカキコを見たんだけど、ホントなのかな?

支援ソフトを"支援する"スレ Ver 8
ttp://jbbs.shitaraba.com/bbs/read.cgi/computer/6135/1085058178/809,811

>ログイン時以外でもマップ移動時にツールを使用している場合に不正パケを送るようになったので、
>RoAddr.ini系のツールを使うとひっかかる、という情報を聞いたのですが本当でしょうか?

>RoAddr.iniがRagexe.exeと同じフォルダにあるとき、なんか送ってるよ。

49人柱さん:2004/06/24(木) 10:58
>>48
ttp://jbbs.shitaraba.com/bbs/read.cgi/computer/6135/1085058178/812,814
も見れ
811は809を煽るただの騙りだぞ

50人柱さん:2004/06/24(木) 11:50
>>48
噂交換スレじゃなくて技術情報交換スレなので、そういった話題を振りたいなら、
自分でパケログを採って、分析結果だけ報告しよう。

51人柱さん:2004/06/24(木) 15:13
>>45
自分で持った方がいいかも

x-koreはフック必要なんで
>独立したIAT復元サーバ
こんなことしたら・・・

別な話
詠唱時間がDEXで減るんだけど
キリエとワープポータルは同じ係数(20ms)減るんだっけ?

それと詠唱時間が必要なスキルDEX0(基本値)時の一覧ある?

52人柱さん:2004/06/24(木) 15:23
>>51 詠唱時間が必要なスキルDEX0(基本値)時の一覧ある?

ttp://acolyte.s26.xrea.com/acolyte.htm
ttp://acolyte.s26.xrea.com/priest.htm

53人柱さん:2004/06/25(金) 03:43
>>52
アコとプリーストだけで
アコ・プリ以外は無いのか

54人柱さん:2004/06/25(金) 03:45
マジWizはこことか。
http://cgi.f31.aaacafe.ne.jp/~wizard/index.php?SkillMagician
http://cgi.f31.aaacafe.ne.jp/~wizard/index.php?SkillWizard

55人柱さん:2004/06/25(金) 18:07
>>51
キャスティング時間が存在するスキルだけをまとめた表というのは
知りませんけど、情報サイト(ROM776とか)にスキル個別のキャスティング時間は
掲載されてますので、そちらで調べた方が早いと思われます。

56人柱さん:2004/06/25(金) 22:05
>>51 >>55
ただ、総合情報サイトは告知とかそのまま載せていることもあるので、各職業特化サイトよりは情報が古いとか正確性に欠けることがあるので鵜呑みにしないようにと。

57人柱さん:2004/06/29(火) 13:18
>51
全スキルの一覧がみすとれ巣にあるはずです。
2月以来更新されてないので信頼性はあんまりないと思いますが。

58人柱さん:2004/06/29(火) 17:14
あまりRTXどころかROのツールにすら直接関係無くて申し訳無いののですが、
当方でも何かしらのツールを作ってみようと考え、まずはどんなパケットが流れるのかを調べてみようと、
FreePeekなるパケットキャプチャのソフトを使用しているのですが、ネットワーク方面は全くといって良いほど
畑違いの分野で…な状態です。

RO関連のパケットを送受信だけを効率良く取れるようなフィルターの設定など
ご教授できればと思い書き込みさせて頂きました。

59人柱さん:2004/06/29(火) 17:19
送信元PortやIPで絞り込めばいいんじゃ?

60人柱さん:2004/06/29(火) 18:04
>>58
http://rosv.zive.net/

61人柱さん:2004/06/29(火) 18:07
>>60
あぁ・・・なるほど・・・
ROの鯖のIPアドレスとポートを列挙して、そのパケットを監視すれば良いのね。

62人柱さん:2004/06/29(火) 22:39
>>58 >>60
現状、5121番に絞ればいけるんじゃないかなっと。

63人柱さん:2004/06/29(火) 23:12
>>62
FreePeekってポートまで指定してフィルタ掛けられたっけ?

他のフリーソフトでポートまで指定できる奴もあったから、
それならいけるかな?

ただ、俺もちょっと疑問に思ったんだが、
ソフトによっては受信時のパケは取れるのに送信時のパケが取れないのもあるんだよな…
フリーでお奨めのソフトってないかね?

64人柱さん:2004/06/29(火) 23:50
FreePeekは知らないけど、Etherealはポートまでいけます。

65人柱さん:2004/06/30(水) 00:16
>>63
>ソフトによっては受信時のパケは取れるのに送信時のパケが取れないのもあるんだよな…
Win98SE使うべし

Win2000・XPは送信時のパケが取れない(場合がある)
Win2000・XPは特殊な仕様(WSASocket)

66人柱さん:2004/06/30(水) 00:22
FreePeekはポートのフィルタできるぞ。
APIhookじゃなくてdevicedriver使うからsocketは関係ない。

67人柱さん:2004/06/30(水) 02:01
FreePeekはWinPCapsライクな自作ドライバだし
EthernalはWinPCaps使ってるから
RawSocket横取りのように取りこぼしはないよ

65氏は多分勘違いしてるかと
RowSocket横取りできるのは確かに2000以降のNTカーネル系なんだけどね

68人柱さん:2004/06/30(水) 02:21
パケットを取ってみて、ちょっと疑問に思った・・・(程度が低い質問で申し訳無い)

FreePeekでアナライズして取得したパケットと、
RoAddr.dllに付属しているサンプルコードを見て、どうにも腑に落ちない・・・

RoAddr.dllのサンプルプログラムでもGetPacketProcのコールバック関数を利用すれば、
アナライズしたソフトと同じように受信したパケット情報のデータはダンプでき、
双方の結果も一緒になった。

で、RoAddr.dllのソースをみると、受信したパケット情報の先頭2バイトが
コマンド?というのかな?
つまりキャラ情報を受信したとか通常会話を受信したとかの区分なんだなという事も大体分かった。

しかしながら、そのサンプルコードで『memcpy(&cmd, p, 2);』でその区分を取ってきた値が、
なぜ1バイト目と2バイト目が逆になったものが出てくるのかが不思議・・・

つまりパケットダンプでは
1A 01・・・・
というふうになってるのに、memcpyで取ってきた値は『0x011a』となっている。
パケットの先頭から2バイトをコピーしてるのに、なぜ逆?

どこかで何かを見落としている様な気がする今日この頃・・・

69人柱さん:2004/06/30(水) 02:29
ネットワークバイトオーダーの話ですか?htonsとかntohlとか。

70人柱さん:2004/06/30(水) 02:31
>>68
「エンディアン(endian)」や「バイトオーダー(byte order)」で調べてみるといいかも。

71人柱さん:2004/06/30(水) 09:40
>>69>>70
なるほど・・・そういえばC言語を覚えたての頃にそんな用語と実験をしたような記憶が・・・(何年前だ)

試しに下記のようにプログラム書いてみた。
確かに実行結果は格納した値の逆で出てきた。

#include <stdio.h>

void main()
{
  unsigned int iValue = 0x12345678;
  unsigned char *cValue = (char *)&iValue;
  printf("x x x x\n", cValue[0], cValue[1], cValue[2], cValue[3]);
}

72人柱さん:2004/06/30(水) 09:41
あ・・・printfの%の部分が消えてる・・・まぁ分かるよね・・・

73人柱さん:2004/06/30(水) 10:24
>>72
ネットワークバイトオーダーと、そのマシンのエンディアンを相互変換するときは、
手動で入れ替えるんじゃなくて>>69のいってるように
ttp://black.sakura.ne.jp/~third/system/winapi/winSock4.html
を使用しる。

74人柱さん:2004/06/30(水) 10:41
>>73
あぁ、単純に値が入れ替わってるという事の確認の為のプログラムなので、
その辺は十分理解しました。

75人柱さん:2004/06/30(水) 13:36
>>68
>で、RoAddr.dllのソースをみると、
読みたいんだけど、手に入らないな...。

76人柱さん:2004/06/30(水) 13:44
>>75
御免。
正確にはRoAddr.dllに付属してくるサンプルソースの事。

77人柱さん:2004/07/01(木) 01:31
さて、また程度の低い質問で申し訳無い。

ネットワークバイトオーダーあたりもある程度は理解し、
とりあえず受信パケットでダンプしたりして、
よくある発言やチャット会話のログなんかを出力してみたりして遊んでみました。

そこで、この受信したパケット情報を使って何か今までに無い新しいツールは無いものかと思案した結果、
Gvの砦前で敵勢力が終結した時に、どのギルドの人間が何人居るかという情報を画面に表示できれば、
砦前監視役の人間の報告が楽になるのでは?と考えた。

パケットを見る限り、恐らくキャラIDやら名前やらギルド名やら役職などの情報も受信しており、
それらの情報を抜き出してログに出してしまうと、某Lv抜きツールになってしまう恐れがあるが、
単純に、○○ギルド△△人という情報だけならば、そこまで問題にならないような気がします。

そこで、質問なのですが、受信パケットに『ギルドID』なるものは存在するのでしょうか?
そもそも『ギルドID』なるものがRO自体に存在するかも分からないのですが、
データベースの事も考えると恐らく存在していると思っています。

また、ギルドIDが存在するならば、どのパケットの時の何バイト目からの情報がギルドIDなのでしょうか?
(そもそもこういった情報ってパケットだけで調べる方法がわからないです)

78人柱さん:2004/07/01(木) 02:22
>>77
ギルド名はキャラクターにカーソルを合わせたときに送られてくるキャラ名パケと共に文字列で送られてきます。
それ以外に他人のギルド情報がパケに乗っているかどうかは知りません。
他になければ実装はかなり厳しいでしょう。

>そもそもこういった情報ってパケットだけで調べる方法がわからないです
ひたすらバイト列とにらめっこ。一握りの勘。それだけです。

79人柱さん:2004/07/01(木) 02:35
>>78
キャラにカーソルを合わせた時に、0x0095と0x0195の場合にキャラ情報を受信する事と、
0x0095はギルドに所属していないキャラの情報で、
0x0195はギルドに所属しているキャラの情報という事まではパケットダンプの情報で分かりました。
また、0x0195にギルド名の情報もある事も確認しました。

最初は、これらの情報を使い、キャラIDとギルド名を取り出し、
キャラIDは単純に人数のカウントの重複を避けるために使用し、
画面に例えば

ABCD同盟(52人)
【A:12人 B:19人 C:10人 D:11人】

EFGH同盟(○○人)
【E:XX人 F:XX人 G:XX人 H:XX人】

無所属(9人)

などのように画面内の任意の位置に表示ようと考えてました。
(正確に人数をカウントできないかもしれないけど、ある程度の目安として・・・)

同盟関連などは設定ファイルなどを使用し、どのギルドが何処と同盟で通称○○同盟などという情報は
使用者に編集してもらおうと思っていましたが、文字だけで管理すると1文字間違えただけでも集計がおかしくなります。

そこで、キャラIDとは違いギルドIDならば抜き出しても悪用されるような事は無いだろうと考え、
ギルドIDとギルド名の対応表が作れればと考えていました。

80人柱さん:2004/07/01(木) 03:28
ギルドIDはキャラ列挙出現移動系パケに入ってる
どこに入ってるかはパケログ見つめりゃわかる

81人柱さん:2004/07/01(木) 06:21
S 0151 <guild ID>.l
エンブレム要求

らしいね

82人柱さん:2004/07/01(木) 10:40
>>81
>S 0151 <guild ID>.l
>エンブレム要求

>らしいね

この『S』って『Send』ってことで送信パケって意味でいいのかな?
逆に『R』が『Rcev』で受信パケ?

RoAddr.dllで送信パケまで見れないですよね?
それにその送信パケでギルドIDを取り出したとして、ギルド名とギルドIDの対応付けをどうするのかが疑問。

とりあえず、>>80の情報のパケットダンプで、同じギルドに所属してる人間のダンプ結果を並べて、
ANDで同じ部分のバイト列を列挙して、次に違うギルドの人間のダンプ結果を並べて、
XORで異なる部分のバイト列を列挙している。

同じギルドの人間なら、同じ並びのバイト列が存在して、
違うギルドなら上で調べたバイト列が異なるって事だから、
多分方法的には間違ってないと思うんだが、いかんせんギルドIDとかのバイト長も分からないからなかなか確信持てない。

83人柱さん:2004/07/01(木) 11:47
・同じキャラを二つのギルドに所属させて比較する
・エンブレムのファイル名と比較する

84人柱さん:2004/07/01(木) 15:09
カーソルを合わせないでもGvMapでキャラの頭上にエンブレムが出ることから察しましょう

85人柱さん:2004/07/01(木) 15:53
あの・・・今回の解決方法をはやく書いていただきたいのですが・・・
こちらとしても突破口のヒントが欲しいので・・・

86人柱さん:2004/07/01(木) 16:05
>>85
何様ですか

87人柱さん:2004/07/01(木) 16:10
>>86
釣りorBOTer様だろ

88人柱さん:2004/07/01(木) 16:42
>>83>>84
エンブレムか・・・盲点だった・・・

確かに異なるPC・異なるアカウントでログインして、エンブレムのファイル名とファイルの内容は同じ物だった。

ただ、此れはギルマスじゃないと出来ないので質問で申し訳無いのだが、
エンブレムのファイル名がギルドIDだとすると、エンブレムを変えた場合、エンブレムのファイルの内容も同様に書き換わるという事でいいのか?
もし、エンブレムのファイル内容まで書き換わるなら、WIKIやGv関連のHPなどでGv結果でギルド名とエンブレムを書くときに、
ギルド情報をDB化しておけば、エンブレムも自動で拾えるってことですね?

Gvでの砦取得状況をログに出し、ギルド名、ギルドID、エンブレムをDB化しておけば、
PerlなどでGv結果の一覧をすぐに出力できると・・・

良い感じでツールの構想が膨らんできました。

89人柱さん:2004/07/01(木) 16:47
ワールド名_ID_更新回数.ebm

らしいね

90人柱さん:2004/07/01(木) 16:52
>>88
ちなみに、RoAddr.dllに依存するならPv/GvMapでは動かないことを頭に入れておきましょう

91人柱さん:2004/07/01(木) 16:56
>>90
承知しております。

Gv関連の機能といっても、砦取得のログもGvエリア以外で取るつもりですし、
今考えてる、砦前での監視員用の敵勢力終結の情報表示機能も、
砦の外での情報ですので問題無いと考えています。

92人柱さん:2004/07/01(木) 17:21
とりあえず、01daの場合のパケットで、39バイト目と40バイト目でギルドID、43バイト目で更新回数が取れました。

ただ、ギルドID2バイト、更新回数1バイトじゃ少ない気がしますし、
エンブレムでも更新回数部分が256を越えるものもありましたので、もっとバイト数は多いはずですね。

恐らく、39-42の4バイトがギルドIDで43-46の4バイトか43-44の2バイトが更新回数って所でしょうか・・・
ワールド名ってこのパケの中にワールドIDなるものでも入ってるのかな?
それとも別なのかな・・・

93人柱さん:2004/07/01(木) 17:30
そのぐらいお願いだから逆汗して調べてください…

94人柱さん:2004/07/01(木) 17:46
>>93
パケログみるだけじゃなくて、逆アセンブラも有効な手段なのね・・・
了解した。

95人柱さん:2004/07/01(木) 20:39
93は明らかに釣りだろw
とりあえず私も調べてみるとするか

9695:2004/07/01(木) 20:59
01d8
byte 34-37 guildId, 38-41 updateCount
かな?

01d9, 01daはシラネ

97人柱さん:2004/07/01(木) 22:09
>>93
OLLYDBGなる逆アセンブルソフト使用して、何となく眺めて勉強してます。
ちなみに、RoAddr.iniの値算出程度は出来ますが・・・

修行を積んで精進してきます。

>>96
情報サンクス。
01d9の場合も01d8と同じ場所がギルドIDと更新回数みたいですね。

問題は鯖名だけど、この情報はやっぱりログインしたときの情報で取ってくるしかないのかな・・・
パケログ見ると、ワールドグループ選択後の鯖が列挙されてるデータとかあるから、
キャラがログインした時あたりのパケに、現在の鯖が何処なのかが分かるパケ情報があるのかな?

激しく質問ばかりで申し訳無い。

※実際に調べてる人ってどんな手段で調べてるんだろう・・・
※こういった調べ方も技術情報としては有用なんだろうけど・・・

98人柱さん:2004/07/01(木) 22:12
接続先のIPアドレスでわかるだろ

99人柱さん:2004/07/01(木) 22:17
というかRoAddr.dllのAPIでワールド名は取れるだろ

100人柱さん:2004/07/01(木) 22:31
>99
全くその通りでした・・・
RoAddr.dllのヘッダーを見る前にDependencyWalkerでエクスポートされてる関数まで見てしまった・・・

まさしく、色んな所を万遍なく見ないといけないという事ですね。

101人柱さん:2004/07/06(火) 21:03
ASProtectかかってる状態でのフックって皆さんどのような感じで?
ASPROTECT 1.22 - 1.32 beta 21を眺めるもちんぷんかんぷん…でして…。

102人柱さん:2004/07/06(火) 22:07
>>101
CBTHook掛けてragexe.exeから呼び出された時に色々したり、とか。

103人柱さん:2004/07/07(水) 11:02
>>96
0078 #Zc_Notify_Newentry 01D8 #Zc_Notify_Newentry2(isPc)
0079 #Zc_Notify_Standentry 01D9 #Zc_Notify_Standentry2(isPc)
guildid 34-37
guildemblemversion 38-39
honor 40-41
virtue 42-43

007B #Zc_Notify_Moveentry 01DA #Zc_Notify_Moveentry2(isPc)
guildid 38-41
guildemblemversion 42-43
honor 44-45
virtue 46-47

104人柱さん:2004/07/07(水) 14:20
>>101
普通のシステムフック(グローバルフック)だけなら別にASProtectは関係無いかと。
問題はAPI Hook(DLL Injection)で、どうもINTを上書きしてIATを作っているみたいで、本来のINTが消滅している風味です。
なので、INTを使ってフックすると上手くいかず、IATを使ってフックすると、他とのツールとの共存が難しいと。
INTの復元という手も無いわけではないですが、復元を担当するツールの処理後に他のツールがINTを参照しないと意味が無い(しかもROの本体がメモリ上に解凍された後でなければならない)わけで。
色々と難しそうです。

105人柱さん:2004/07/07(水) 18:24
別に難しくはないよ。倫理的(藁)に問題になりそうだから誰もやらないだけ。

106人柱さん:2004/07/07(水) 21:07
>>105
誰もやらないだけ、って開発者を代表してるような喪前様は一体!?

それはさておき >>104 は別にフックが難しいって言ってるわけじゃないでしょ。

フックだけならOrdinalで決め打ちでもエクスポートテーブルから遡及でも、
いかようにもできるんだし。

でも、互いに合意を経てないツール間で競合しないようにフックさせるのが
INTないと難しいよね、って言ってるんでしょ。

>>105 がそれも見越して 「難しくない」 って言ったのなら素直に凄いと思う。
というか、ぜひ教えてください(;´Д`)人

107人柱さん:2004/07/07(水) 23:03
INT無しでもGetProcAddress関数本体の書き換え等によってチェインさせることは出来たりします。
しかし、この方法だとどのツールよりも先にroのプロセス空間上にロードされなければならないとか
kernel32.dllのImage部分のアクセス権変えられないとどうしようもないとかいう問題がありますが。

108人柱さん:2004/07/08(木) 00:08
ココは情報「交換」スレであって情報を「請う」場所ではないと思うのは俺だけか?

109人柱さん:2004/07/08(木) 00:42
以前、APIフックのやり方について
ツール作者間で調停がもたれたような話を聞いた記憶があるんですが、
これは事実でしょうか? 事実であれば、その内容(調停法)は公開されてますか?

110人柱さん:2004/07/08(木) 00:53
>>109
明確な調停にはいたっていません
ただコミュニティに所属しているツール作者はつねに情報を共有しているので、
その中での仕様のすり合わせとかは、必要に応じてされうると思います。

111人柱さん:2004/07/08(木) 03:25
ところでRTXのアドレス自動解析って何をやってるんでしょうか?

最初は逆アセしてパターン認識をやってるのかとも思ったのですが解析に
かかる時間と実装の手間は半端じゃなさそうです。
ログイン中にEnter押して先に行くと解析が失敗すうことから鑑みるに、
某板にあったようなメモリから特定文字列を検索・その付近に特定の構造体
があると仮定して構造体の親子構造から正当性をチェックってところでしょ
うか?

112人柱さん:2004/07/08(木) 08:17
>>104-107 >>109-1111
RoAddr.dllにやらせればいい

RTXのRoAddr.dllを使わないやつはRTXだけでやる(他のフックするツールは使用不可)

と暴言を...

113人柱さん:2004/07/08(木) 08:52
RoAddr.dllとか無駄なものが付いてしまった物は使いたくない

114人柱さん:2004/07/08(木) 10:38
RoAddr.dllだと自分の求める機能を実装できないってのがありそうだ
recvをhookして、Ragexe.exeに渡す内容を書き換えるとか

115人柱さん:2004/07/08(木) 12:19
Ragexe.exeに渡す内容を書き換えたらそりゃもうチートだろ

116人柱さん:2004/07/08(木) 12:29
ならRTXもだな。残念だ。
DDraw/D3Dから渡すポインタ書き換えてるしな

117114:2004/07/08(木) 12:42
議論は別スレでお願いしたい、あくまでもRoAddr.dllでは実現不可能な一例を出したに過ぎない。

#177TOOLとかでできるんだろうけど、アレは一時配布場所がわからんから怖い

118人柱さん:2004/07/08(木) 19:42
>>113
xxxツールでは必須だとしても使わないの?

>>114-115
>recvをhookして、Ragexe.exeに渡す内容を書き換えるとか
GMメッセ(のパケ)使って経験値効率表示するとか?

>>117
>アレは一時配布場所がわからんから怖い
そりゃ
ウィルスが入ってる可能性もあるな

某所では某(DS)ツール作者だと噂が・・・

119114:2004/07/08(木) 20:43
>>118
テレポなどでのキャラ出現->消滅エフェクト、オーラエフェクトを消す、露店を消す
とか微妙な機能の実装ができそうだ。

120人柱さん:2004/07/08(木) 21:43
オリジナルのIATのアドレス算出は…楽な方法あるんでしょうか。
それっぽいのを探していくしかないもんなんかな…

121人柱さん:2004/07/08(木) 22:12
>>120

つ[リダイレクションブリッジを使って検索]

つ[APIAddress使って総当りで検索]

122人柱さん:2004/07/08(木) 22:18
>>119
>オーラエフェクトを消す、露店を消す
ぽかーん

とか言いながら
>オーラエフェクトを消す
実装したが数週間後やめた
>露店を消す
看板消しはやった(チャット消しも)

ここで話す内容ではない

>>120
packされたままの状態でできないかな?(ASProtectの解析になってしまう・・・)

123104:2004/07/09(金) 02:53
>>120
IAT群そのものは、(Ragexeにかけられている現状のASProtectでは)
比較的簡単に計算可能です(もちろん、packされた状態です)。
ただ、そのIAT群自体はAPIのアドレスが羅列されたタダの配列の群れですので、
1.どのモジュールの
2.どのAPIのアドレス
であるかがそのままでは分からないです。
1については、色々計算できそうな目処があるのですが、問題は2で、
目的のAPIのアドレスを見つけるには、実際に自分で取得した(させた)
APIのアドレスと比較するしか、ミジンコな私には思いつきません(汗。
このままでは皆さんが考えるとおり、既に他のツールに置き換えられて
いる場合、オリジナルのAPIアドレスと比較しても見つからないわけです。

リダイレクションブリッジは……すません、勉強してきます_no

124人柱さん:2004/07/28(水) 16:32
http://yokohama.cool.ne.jp/monooki2001/are.html
ここにあるパケットフィルタ使えばRTXでいろいろ検証できますよ

125人柱さん:2004/08/24(火) 21:17
http://kazumi.jdyn.cc:9801/uploader/stored/up1677.zip

126人柱さん:2004/09/02(木) 17:39
要不要は置いておきましてボスが使う非攻撃系スキルIDを知ってる範囲で

skillid: 0x160 val: -1 取り巻き呼び戻し(ボスの周辺にテレポートさせる)
skillid: 0x15d val: -1 爆裂波動の効果音が発生し、Atkが3倍程度の状態になる

127人柱さん:2004/10/18(月) 22:18
skillid: 0x09e〜skillid: 0x0d1 亀島実装時のモンスター専用スキル

skillid: 0x14b 不明、未確認。
skillid: 0x14c 不明、未確認。
skillid: 0x14d 不明、未確認。

# skillid: 0x14e〜skillid: 0x150 結婚スキル。Unknownskillではない。

skillid: 0x151 不明、未確認。
skillid: 0x152 不明、未確認。エフェクトはホーリークロスのもの。
skillid: 0x153 闇属性グランドクロス
skillid: 0x154 闇属性SS
skillid: 0x155 闇属性JT
skillid: 0x156 行動不能化。ドリアードやバースリーが使用
skillid: 0x157 不明。タートルジェネラルが使用。支援タイプ(011aパケットで確認)。
skillid: 0x158 鎧破壊攻撃
skillid: 0x159 兜破壊攻撃
skillid: 0x15a 盾破壊攻撃
skillid: 0x15b 不死属性攻撃
skillid: 0x15c 鎧を不死属性にする攻撃。LODやドラキュラが使用
skillid: 0x15d ATKが3倍くらいになる支援スキル。赤い爆裂波動のようなエフェクト。
skillid: 0x15e 速度増加のような支援スキル。移動速度が2倍になり、Fleeが上昇。盗蟲、一部ボスが使用。
skillid: 0x15f 不明、未確認
skillid: 0x160 取り巻き呼び戻し(ボスの周辺にテレポートさせる)
skillid: 0x161 クローキングのような支援スキル。クローキングとの違いは、範囲攻撃スキル無効。
skillid: 0x162 不明。天邪仙人が使用。支援タイプ(011aパケットで確認)。
以降未確認

Unknownskillはこんな感じなのですが、不明部分が分かる方いませんか?

128人柱さん:2004/12/11(土) 22:55
RTXのようにカメラ回転に同期させた描画をやろうと勉強中の者です

(1)DrawPrimitive()の引数を解析して敵位置の画面座標矩形とかは出せるようになりましたが
  敵のID(敵種別のIDじゃなくてキャラでいうアカウントIDのほう)に結びつけられません
  RTXではどうやってるんでしょうか

(2)MPADとかは敵がいなくても出せるわけで、RTXは(1)の方法じゃなくても自由にゲーム内
  座標とスクリーン座標を(しかもリアルタイムに)変換できてると思うんですが、アフィン変換
  の要素らしきものはメモリで見つけたんですが、奥行き補正がどうしてもできません
  決定的にパラメータが足りないように思われるんですが、どうやってるんでしょうか

聞いてばっかりですがどうか御教授ください(;´Д`)人

129Mystle </b><font color=#FF0000>(M.B.S.4s)</font><b>:2004/12/12(日) 17:19
RTXの3D計算には新型、旧型の2種類の方法があり、用途に応じ使い分けています。
まず新型から。

ROでは地面に配置されたり除去されたりするオブジェクトが大きく分けて3種類ありまして
・キャラクタオブジェクト (PC、NPC、敵)
・スキルオブジェクト (範囲魔法で敷設されるやつ)
・アイテムオブジェクト (ドロップアイテム)

まず基底となるオブジェクトクラスがあり、ここでゲーム内座標、スクリーン描画座標、通しID
(キャラでいうアカウントID)、種別ID(キャラでいう職業ID)、スプライトナンバーなどが定義されています。

ここからキャラクタ、スキル、アイテムの各オブジェクトクラスが派生しており、例えばキャラクタオブジェクトなら
さらに、移動速度や直前の立ち位置、状態変化、髪型、詠唱バークラスへのポインタ、などなど
をメンバとして持っています。

基底クラスにはコンストラクタ/デストラクタしか無いようですが、キャラオブジェクトには移動や詠唱開始などの
メンバ関数もたくさんあります(呼ぶとアクションがみられる)。

プレイ中は、画面上に表示されているオブジェクトの数だけこれらクラスのインスタンスが生成されて
おり、そのすべてがキャラ/スキル/アイテムの3つのコンテナ(std::list)で管理されています。

RTXはこれらコンテナをダイレクトに読みに行くことで、パケットとは無関係に、任意の瞬間に画面上の
全てのオブジェクトの情報へアクセスすることを可能にしています。

これには、その瞬間におけるオブジェクトの(計算済み)描画座標も含まれており、したがって
このクラスさえ解析できれば、キャラや敵の動きに完璧に同期した描画をするのは容易です。

支援スレではVer6の4T4lYjSM氏がかなり真実に迫られています。氏の呼ばれるところの
CoordInfo なる構造体は、実はROの座標管理クラスにほかならず、例えば現パッチなら、
CoordInfo+12から前述のコンテナが置かれているのです。
(ちなみにCoordInfo+4は親ポインタ(to MapInfo)、CoordInfo+0はメンバ関数のベクタテーブル)

余談ですがPvPではこのコンテナの一部が無効化されます(=PvPで色々動かない理由)。

130Mystle </b><font color=#FF0000>(M.B.S.4s)</font><b>:2004/12/12(日) 17:20
さて、一方で、御指摘の通りRTXはオブジェクトが存在しなくても3D描画を可能としています。
こちらは任意に指定したゲーム内座標を、地道に行列変換して出しています。

オブジェクトクラスの解析に成功するまでのRTXでは、すべての3D描画がこの方法でした(=旧型)。
今では、M2Eなど地面もののみに使われています。

順番としてはアフィン変換→射影変換で、3Dで使うごく基本的なやり方しか用いていません。
アフィン行列はメモリのどこかにあります。探してみてください。
Z値(≒地形情報)はgatをメモリから読むか、自前でdata.grfから取ってください。

やっかいなのは射影変換で、問題は視錐台の適用と、アスペクト補正です。

褒められた方法ではありませんが、私はカメラの倍率制限をメモリエディタでいったん外し、
正常に描画される上限と下限の倍率を繰り返し調べ、平均値を取って測定誤差を切り落とす
ことで視錐台の前後を推定しました。

アスペクト比に関しては、ROがどんなスクリーンサイズでも上下方向のマス数は不変であるという事実を
押さえておくと、画面の横サイズから計算することができます。

このふたつがクリアできれば射影変換行列が決定されます。
適切に変換されると、Z値も正しく生成されますので、ポリゴンを描くと勝手に格好よく
陰面処理までかかります。

がんがってください。

131128:2004/12/13(月) 18:43
>>129-130
詳しい解説ありがとうございます!
新型はちょっと手に余りそうなので、旧型の方から挑戦してみます!

132人柱さん:2005/01/09(日) 18:17
rxv用のパケログ変換機を作ろうと思います。
パケログの最初にあるR0063はrtxが作成したタイムスタンプだと思いますが、
詳細はどうなっているのでしょうか。

133Mystle </b><font color=#FF0000>(M.B.S.4s)</font><b>:2005/01/13(木) 21:21
>>132
タイムスタンプと、パケログの正規性チェック(MD5のさらにダイジェスト)の双方を兼ねています。
性質上詳細は公開されていませんが、別になくとも動きますので御安心ください(´・ω・`)

134人柱さん:2005/01/14(金) 01:39
>>133
どうもありがとうございます。無しでやってみようと思います。

135人柱さん:2005/01/18(火) 18:05
recvフックのことで質問があります
いまさらながら19系の解析やってるんですが
ragexeのrecv書き換え→外されたらIAT書き換え→外されたら次回から(?)エクスポートT書き換え
の最低三段重ねまでは間違いないと思うんですが
逆ったの元に自分でコード起こすとですね、IATまでは再現できるんです
でもOSがMeだとエクスポートTだけが書き換わらない
もっとゆうとDLLがシステム領域で保護かかってて書き換えられない
でもRTXではちゃんと書き換わってるんですよね
どこがまずいんでしょう ヒントでもいいから教えてほしいです

136Mystle </b><font color=#FF0000>(M.B.S.4s)</font><b>:2005/01/20(木) 17:38
>>135
DLLのExport Table書き換えの話ですね。

Windows 9x系ではシステムDLLが2G-3G(共有領域)にあり、書き込み可能属性にするのに
VirtualProtect() を投げても、レジストされてしまいます。

とはいっても相手は 9x ですから迂回策は色々あるわけで。ring-0 入ったりとかね。

RTX では VxD Service Call (VMM_PageModifyPermissions) を呼ぶことで
保護属性を強制的に書き換えています。
インラインアセンブラを使っているので、逆汗では解りづらかったかもしれません。

137本刷れより:2005/03/14(月) 08:24:38
自分のツールにちゅぺるぶれいかーを付けたいのですが
キスはどうやって出してるんでしょうか?

138</b><font color=#FF0000>(M.B.S.4s)</font><b>:2005/03/14(月) 23:20:31
エモーション受信OP <R00C0> を捏造して自分に喰わせてます。
OPの諸元と受信OPの喰わせ方は調べてみてください。

よりスマートな方法としてはキャラクタオブジェクトのメンバ関数として直接エモ関数をコールする、という
のがあります(現exeならvPtrの22つ目かな?)。
テーブル上の関数位置が頻繁に変わるので、自動解析必須です。

139人柱さん:2005/04/05(火) 16:13:32
>>議論スレ4-895
背景画像はRTX-FAQのColor Simulatorから拝借してもいいかな…と思いつつ。
「指定SSに重ねる」というのは、人によって異なるようなウィンドウサイズ・
チャット窓の大きさ・各種ウィンドウの位置・状態アイコンやミニMAP(これは固定か)
との兼ね合いを見れるようにという意味だったんだ。
考えてみれば、コンパスは(位置確認のため)ここに重ねなければならないし、
M2Eはマウスドラッグできる四角い枠をここに用意すればいいとも思った。
M2Eスキル毎のチェックボックス用意して、チェックしたスキルの色の枠を
表示させるっていうのが自分のイメージ。そうすれば重なりもチェックできるし。
大きさは、小さすぎなければ適当で。

コンパスサイズはズーム率と連動して大きさ変わるから、適当でよさそう。

透過処理は…GDI+ならそのままできたと思う。
VB6はさっぱりわからん…。Winアプリ自体ニガテだけど。
ttp://www.vbaccelerator.com/home/VB/Type_Libraries/GDIPlus_Type_Library/article.asp

あと細かいところ。
>ALL_REDEMO
「赤エモタイマー」

>M2E設定
スキル名をゲーム内表記に。

>ビデオ録画設定
>有効/無効
「RoVideo再生設定」「再生中タイマー表示」

140〜=□○0 </b><font color=#FF0000>(d5YL6IWA)</font><b>:2005/04/06(水) 15:14:21
>>139
スキル オオスギ カイハツ マンドクセ('A`)

現状の最新版はこちらから
ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/6346/1093533016/898

最優先で修正・実装して欲しいモノってなぁに?


現状報告
FixedTimer・MinSec・BitFlag・対人M2E部分のスキル定義中
FixedTimerのスキル単位設定に取り掛かる。しかしスキル定義がまだ終わってない罠
モウダメポ lliorz=3

需要がある限り、作らねばと思っている
(`・ω・´)がんばるよ!




しかし・・・Now仕事中(・3・)

141|ω・`) </b><font color=#FF0000>(d5YL6IWA)</font><b>:2005/04/08(金) 09:07:19
質問です
FixedTimer・MinSec・M2E・BitFlag・対人M2E
それぞれに反映されるスキルって何でしょう?
いらないスキルを省いていきたいので・・・orz


例:
 ノービス:基本スキル>いらない
 マジシャン:FW>FixedTimer・M2E・(MinSec)


・・・てな具合に、誰か列挙きぼんぬ (;´Д`)人オナガイシマス




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