ECO ぱけ操作ツール

本体

ツール置き場

■ファイル説明

Root
├ 仕様書フォルダ         [モジュール仕様等についての技術資料]
├ Moduleフォルダ         [機能追加モジュールの格納庫]
│ ├ memory.dll         [メモリ検索&書き換えモジュール ROからの拾い物]
│ └ packetdumpフォルダ [パケットを見やすくダンプ Mapleの拾い物を改造]
│
├ config.txt          [Memory.dll用設定ファイル]
└ ws2_32.dll          [本ツール]

■ 概要

本ツールは、ECO にてパケを参照する補助ツールの作成を助ける補助ツールです。

■ 動作環境

Windows XP 環境にて動作チェックしています。2kでも動くでしょう。

■ 使い方

1. 解凍したファイル・フォルダを ECOの フォルダに移動させます。
2. eco を起動します。通常の eco.exe でも改造済のものでもかまいません。

■ exe について

ecoから始まるexeの時に動作します。例外的にeco_launch.exeは動作しないようにしています。

■ 免責

本ツールにより何らかの損害が発生しても、一切感知しません。自己責任にて使用してください。

■ 現在判明してる不具合

複数のパケットを作成するといくつかが処理されない事がある
OnRecv?,OnSend?で0を返してもパケットが削除されず、そのまま処理されてしまう不具合 ※最新版では修正済み

