[フレーム]
Uploaded byaki33524
PPTX, PDF5,020 views

東方紅魔郷AI

Downloaded 13 times
東方紅魔郷AI @aki33524
自己紹介 • 大阪大学工学部電子情報学科一回 • バイナリ読んだり – x86限定 • SECCON CTF 2013本戦 – 観光勢 – !!!竹田氏!!!
目標 • 紅魔郷Exのノーショットノーボムノーミスクリア する – 回避特化 – スコアタックなどアイテムの処理は組み込んでい ない
処理の介入 • 全体的な処理の把握 – 気合 • 毎フレーム呼ばれる関数を見つけ出してAIの 関数に書き換える – Dllinjectionを用いる
STGのフローチャート キー入力 の評価 描画 自機死亡 処理 敵弾移動 処理 自機移動 処理 敵移動処 理
STGのフローチャート • 正確にはキー入力処理の後にシーン評価 (e.g タイトルシーン、ゲームシーン) – 先の図はゲームシーン時の処理 • キー入力処理はシーンに依らず必ず行われ る – これを乗っ取る
Dllinjection • Dllをターゲットのプロセスに読み込ませて介 入 – Attach/Detachの処理でメモリアドレスの書き換え など • CreateRemoteThreadを用いる方法 – 参考 O’REILLY アナライジングマルウェア
Dllinjection(読み込ませる側) VirtualAllocEx()で対象プロセス内にメモリ確保 WriteProcessMemory()で確保したメモリに対象 Dllのファイルパスを書き込む GetModuleHandle()で自プロセスがロードしてい るkernel32.dllのハンドル取得 GetProcAddress()でLoadLibraryA()の関数アドレ ス解決(ASLRが無効でなければならない) CreateRemoteThread()でLoadLibraryA()を実行し DLLの読み込み完了
Dllinjection(読み込ませる側) • ASLRが有効であれば先の方法は用いることが出 来ない – 自プロセスと対象プロセスのLoadLibraryA()のアドレ スが必ずしも一致しない – IMAGE_DLLCHARACTERISTICS_DINAMIC_BASEをoffに • PEheader内のIAT(Import Address Table)から解 決することが出来る • LoadLibraryA()と同様にFreeLibrary()でDllの detachを実装出来る
Dllinjection(Dll側) • DllMainの引数として呼び出された理由 (reasonForCall)が渡される – DLL_PROCESS_ATTACH/DLL_PROCESS_DETACH
Dllinjection(Dll側) • キーの評価関数(以下getKeyState())の上書 き – Attach • ラッパー関数(以下wrapper())を宣言してgetKeyState() をwapper()で上書き、内部でgetKeyState()を呼び出す – Detach • 関数アドレスの復帰 • 書き換えが少ない(関数アドレスの4byteの み)
Dllinjection(Dll側) • InlineAsmは__declspec(naked)な関数に分け る – O2オプションで死ぬ
AIの手順 • 敵、敵弾、自機の解析 • nフレーム後の敵、敵弾の位置予測 • 頑張って避ける
敵、敵弾の解析 • 敵弾には速度ベクトルが入っている – 基本的には不変なので誤差なく予測できる • 敵、レーザーには速度ベクトルが入っていな い – しかもランダム性が高い – メモリ上の解析からは限界がある
nフレーム後の予測 • 真面目にやるには敵弾を動かす関数を読むしか 無い?? – 解析コストがヤバイ • 知りたいのは関数の結果であって処理ではない – 敵、敵弾の更新をする関数(以下 refreshEnemyState())を見つけ出して実行するといい – 変更されたデータを復帰する必要がある
nフレーム後の予測 • refreshEnemyState()はthiscallらしい
nフレーム後の予測 • 敵弾等のデータはグローバル変数として宣言 されていた – PEheaderからグローバル変数の領域を知れる – memcpyでまるごと退避、refreshEnemyState()を 実行、最後に復帰
nフレーム後の予測
nフレーム後の予測 • 自機狙い弾(自機の変位で速度情報が変化 する弾)の予測は出来ない – 処理系から外す – 自機の位置を変えてシミュレーション ステータス が変わった弾を除く • 弾の回避は予測が完全であることを前提
弾の回避
弾の回避
弾の回避
弾の回避
弾の回避
弾の回避 • フレームの先のほうから現在に向かってDP 的に更新するだけ • 計算量はO(F E) – F:フレーム数 – E:区間の最大数(弾の最大数)
弾の回避
弾の回避
弾の回避 • 一般にbool値のDPは効率が悪いことが多い (らしい) • 中心からの距離の二乗をその点の基本コスト とする – 被覆された点はコストINFとする – 次のフレームの移動出来る点がすべてINFであれ ばその点のコストはINF – 次のフレームで移動出来る点の中で最もコストの 小さい点のコストを基本コストに加算して更新
弾の回避
弾の回避
弾の回避
弾の回避
弾の回避
弾の回避 • 縦横の移動しか考えない – 初期化 O(F ^ 3) – 通常弾(回転のない矩形)の被覆 O(F E H W) • H, W : 弾の高さ、幅 • E : 弾の最大数 – レーザーの被覆 O(L F ^ 3) • L : レーザーの最大数 – 被覆の更新O(F ^ 3) • 総計算量はO(L F ^ 3)的 • ナナメ移動を考慮するとO((E+L) F ^ 5) – 弾の被覆を独立して考えるのが難しい
弾の回避 • 1フレームに掛けられる時間は1/60sec – 10^7 〜 10^8手数 • およそ60F先の計算なら処理落ちしないはず – 実際は30fpsほどしか出なかった memcpy周りが 重い?
弾の回避 • 実演!!!
弾の回避 • ほとんど死なない • 「そして誰もいなくなるか」以外は回避出来る
弾の回避 • 「そして誰もいなくなるか」の難しさ – 弾が自機狙いではなく、弾の発生位置が自機狙 い – 弾が大量 – 速度が遅い(弾抜けが出来ない)
弾の回避 • 1Fだけ全探索する – 1F先の場面は自機狙いも含めて誤差がない – 完全ではないがナナメ対応が出来る!!! – 単純に17倍の処理時間が掛かる – 30Fの先読み • おおよそ20 〜 30F先読みで紅魔郷Exはすべ て回避出来るらしい
弾の回避 • 死ななくなった • 【AIリプレイ】紅魔郷Exノーショットノーボムノー ミスクリア1/2 – http://www.nicovideo.jp/watch/sm23043946
質問

