Created
May 22, 2011 17:17
-
-
Save kimoto/985680 to your computer and use it in GitHub Desktop.
AutoAimツールの作りかた
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
AutoAimツールの作りかた | |
やり方は二種類ある、どちらも実装の困難さは変わらない。 | |
1. 動いてるプログラムのメモリ中で実行する方法 | |
これは完璧に標的に合わせることができる | |
壁があろうが関係なく突きぬけて標的に照準をあわせることができる。 | |
プログラムが内部で使用している標的の座標を利用することができるから。 | |
これについてはこの文書では語らない。 | |
一度も実装したことないのでわからないが、おそらくDLL Injectionか | |
インポートアドレステーブルの書換えカーネルハッキングとかでなんとかするんだと思う。 | |
あるいはRemoteThreadWrite(正式名称忘れた)によるコードインジェクション。詳細は書かない。 | |
一般的にはこの手法は、なんらかの法律に抵触する恐れがあるし、もしかしたら営業妨害で訴えられるかもしれない。 | |
2. 画像認識してその対象に照準を合わせる方法 | |
Shootというフラッシュゲームで動作するAutoAimツールを試作として作ってみた。 | |
https://github.com/kimoto/Aimbot4s | |
原理だが、一定周期(この例だと200msec)ごとに画面のスクリーンショットを取って | |
その画像に対して画像認識をおこない、Houghアルゴリズムにより円の座標(Shootのターゲットは円だ)を求める。 | |
あとは円の座標に対してマウスを動かしてクリックイベントを発生させればいい。 | |
事前にかけるフィルタが一番重要で、ゴミデータをいかに排除するか。 | |
自分が円を求めるうえでやっているフィルタは | |
1. 白黒の二値に変換(Houghアルゴリズムは二値のみ受付) | |
// グレースケール化 | |
::cvCvtColor(img, img_gray, CV_BGR2GRAY); | |
// 白と黒の二値化 | |
::cvThreshold(img_gray, img_gray, 128, 255, CV_THRESH_BINARY); | |
2. 円の縁をなだらかにする | |
// 画像の平滑化(円として認識しやすくするために) | |
cvSmooth(img_gray, img_gray, CV_GAUSSIAN, 11, 11, 0, 0); | |
3. その後、円の判定をする |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment