Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ゲームクラッキング&チートチャレンジ
Search
Recruit Technologies
September 04, 2017
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ゲームクラッキング&チートチャレンジ
2017/09/01 CEDEC 2017での、杉山の講演資料になります
Recruit Technologies
September 04, 2017
More Decks by Recruit Technologies
See All by Recruit Technologies
障害はチャンスだ! 障害を前向きに捉える
rtechkouhou
1
800
Flutter移行の苦労と、乗り越えた先に得られたもの
rtechkouhou
3
12k
ここ数年間のタウンワークiOSアプリのエンジニアのチャレンジ
rtechkouhou
1
1.6k
大規模環境をAWS Transit Gatewayで設計/移行する前に考える3つのポイントと移行への挑戦
rtechkouhou
1
2k
【61期 新人BootCamp】TOC入門
rtechkouhou
3
43k
【RTC新人研修 】 TPS
rtechkouhou
1
42k
Android Boot Camp 2020
rtechkouhou
0
42k
HTML/CSS
rtechkouhou
10
52k
TypeScript Bootcamp 2020
rtechkouhou
9
46k
Other Decks in Technology
See All in Technology
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
110
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
260
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
680
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
330
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
150
Snowflakeで実現する全社横断の顧客の声(VOC)分析・活用基盤@Snowflake World Tour Tokyo 2026
yuto16
0
190
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
270
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
160
enechainの内製セルフサービスプラットフォーム
hiyosi
0
160
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
230
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
4
1.2k
Featured
See All Featured
Visualization
eitanlees
152
17k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Amusing Abliteration
ianozsvald
1
290
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
240
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
440
Paper Plane (Part 1)
katiecoart
PRO
1
11k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
410
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Mobile First: as difficult as doing things right
swwweet
225
10k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
980
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Become a Pro
speakerdeck
PRO
31
6.2k
Transcript
SECCON 2017 x CEDEC CHALLENGE ゲームクラッキング&チートチャレンジ 株式会社リクルートテクノロジーズ 杉山俊春 1
3. ゲームのシステム構成とセキュリティ • 攻撃されうるポイント 2 不正な通信 (リクエスト) 不正な通信 (レスポンス) メモリ
改ざん アプリ 改造 データ 改ざん アプリ側の対策も結構重要!
1. ゲームにおけるセキュリティの位置づけ • チートの例: 3 通常ではありえない はずの数字に!
4. 代表的なチート方法 • チート手法の代表的な例 – メモリ改ざん • 動作中のアプリの重要な値をメモリ上から特定、直接改ざ んを行い有利な状態にする •
一般的なツールが利用されるのでネット上でよく見かける – データ改ざん • アプリが利用する重要データの書き換えを行い有利な状態 にする – アプリ改造 • アプリの処理自体を一部書き換えて再パッケージ化、イン ストールして不正な動作をさせる • 自サイト等での配布目的だからか、技術詳細はネット上で あまり見かけない – 不正通信 • アプリ上で生成されたデータをサーバに送信する際に通信 経路上で重要データを書き換える • アプリがサーバのレスポンスから重要データを読み込む際 に通信経路上で重要データを書き換える 4
4. 代表的なチート方法 - メモリ改ざん • メモリ改ざん – メモリ上の改ざんしたい値を検索して改ざんする – 要root権限
または デバッグ接続 5 検索&絞り込み 改ざん 反映 条件を変えて有利に進行 E7 8C AB E3 81 8B E3 82 8F E3 81 84 E3 81 84 00 73 6F 20 63 75 74 65 00 40 9C 00 00 63 61 74 73 66 6C 75 66 66 79 00 66 6C 75 66 66 79 00 00 00 敵HP:40000 E7 8C AB E3 81 8B E3 82 8F E3 81 84 E3 81 84 00 73 6F 20 63 75 74 65 00 01 00 00 00 63 61 74 73 66 6C 75 66 66 79 00 66 6C 75 66 66 79 00 00 00 敵HP:1
4. 代表的なチート方法 - メモリ改ざん • メモリ内の検索 6 単純な検索で メモリアドレスが判明!
4. 代表的なチート方法 - メモリ改ざん • メモリ改ざんで起こること – アプリ上での処理に利用するデータがおかし くなり正常動作とは著しく異なる条件でゲー ムが進行する
• 敵の弱体化 • プレイヤーの無敵化 • 極端に短時間なクリア時間の実現 • 所持していないアイテム、キャラクターの利用 など – 特にUI上などから値を確認しやすいデータ (メモリ上から探しやすい)が改ざんされる 7
4. 代表的なチート方法 - データ改ざん • データ改ざん – データ領域のゲーム進行上重要なデータファイルを 改ざん –
要root権限 または デバッグ接続 8 ローカルにデータ保存 改ざん 読み込み 条件を変えて有利に進行 敵HP:40000 敵HP:1
4. 代表的なチート方法 - データ改ざん • UserDefaultを使った値の保存 9 UserDefault* userDef =
UserDefault::getInstance(); userDef->setIntegerForKey("resume_battle_turn", this->battle_turn); userDef->setIntegerForKey("resume_enemy_hp", this->enemy_hp); : 平文で保存されるので 簡単に書き換え可能!
4. 代表的なチート方法 - データ改ざん • データ改ざんで起こること – アプリ上での処理に利用するデータがおかしく なり正常動作とは著しく異なる条件でゲームが 進行する(メモリ改ざんと似ている)
• 敵の弱体化 • プレイヤーの無敵化 • 所持していないアイテム、キャラクターの利用 • 非公開のキャラデータの有効化(キャラクターのマス ターデータなどの変更) など – ファイルとして存在しているデータが改ざんさ れる • 端末上のマスターデータ • バトル、パズルゲームなどのリジューム用データ 10
4. 代表的なチート方法 - アプリ改造 • アプリ改造 – アプリを逆コンパイルなどして解析し、アプ リ自体の動きを変える(署名は変わる) 11
逆コンパイル等 変更 再パッケージ化 不正アプリ 完成!
4. 代表的なチート方法 - アプリ改造 • IDA Proでの解析例 12 勝利条件(敵のHP) の判定
敗北時の処理 勝利時の処理 分岐をつぶす 何もしていないと、 内部の関数名など(シ ンボル情報)が丸見え BattleでScoreを計算し ている処理、というこ とが一目でわかる
4. 代表的なチート方法 - アプリ改造 • IDA Proでの解析例(-fvisibility=hidden) 13 「sub_154DB4」と いう処理の内容が分
からない名前に カジュアルに重 要な処理を解析 できなくなる 検索しても目的の処理 が出てこなくなる
4. 代表的なチート方法 - アプリ改造 • アプリ改造で起こること – 原理的にはアプリ上で行っている処理の全て を変更が可能 •
ゲーム進行の条件変更全般 – 影響範囲は改造がどれくらい難しいかにか かっている……。 14
4. 代表的なチート方法 - 不正通信 • 不正通信 – アプリ、サーバ間でやり取りするデータを改 ざん等し、不正なデータでゲームをプレイ、 不正なデータをサーバに登録する
15 Proxyツールを利用した改ざん リクエスト チートユーザの環境 改ざん 改ざんされた レスポンス 改ざんされた リクエスト Proxy ツール
4. 代表的なチート方法 - 不正通信 • 通信内容の書き換え 16 POST /sfx/battle_end.php HTTP/1.1
User-Agent: Dalvik/2.1.0 (Linux; U; Android 5.1.1; Android SDK built for x86 Build/LMY48X) Host: 10.0.2.2:20080 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 128 {"session_id":"9dee02513f8556066e4d68d096c9f7f5","battle_se ssion_id":"358","result":0,"score":0} これは…! バトル終了時の敗戦結果送信リクエスト例
4. 代表的なチート方法 - 不正通信 • 不正通信で起こること – リクエスト(アプリ→サーバ) • マイナス値、小数値を使ったアイテム等の無限増殖
• 複数リクエストの同時送信による処理の重複実行でのアイ テム増殖 • バトル、パズルゲーム等のクリア結果の変更による不正な ゲーム進行 • GPSデータなどの不正変更による物理的制約の回避 • Botなどによるリクエスト自動送信での不正なゲーム進行 など – レスポンス(サーバ→アプリ) • バトル、パズルゲーム等の実行条件の不正な変更 – プレイヤーの能力強化 – 敵の能力弱体化 – パズルゲームの配置変更などの難易度変更 – その他クリア条件変更 • アプリ上で制限されている各種フラグの不正な変更 • 正常動作時のレスポンス再送による通常動作の偽装 17