More Related Content

東方ゲームAIとその歴史
PPTX
東方ゲームAIとその歴史
エンジニアという仕事を楽しみ続けるためのキャリア戦略
PDF
エンジニアという仕事を楽しみ続けるためのキャリア戦略
嗜好品摂取によって得られる心理学的効果と記憶に関するレビュー
PDF
嗜好品摂取によって得られる心理学的効果と記憶に関するレビュー
デキるプログラマだけが知っているコードレビュー7つの秘訣
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
[予習篇]人工知能のための哲学塾 第二夜「ユクスキュルと環世界」 資料 (全五夜+第零夜)
PDF
[予習篇]人工知能のための哲学塾 第二夜「ユクスキュルと環世界」 資料 (全五夜+第零夜)
地図で地形を眺めてみよう
PPTX
地図で地形を眺めてみよう
SQiP2016発表資料_プロセス改善の黒歴史(slideshare共有版)
PDF
SQiP2016発表資料_プロセス改善の黒歴史(slideshare共有版)
Cognitive Complexity でコードの複雑さを定量的に計測しよう
PDF
Cognitive Complexity でコードの複雑さを定量的に計測しよう
東方ゲームAIとその歴史
東方ゲームAIとその歴史
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略
嗜好品摂取によって得られる心理学的効果と記憶に関するレビュー
嗜好品摂取によって得られる心理学的効果と記憶に関するレビュー
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
[予習篇]人工知能のための哲学塾 第二夜「ユクスキュルと環世界」 資料 (全五夜+第零夜)
[予習篇]人工知能のための哲学塾 第二夜「ユクスキュルと環世界」 資料 (全五夜+第零夜)
地図で地形を眺めてみよう
地図で地形を眺めてみよう
SQiP2016発表資料_プロセス改善の黒歴史(slideshare共有版)
SQiP2016発表資料_プロセス改善の黒歴史(slideshare共有版)
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう

