裏東風荘へようこそ!






はじめに

 東風荘というサービスがあります。インターネットでサーバに繋いだ人同士で麻雀ができるというけっこう優れたもので、テレホ時間ともなると1000人位集まるほど人気が高いです。ま、どんなものかは東風荘のオフィシャルページを見てください。



何が出来るか

 東風荘では場所として初心者卓/一般卓/ランキング卓(通称:ラン卓)の3つが選べます。初心者/一般では打つ卓の指定が出来て、ラン卓では指定が出来ません。また、初心者卓では、参加できなかったユーザーが卓の内容を覗ける”観戦”という機能が使えます。一般/ラン卓では観戦は出来ません。

 さて、ここで普通な人は疑問に思うはずです。「初心者卓では観戦が出来る」、ってことは東風荘クライアントを2つ立ち上げて、相手の手の内を見る事が出来るんじゃないかと。結論から言うと、これは出来ません。なぜなら東風荘クライアントが多重起動を許可していないからなんですね(当たり前)。



では何が出来るのか

 多重起動させます。

 といってももちろん普通にやっていては絶対に駄目なので、パッチをあてる事でこれを実現させようというわけです。

 東風荘クライアントは、自分自身にマジックナンバーを埋め込んでいて、要はこれが多重起動を邪魔してるので、そのマジックナンバーを適当な文字で埋めてやれば、無事多重起動する事が出来るってわけです。

97 b9 82 b5 82 c4 82 a9 82 e7 8d c4 8b 4e 93 ae 
82 b5 82 c4 82 ad 82 be 82 b3 82 a2 00 00 00 00 
6d 6a 67 61 6d 65 2e 69 6e 69 00 00 47 49 46 38 
39 61 00 00 47 49 46 38 37 61 00 00 96 83 90 9d 
00 00 00 00 4b 61 74 75 47 61 6d 65 4d 6a 00 00 <--この辺と
83 8a 83 5c 81 5b 83 58 82 cc 93 c7 82 dd 8d 9e 
82 dd 82 c9 8e b8 94 73 82 b5 82 dc 82 b5 82 bd 
00 00 00 00 25 73 20 3a 20 83 74 83 40 83 43 83 
8b 82 cc 93 c7 82 dd 8d 9e 82 dd 82 c9 8e b8 94 
73 82 b5 82 dc 82 b5 82 bd 00 00 00 6d 6a 2e 68 
74 6d 83 74 83 40 83 43 83 8b 82 cc 93 c7 82 dd 
8d 9e 82 dd 82 c9 8e b8 94 73 82 b5 82 dc 82 b5 
82 bd 00 00 6d 6a 6c 69 73 74 2e 69 6e 69 83 74 
83 40 83 43 83 8b 82 cc 93 c7 82 dd 8d 9e 82 dd 
82 c9 8e b8 94 73 82 b5 82 dc 82 b5 82 bd 00 00 
50 61 73 73 77 6f 72 64 00 00 00 00 55 73 65 72 
4e 75 6d 62 65 72 00 00 32 30 33 2e 31 33 37 2e 
32 33 37 2e 35 00 00 00 32 30 33 2e 31 33 37 2e 
32 33 37 2e 31 00 00 00 6d 6a 2e 68 74 6d 00 00 
50 4f 52 54 00 00 00 00 49 50 00 00 32 31 30 2e 
31 33 34 2e 31 34 31 2e 32 00 00 00 65 74 73 63 
61 70 00 00 59 53 49 5a 45 00 00 00 58 53 49 5a 
45 00 00 00 59 00 00 00 58 00 00 00 57 49 4e 50 
4f 53 25 64 00 00 00 00 46 34 8a cf 90 ed 8f 49 
97 b9 00 00 4b 61 74 75 47 61 6d 65 4d 6a 4d 61 <--この辺ね
69 6e 00 00 88 ea 8f 8f 82 c9 83 76 83 8c 83 43 
82 b5 82 c4 82 a2 82 bd 83 81 83 93 83 6f 81 5b 
82 aa 94 b2 82 af 82 bd 8e 9e 88 c8 8a 4f 82 cd 
81 41 82 c5 82 ab 82 e9 82 be 82 af 93 72 92 86 
82 c5 8f 49 97 b9 82 cd 82 b5 82 c8 82 a2 82 c5 
82 ad 82 be 82 b3 82 a2 81 49 81 40 93 72 92 86 
82 c5 8f 49 97 b9 82 b5 82 dc 82 b7 82 a9 81 48 
00 00 00 00 96 83 90 9d 81 7c 93 72 92 86 8f 49 
97 b9 00 00 93 fc 97 cd 00 00 00 00 45 44 49 54 
00 00 00 00 20 81 99 83 54 83 68 83 93 83 66 83 
58 81 99 00 20 28 8e 63 82 e8 20 25 64 96 87 29 
00 00 00 00 20 8a cf 90 ed 8e d2 3a 25 64 90 6c 

 ただし、この”適当に埋める文字”が2つのクライアントで同じものだとチェックにかかるので別なものにしましょう。

 ここまで来て、バイナリエディタでやるさって人は、それでやればよろしい。わからない人はパッチの当て方などの実際の流れを説明します。



