Skip to content

Instantly share code, notes, and snippets.

@kimoto
Created May 22, 2011 17:17
Show Gist options
  • Save kimoto/985680 to your computer and use it in GitHub Desktop.
Save kimoto/985680 to your computer and use it in GitHub Desktop.
AutoAimツールの作りかた
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