What's hot

人工知能のための哲学塾 第零夜「概観」 資料 (全五夜+第零夜)
PDF
人工知能のための哲学塾 第零夜「概観」 資料 (全五夜+第零夜)
「計算社会科学入門」5章 ネットワーク
PDF
「計算社会科学入門」5章 ネットワーク
生存時間分析数理の基礎
PDF
生存時間分析数理の基礎
優れた研究論文の書き方―7つの提案
PPTX
優れた研究論文の書き方―7つの提案
PWNの超入門 大和セキュリティ神戸 2018年03月25日
PDF
PWNの超入門 大和セキュリティ神戸 2018年03月25日
CTF for ビギナーズ バイナリ講習資料
PDF
CTF for ビギナーズ バイナリ講習資料
LFK_MagicPod_Meetup_Share
PPTX
LFK_MagicPod_Meetup_Share
学振特別研究員になるために〜2020年度申請版
PDF
学振特別研究員になるために〜2020年度申請版
Runtime c++editing
PDF
Runtime c++editing
ctfで学ぼうリバースエンジニアリング
PDF
ctfで学ぼうリバースエンジニアリング
物語の中の人工知能、 人工知能が作り出す物語
PDF
物語の中の人工知能、 人工知能が作り出す物語
NDBを用いた臨床疫学研究の留意点
PDF
NDBを用いた臨床疫学研究の留意点
ゲームAIとマルチエージェント(上)
PDF
ゲームAIとマルチエージェント(上)
最近強化学習の良記事がたくさん出てきたので勉強しながらまとめた
PDF
最近強化学習の良記事がたくさん出てきたので勉強しながらまとめた
勉強会用スライド
PPTX
勉強会用スライド
20170618論文読み会 伊藤
PPTX
20170618論文読み会 伊藤
よくわかるCoqプログラミング
PDF
よくわかるCoqプログラミング
イベント駆動プログラミングとI/O多重化
PPTX
イベント駆動プログラミングとI/O多重化
犬でもわかる公開鍵暗号
PDF
犬でもわかる公開鍵暗号
TLS, HTTP/2演習
PDF
TLS, HTTP/2演習
人工知能のための哲学塾 第零夜「概観」 資料 (全五夜+第零夜)
人工知能のための哲学塾 第零夜「概観」 資料 (全五夜+第零夜)
「計算社会科学入門」5章 ネットワーク
「計算社会科学入門」5章 ネットワーク
生存時間分析数理の基礎
生存時間分析数理の基礎
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
PWNの超入門 大和セキュリティ神戸 2018年03月25日
PWNの超入門 大和セキュリティ神戸 2018年03月25日
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
LFK_MagicPod_Meetup_Share
LFK_MagicPod_Meetup_Share
学振特別研究員になるために〜2020年度申請版
学振特別研究員になるために〜2020年度申請版
Runtime c++editing
Runtime c++editing
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
物語の中の人工知能、 人工知能が作り出す物語
物語の中の人工知能、 人工知能が作り出す物語
NDBを用いた臨床疫学研究の留意点
NDBを用いた臨床疫学研究の留意点
ゲームAIとマルチエージェント(上)
ゲームAIとマルチエージェント(上)
最近強化学習の良記事がたくさん出てきたので勉強しながらまとめた
最近強化学習の良記事がたくさん出てきたので勉強しながらまとめた
勉強会用スライド
勉強会用スライド
20170618論文読み会 伊藤
20170618論文読み会 伊藤
よくわかるCoqプログラミング
よくわかるCoqプログラミング
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
犬でもわかる公開鍵暗号
犬でもわかる公開鍵暗号
TLS, HTTP/2演習
TLS, HTTP/2演習

Viewers also liked

