# 資安系列讀書會part 2筆記 時間:2023/10/11 講者:陳兆閔 簡報連結:https://docs.google.com/presentation/d/15cgJYQ_8S3YdUlzSicowIiMC0RmgDX6L56FZpn2crmE/edit#slide=id.p ## 資安 * 各領域都需要在意 * 功能->風險->漏洞 * 有各種sub domain * 防火牆->流量控管、封包分析 * 病毒防護->逆向工程、作業系統、資料探勘 * 數據加密->密碼學 * 安全政策->ISO ## 如何設計 * 各種成本限制 * 主機效能 * 網路流量 * 開發時程 * 儲存方案 * json,binary * SQL * 自訂義 * 使用者體驗 * 中途斷線重連機制 ## 抽卡系統hack * 順序決定方式 * 透過預測決定順序的規則來預判結果 * 數據儲存方式 * 透過修改數據儲存位置更改結果 * vuln(漏洞) * 利用備份資料 * LCG attack * 直接修改local數據 ## 及時對戰系統 hack * 修改邏輯 * 直接傳送傷害資料包 * 無視受到的傷害包 <br> ### 只要有功能,就會衍生出風險以及漏洞,所以在設計階段時就要做好使用者輸入的驗證及成本管理 <br> # 需求與風險: 遊戲設計哲學 ## core aspect * 盡量不要重新造輪子 * 實作越複雜的功能,越有可能出現漏洞 * 直接使用別人的library,會繼承他的風險 * 但是我們沒辦法避免重複造輪子 ## 網路資料傳輸設計 * TCP * 高延遲 * 保證資料送達&完整性 * UDP * 低延遲 * 無罰保證完整性 * 大部分遊戲採用 * 攻擊手段 * 緩衝區溢位攻擊with window size control * 實際例子 * Valve Source Engine RCE ## It's not a bug. It's a feature!! ### 即時射擊遊戲設計 * wall hacks(透視掛) * 將所有玩家資訊撈出來後畫一層在畫面上 ### unity game engine & C# * unity為目前市面上開發者最喜歡用的遊戲引擎 * unity 101 in 30 sec * 遊戲內可分成數個場景 * 每個場景有數個遊戲物件(GameObject) * 每個遊戲物件內可以有數個元件(Component) * 每個元件通常是一個物件(aka 一段C #程式碼) * C# with unity in 30 sec * u_can_see_in_editor: 沒辦法被其他物件摸到 但可以從編輯器修改 * u_can_t_see: 只有自己可以摸到 * u_can_see_anywhere: 編輯器跟其他物件都可以摸到 * 成品環境 * mono * il2cpp <br> ## 攻與防: 遊戲上的冰與火之歌 * 常見的作弊方式及防護手段 * 記憶體修改 * 可使用檔案完整性驗證、作業系統防作弊驅動 * 封包攔截/修改/重放 * 封包加密 * 實例1:MITM(中間人攻擊) * 原始數據並未加上nonce(單次驗證碼)導致封包可以被攔截重放 * 憑證驗證機制可被繞過 可連線至偽造的網站 * 透過中間人攻擊(MITM)建立流量轉發(proxy) 並且修改/重放封包取得任意虛寶 * 實例2:Genshin impact * 避免被逆向工程所做的防護 * 手法 * 加密il2cpp常用的global-metadata.dat * 自定義global-metadata.dat內部結構 * 對global-metadata.dat內部字串進行二次加密 * 部分原始碼混淆 * 實例3:Genshin impact
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up