■ 履歴

  • 2007/11/01 ver0.71
    • パケット破棄時のバグを修正した気がする
    • エミュ鯖In時に再起動しなくても良くなるように
      • (ECOの初期化が適当なのでそれを補完をする
  • 2007/04/04 ver0.6
    • CreatePacket?でゲームサーバへのパケットが作成できなかった不具合を修正。
    • CreatePacket?の第一引数(SOCKET s)で -2を指定するとゲーム鯖、-3でマップ鯖との通信になるように
  • 2007/04/02 ver0.5
    • パケット作成に関するソースを書き直し
      • 任意のタイミングでパケット送信受信可能に
      • ※注意:最初のOnSend?が呼ばれるまでCreatePacket?は動作しません(OnConnect?で作成しても破棄される
      • 上記以外の仕様変更はありません
    • 時々パケ送信データが処理されなかった不具合を修正
    • 削除したパケットに続くデータが処理されなかった不具合を修正
      • ecodeでdummyパケットを付加しなくても良くなったかも
      • ecodeでecoが固まるバグが治ったかも
      • 時々パケ削除が上手く行かなかったのもこれの所為かも
  • 2006/09/28 ver0.4
    • バグ修正出来ていなかったのを修正
  • 2006/09/12 ver0.3
    • パケットの一部を処理できないバグ修正のためrecvデータ取得の位置を変更
  • 2006/02/18 ver0.2
    • パケ操作可能に
  • 2006/01/09 ver0.1
    • 公開

モジュール解説

パケット参照

■packetdump.dll

 パケットをpacket.txtの書式に基づいてファイルにダンプするモジュール。
 
 packet.txtを編集する事により、必要のないデータをダンプしないようにしたり
 データを見やすく表示するのでパケット解析に最適。
 指定したキーを押すとダンプ開始して指定したキーを押すとダンプを止める改造版もある。
 作者:MapleStory?升スレの誰か

EcoPlayerWatcher?

 パケットでプレイヤーデータを監視するツール
 
 近くにいる人のHP/MP/SPや憑依してる中の人が誰か表示する
 コマンドラインツールです。ついでに自分の所持品の一覧も表示します。
 作者:601氏

WateDoll?

 2PC憑依ワテドル自動操作ツール
 
 ヒール・キュア・Buff・回復剤等を自動使用してくれる
 作者:601氏

■chat.dll

 補助スキルの残り時間がわかったり指定アイテムやモンスターが出ると知らせてくれるモジュール
 詳しくはここ?  作者:作者C

KnightWarTimer?.dll

 演習時の各軍のシンボルの破壊を自動検出して次の沸き時間を計測してくれるツール。
 同梱の演習タイマー.exeと組み合わせて使用する。
 作者:不明

■wislog.dll

 whisperをログ保存するモジュール。
 作者:作者C

■tueee.dll

 俺TUEEEEEEな気分になれるかもしれないモジュール。
 見かけのダメージを増加させます
 クリティカルもあるよ
 作者:不明

パケット操作

■packetfilter.dll

 パケットをpacket.txtの書式に基づいてファイルにフィルタリングするモジュール。
 
 最初は難しいかもしれないが、プログラミングが出来なくてもパケットを弄る事が出来る。
 作者:MapleStory?升スレの誰か

■packetdump改造版

 基本は#packetdumpと同じだが、ダンプするかどうかをキーを押す事により操作できる。
 キー押したときにメッセージをログに出すためパケ作成を行っている。

ecode

 サーバーを疑似的に再現します。

パケット無関係

■memory.dll

 config.txtに記述されたデータに基づいて起動時にメモリを弄るモジュール。
 
 視点解除や多重起動などの升を、パッチ毎にexeを検索して弄らなくても自動で改造してくれるので便利。
 作者:RO升スレの誰か?

■ecowin2.dll

 EcoクライアントのWindowを前回のWindow位置に戻します。
 
 作者:601氏

モジュール仕様

モジュールの仕様書です。

モジュールの公開関数

module フォルダ以下に DLL を配置すると、ws2_32.dll がモジュールの 検索を行い、Initialize 関数を見つけるとメモリに組み込みます。

なお、呼び出し関数は以下のとおりです。

■int WINAPI Initialize(HINSTANCE hModule)
  モジュールを初めてロードしたときに呼び出されます。
  引数のhModuleはこのモジュールを呼び出したDLLのハンドルです。
  メモリに組み込む場合、この関数を必ず EXPORT してください。
■void WINAPI OnConnect(SOCKET s, struct sockaddr_in *name, int namelen)
  接続をするときに呼ばれます。接続の直前に呼ばれるため、接続先
  情報の変更などが行えます。
■void WINAPI OnDisconnect(SOCKET s)
  接続が切断されたときに呼ばれます。
■int WINAPI OnSend(SOCKET s, unsigned char *buf, int len, int flags)
  クライアントが send() 関数を呼んだ直後に呼ばれます。生パケットの
  状態で、buf, len が引数として渡されます。返り値は必ずパケット長を
  指定してください。パケット長を変えた場合は、その長さを返します。
  0を返した場合、そのパケットは送られず破棄されます。
  
  なお、パケット置き換えをした場合、後に読み込まれたモジュールに
  そのパケットが渡されます。
■int WINAPI OnRecv(SOCKET s, unsigned char *buf, int len, int flags)
  クライアントが recv() 関数を呼んだあと、パケットを受信した直後に
  呼ばれます。他は全てOnSendと同じ仕様です。

本体の公開関数

また、ws2_32.dll にてCreatePacket? 関数をエクスポートしており、生パケットの バッファを渡すとパケットデータを追加できます。
モジュール内からこの関数を使用する場合は、Initialize時に GetProcAddress? で関数のアドレスを取得してください。

なお、指定したソケットの送受信の処理が行われる時に追加されるため、作成したパケットがすぐに処理されるとは限りません。
最新Verではすぐに処理されます。

■int WINAPI CreatePacket(SOCKET s, unsigned char *buf, int len, char type)
  任意のパケットを作成します。 
  sには通信したいサーバーのSOCKETか -2(ゲームサーバと通信) -3(マップサーバとの通信)を指定してください。
  bufにはサイズデータを含めたデータを指定してください。
  lenにはサイズデータを含めたサイズを指定してください。
  typeには'r'(受信)か's'(送信)のどちらかを指定してください。(大文字不可)

例:看板を出すと同時にエモーションを出す

typedef void (*CP)(SOCKET s, byte *buf, int len, char type);
CP CreatePacket;

void WINAPI Initialize(HMODULE h) {
  CreatePacket = (CP)GetProcAddress(h, "CreatePacket");
  return;
}

int WINAPI OnSend(SOCKET s, unsigned char *buf, int len, int flags) { 
  int id = buf[2] * 0x100 + buf[3]; 

  switch(id) { 
  case 0x041a : //看板 
    { //エモーション送信
      byte buf[8] = {0x00, 0x06, 0x12, 0x16, 0x00, 0x00, 0x11, 0xa5}; 
      CreatePacket(s, buf, 8, 's'); 
    } 
    break; 
  } 
  return len; 
}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-07-14 (日) 04:25:28 (1831d)