能年玲奈ちゃんのファンとして本気を出してみた
PDF
能年玲奈ちゃんのファンとして本気を出してみた
LT駆動開発03 Web制作をカレー作りで例えてみる
PDF
LT駆動開発03 Web制作をカレー作りで例えてみる
過換気症候群
PPTX
過換気症候群
日経ITpro EXPO 2015: 次世代IoTアーキテクチャ CEO玉川、CTO安川
PPTX
日経ITpro EXPO 2015: 次世代IoTアーキテクチャ CEO玉川、CTO安川
リクルート式 自然言語処理技術の適応事例紹介
PDF
リクルート式 自然言語処理技術の適応事例紹介
About Servicegrant / digest
PPTX
About Servicegrant / digest
ENJOY H@RMONY!!とボーダーbot
PDF
ENJOY H@RMONY!!とボーダーbot
「PUSH 大阪」の紹介
PDF
「PUSH 大阪」の紹介
今流行りのウェブアプリ開発環境Yeoman
ODP
今流行りのウェブアプリ開発環境Yeoman
データ可視化とコスト管理
PDF
データ可視化とコスト管理
営業プロセス研修資料
PDF
営業プロセス研修資料
2011インターンシップ_09N1123_前野沙織
PDF
2011インターンシップ_09N1123_前野沙織
俺の仕事がこんなに楽しいわけが無い・公開版(初出:2010年12月20日 株式会社ECナビ会社説明会@IAMAS)
PDF
俺の仕事がこんなに楽しいわけが無い・公開版(初出:2010年12月20日 株式会社ECナビ会社説明会@IAMAS)
9Web制作、デザイン、セキュリティなどの基礎を学ぼう
PDF
9Web制作、デザイン、セキュリティなどの基礎を学ぼう
リクルートにおけるVDI導入とCiscoデータセンタソリューション
PDF
リクルートにおけるVDI導入とCiscoデータセンタソリューション
リクルートのWebサービスを支える共通インフラ「RAFTEL」
PDF
リクルートのWebサービスを支える共通インフラ「RAFTEL」
libpgenでパケット操作
PDF
libpgenでパケット操作
自己紹介用プレゼン
PPTX
自己紹介用プレゼン
大企業で実現するイマドキの内製開発
PDF
大企業で実現するイマドキの内製開発
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
PDF
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた
LT駆動開発03 Web制作をカレー作りで例えてみる
LT駆動開発03 Web制作をカレー作りで例えてみる
過換気症候群
過換気症候群
日経ITpro EXPO 2015: 次世代IoTアーキテクチャ CEO玉川、CTO安川
日経ITpro EXPO 2015: 次世代IoTアーキテクチャ CEO玉川、CTO安川
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
About Servicegrant / digest
About Servicegrant / digest
ENJOY H@RMONY!!とボーダーbot
ENJOY H@RMONY!!とボーダーbot
「PUSH 大阪」の紹介
「PUSH 大阪」の紹介
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
データ可視化とコスト管理
データ可視化とコスト管理
営業プロセス研修資料
営業プロセス研修資料
2011インターンシップ_09N1123_前野沙織
2011インターンシップ_09N1123_前野沙織
俺の仕事がこんなに楽しいわけが無い・公開版(初出:2010年12月20日 株式会社ECナビ会社説明会@IAMAS)
俺の仕事がこんなに楽しいわけが無い・公開版(初出:2010年12月20日 株式会社ECナビ会社説明会@IAMAS)
9Web制作、デザイン、セキュリティなどの基礎を学ぼう
9Web制作、デザイン、セキュリティなどの基礎を学ぼう
リクルートにおけるVDI導入とCiscoデータセンタソリューション
リクルートにおけるVDI導入とCiscoデータセンタソリューション
リクルートのWebサービスを支える共通インフラ「RAFTEL」
リクルートのWebサービスを支える共通インフラ「RAFTEL」
libpgenでパケット操作
libpgenでパケット操作
自己紹介用プレゼン
自己紹介用プレゼン
大企業で実現するイマドキの内製開発
大企業で実現するイマドキの内製開発
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-

Recently uploaded