実際の流れ

  1. 東風荘をディレクトリごとコピーします。裏東風荘とでも名前をつけておきましょう。これでクライアントが2つ出来たわけですが、試しに2つ起動させてみて下さい。出来ませんね?

  2. そこで、パッチの出番です。ダウンロードして、先ほど作成したディレクトリと元のディレクトリ、要は東風荘クライアントと同じディレクトリに置きます。

     なんか怪しいプログラムと思われるとイヤなので、ソースも公開しておきます。適当に作ってあるので細かい点は気にしなくていいです。インデントへの突っ込みも不許可です。

     東風荘多重起動パッチ ver 1.0 ( 15317bytes )   ※LSCI-C使用

     そのソース(日本人なので日本語で記述)

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define	u_char	unsigned char
    #define	u_short	unsigned short
    #define	u_int	unsigned int
    #define	u_long	unsigned long
    
    
    void main( void )
    	{
    	FILE	*fp;
    	char	magic_code[] = { 5bytesのマジックナンバー(´ー`) };
    	char	c, checker = 0;
    	int		loop, flag = 0;
    	u_int	r_seed;
    	long	address = 0;
    	
    	puts("/**************************************************/");
    	puts("/*  東風荘クライアント多重起動化パッチ  Ver 1.0   */");
    	puts("/*                                                */");
    	puts("/*      Copyright(c), All SterWars members        */");
    	puts("/**************************************************/");
    	printf("\n");
    	
    	if( ( fp = fopen( "MJ.exe", "rb+" ) ) == NULL )
    		{
    		puts("ERROR : MJ.exe not found...");
    		exit( 1 );
    		}
    	
    	r_seedに時間の値をセットする;
    	ランダム関数をr_seedで初期化;
    	printf( "randomize seed : %08x\n", r_seed );
    	
    	(ファイルを最後まで読むまでのループ)
    		{
    		1バイトをmj.exeから読み込む;
    		アドレスをインクリ;
    		マジックコードをチェックする;
    		もしマジックコードに当たったら
    			{
    			ファイルポインタをカレントから5戻す;
    			そこから10バイト(2回目は14)を、0〜255までのランダムな値で埋める;
    			パッチ当てたアドレスを表示;
    			上の処理分のアドレスを増減;
    			}
    		}
    	
    	もし1つもパッチを当てられなかったら
    		printf("既にパッチがあたってます。\n");
    	printf( "\n+OK\n" );
    	}
    


  3. 上のソースを適当にコンパイルしましょう。万が一これ実行してマシン壊れても、知りません。

  4. あとは、各ディレクトリでmj_patch.exeを実行するだけでOKです。
    /**************************************************/
    /*  東風荘クライアント多重起動化パッチ  Ver 1.0   */
    /*                                                */
    /*      Copyright(c), All SterWars members        */
    /**************************************************/
    
    randomize seed : 00002d3d
    Address 0000ae89 : patched.
    Address 0000afce : patched.
    
    +OK
    

     こんなカンジのメッセージが出ればOKです。

  5. そして、コピーした方のmjgame.iniを消して(別にいいかも)、新規ユーザーを2つ目のクライアント用に作成すればOKです。インチキ麻雀を楽しんで下さい。


こういう事が出来ます





 89卓で打ってたんだけど、この下にもう1つ東風荘クライアントを立ちあげて観戦しているところです。トイメンの手の内がミエミエになっちゃってます。オニですね(笑)、オニ!やるなよコラ!あ、同じマシンからでもパケットの到達が遅い場合もあるのでこの様にズレてる場合もありますが気にしない様に。

 ところでマジでこういうのは出来るけどやめましょう。東風荘サーバも同一IPからのコネクトをテレホ時間は出来ない様にしている様ですし、こんなことやって勝ってもあんまり意味がないです。んで、観戦者が怪しくていやだって人は、一般卓か、ラン卓で打ちましょう。





Back / Home




PRODUCED BY DEF-CON ZERO