まほろりたん

まほろりたん
まほろりたん TOP  > 

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --年--月--日 --:-- ] カテゴリ:スポンサー広告 | TB(-) | CM(-)

ALWAYS TOP

MY C++ PROJECTS ( VC2013 )
https://www.mediafire.com/folder/2gsexg4bvysen/c%2B%2B

C# PROJECTS ( VC#2013 )
https://www.mediafire.com/folder/5dd4s1izjm78h/c%23

JAVA PROJECTS
https://www.mediafire.com/folder/8e9z15m92a34w/java

PASTEBIN
http://pastebin.com/u/mahorori

Microsoft .NET Framework 4.5
http://www.microsoft.com/ja-jp/download/details.aspx?id=30653

Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ
http://www.microsoft.com/ja-jp/download/details.aspx?id=30679

Visual Studio 2013 の Visual C++ 再頒布可能パッケージ
http://www.microsoft.com/ja-jp/download/details.aspx?id=40784

JMS Client ~latest (ページ左のリンクからTHX)
http://otthts.blog.fc2.com/
スポンサーサイト
[ 2025年01月26日 06:22 ] カテゴリ:トップ | TB(-) | CM(21)

bluh

bluh
[ 2016年11月05日 03:18 ] カテゴリ:更新 | TB(0) | CM(0)

aob scanner


https://github.com/Mahorori/AOBScanner


コンパイルしたやつ

キャプチャ
[ 2016年09月10日 03:06 ] カテゴリ:チート | TB(0) | CM(3)

injecting windows into maplestory's message loop

前の記事にちょこっと書いた、
ウィンドウをメイプルのメッセージループで処理させる方法についてコード載せて書きます。


Win32では、コントロールはスレッドに関連付けられて、
そのコントロールは基本的に関連付けられたスレッド内でしか操作できません。


ゲームは基本的にウィンドウ化で動くゲームなので、データのロードとか、別スレッドで処理させたいもの以外はウィンドウスレッドで動いてます。


そのため、ウィンドウスレッド外でメモリを操作したりすると、スレッドセーフである前提で動いているのでバグります。


となると、同じスレッドの下でメモリを操作すればよいということになりますが、
それを実行する方法が、ウィンドウをメイプルのメッセージループに仕込む方法です。


1.ウィンドウメッセージループが作られているスレッドでウィンドウを作成する。
2.作成したウィンドウに対してメッセージを送る。


と、まあこれだけです。




ここではコントロールを作って処理していますが、私はただ単に、同スレッド下で処理させたいだけなので、コントロールは作らず、メッセージだけ処理させます。


MapleStoryでは、ゲーム本体のウィンドウプロージャによってInSendMessageがコールされてるのでそれを利用してメッセージウィンドウを作成します。




DetouFunctionは例のあれで、g_hInstanceはDLLMainに引数として使われているものをグローバル変数に保存しておいて使っています。


リターンアドレスが、EXEの範囲内であれば、ウィンドウプロージャによって呼ばれるInSendMessageであると決め打ちします。


ここでのCMsgHandlerはsingletonクラスです。Init内でウィンドウを作成します。


メッセージだけ処理するには、hWndParentにHWND_MESSAGEを指定してCreateWindowすれば、メッセージ専用のウィンドウが作成できます。


あとはウィンドウプロージャ内で、カスタムメッセージを処理するだけです。


ただ、ウィンドウを削除する際には、同スレッドからでないと出来ないので、WM_CLOSEをオーバーライト(?)してSendMessageなりで削除します。


コード例↓




(UpdateWindowは多分いらない)


例においてMapIDを取得したいとき、


SendMessage(CMsgHandler::GetInstance()->GetHandle(), WM_GET_MAPID, NULL, &mapid);


単に処理投げつけたいときはPostMessageでおk


以上。
[ 2016年09月08日 22:51 ] カテゴリ:チート | TB(0) | CM(5)

msg

http://www.gamekiller.net/threads/example-injecting-windows-into-maplestorys-message-loop.3239995/

前作ったスクリプターこれ使って書き直した。


SendMessageつかってデータ取得できるようにしたり。


これどういうことかっていうと、


自分で作ったウィンドウに対して自分でメッセージループ作成しなくても、
もともとあるメイプルのメッセージループ内で処理されるからスレッドセーフで動かせるってことなんだけども。


基本的にどんなゲームでも使えるはず。


HWND_MESSAGE引数に入れてry


昔書いたソースコード見てると、レベル上がってるなって実感できて楽しい
[ 2016年06月16日 15:03 ] カテゴリ:チート | TB(0) | CM(0)


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。