BLE-LoRaWAN ワイヤレス食肉温度センサー DMT01 日本語カタログ
PDF
BLE-LoRaWAN ワイヤレス食肉温度センサー DMT01 日本語カタログ
論文紹介:"Keyframe-oriented Vision Token Pruning: Enhancing Efficiency of Large V...
PDF
論文紹介:"Keyframe-oriented Vision Token Pruning: Enhancing Efficiency of Large V...
mdx MaaS: 学術クラウド基盤 mdx におけるスケーラブルな AI 推論基盤
PDF
mdx MaaS: 学術クラウド基盤 mdx におけるスケーラブルな AI 推論基盤
クラウドワークロードセキュリティと 新FedRAMPガイダンス September 24, 2024
PDF
クラウドワークロードセキュリティと 新FedRAMPガイダンス September 24, 2024
シンガポールのAWSユーザー向けセキュリティガイドに学ぶ管理策 March 14, 2025
PDF
シンガポールのAWSユーザー向けセキュリティガイドに学ぶ管理策 March 14, 2025
シンガポールのMicrosoft Azure/365/Copilot ユーザー向けセキュリティガイドに学ぶ管理策 August 20, 2025
PDF
シンガポールのMicrosoft Azure/365/Copilot ユーザー向けセキュリティガイドに学ぶ管理策 August 20, 2025
シンガポールのGoogle Workspaceユーザー向けセキュリティガイドに学ぶ管理策 June 4, 2025
PDF
シンガポールのGoogle Workspaceユーザー向けセキュリティガイドに学ぶ管理策 June 4, 2025
動画サービスのトレンドとトラフィック予測 Interop Conference 2025
PDF
動画サービスのトレンドとトラフィック予測 Interop Conference 2025
【FIT2025に参加】駐車時における自動車ハンドルの回転角フィードバックシステムの評価
PPTX
【FIT2025に参加】駐車時における自動車ハンドルの回転角フィードバックシステムの評価
BLE-LoRaWANプロトコル対応ワイヤレス食肉温度計DMT01 日本語マニュアル
PDF
BLE-LoRaWANプロトコル対応ワイヤレス食肉温度計DMT01 日本語マニュアル
BLE-LoRaWAN ワイヤレス食肉温度センサー DMT01 日本語カタログ
BLE-LoRaWAN ワイヤレス食肉温度センサー DMT01 日本語カタログ
論文紹介:"Keyframe-oriented Vision Token Pruning: Enhancing Efficiency of Large V...
論文紹介:"Keyframe-oriented Vision Token Pruning: Enhancing Efficiency of Large V...
mdx MaaS: 学術クラウド基盤 mdx におけるスケーラブルな AI 推論基盤
mdx MaaS: 学術クラウド基盤 mdx におけるスケーラブルな AI 推論基盤
クラウドワークロードセキュリティと 新FedRAMPガイダンス September 24, 2024
クラウドワークロードセキュリティと 新FedRAMPガイダンス September 24, 2024
シンガポールのAWSユーザー向けセキュリティガイドに学ぶ管理策 March 14, 2025
シンガポールのAWSユーザー向けセキュリティガイドに学ぶ管理策 March 14, 2025
シンガポールのMicrosoft Azure/365/Copilot ユーザー向けセキュリティガイドに学ぶ管理策 August 20, 2025
シンガポールのMicrosoft Azure/365/Copilot ユーザー向けセキュリティガイドに学ぶ管理策 August 20, 2025
シンガポールのGoogle Workspaceユーザー向けセキュリティガイドに学ぶ管理策 June 4, 2025
シンガポールのGoogle Workspaceユーザー向けセキュリティガイドに学ぶ管理策 June 4, 2025
動画サービスのトレンドとトラフィック予測 Interop Conference 2025
動画サービスのトレンドとトラフィック予測 Interop Conference 2025
【FIT2025に参加】駐車時における自動車ハンドルの回転角フィードバックシステムの評価
【FIT2025に参加】駐車時における自動車ハンドルの回転角フィードバックシステムの評価
BLE-LoRaWANプロトコル対応ワイヤレス食肉温度計DMT01 日本語マニュアル
BLE-LoRaWANプロトコル対応ワイヤレス食肉温度計DMT01 日本語マニュアル

東方紅魔郷AI

AltStyle によって変換されたページ (->オリジナル) /