今年 2 月底,海外《俠盜獵車手 5》(Grand Theft Auto V;GTA5)社群有一位高手站了出來,修復了《GTA Online》七年多來一直沒被 Rockstar 修復的啟動器載入讀取過慢問題。如今,Rockstar 出面承認問題並向該名找出解法的玩家致謝,並給予 1 萬美元的抓 BU...
今年 2 月底,海外《俠盜獵車手 5》(Grand Theft Auto V;GTA5)社群有一位高手站了出來,修復了《GTA Online》七年多來一直沒被 Rockstar 修復的啟動器載入讀取過慢問題。如今,Rockstar 出面承認問題並向該名找出解法的玩家致謝,並給予 1 萬美元的抓 BUG 賞金。
自《GTA5》問世 7 年多來,《GTA Online》一直存在著進遊戲讀取過慢的問題,有些玩家甚至表示自己要等待數十分鐘以上才進得了遊戲。然而,如此多年的問題就在高手玩家 tostercx 出面獲得了解決。
tostercx 透過使用 Luke Stackwalker 與專業的程式碼拆解工具,在《GTA Online》執行期間對 CPU 任務堆棧進行分析,進而找出了不少程式碼問題,包含某個程式碼搜尋語句會讓你的 CPU 重覆執行命令達數十億次的瓶頸,找出了《GTA Online》讀取過慢的問題。
最終,tostercx 最終用其他程式碼語言來取代並修復了問題,並公開修復測試結果,修正後的版本讀取速度比原先還要快上 70%,他同時也將修正檔上傳至 Github,並呼籲 Rockstar 盡速修正。
「經過一連串的調查,我們確認玩家 t0st 的發現屬實,他披露了 PC 版《GTA Online》遊戲程式碼讀取時間可再進一步改善。」Rockstar 向外媒 PC Gamer 聲明表示:「由於這項調查發現,我們已經在進行更新修正,之後將會在未來的改版實裝。」
這次的結果可說是皆大歡喜,玩家們之後可以等到 Rockstar 的官方修正,而 tostercx 也更新,原先自己期望收到來自 Rockstar 兩卡車的 GTA 幣作為獎勵,但更好更實際的是,Rockstar 給了他現實的鈔票,抓 BUG 賞金 1 萬美元。
首圖來源:Rockstar Games|ChaosZake
#4GAMERS
#ACGnews
#遊戲情報
#GTAOnline
#俠盜獵車手5
#GTA5
github上傳程式碼 在 TMBA Facebook 的最讚貼文
【TMBA 22nd 程式交易部 上學期招生】
|報名資格:大學二年級以上在學學生,不限學校科系
|報名期限:即日起至 2021/09/09 (四) 23:59
|報名表單:https://forms.gle/MHRpYhWNAEQ95Cmh9
※ 2021/09/10 (五) 23:59 前會以 e-mail 通知面試者相關面試資訊
|繳交資料 (繳交資料請以PDF檔在表單內上傳)
1. 個人履歷 (一頁 A4 為限,中英皆可)
2. 交易策略報告 (加分項一, optional)
- 交易邏輯
- 回測績效
- 程式碼 (截圖)
3. 程式撰寫經驗 (加分項二, optional)
- 附 GitHub 連結或者使用PDF檔呈現專案成果
※ 程式碼務必以截圖方式, 太長需自行切割段落 / 也可附上GitHub或nbviewer連結
※ 可從暑期課程內容自行延伸
|面試資訊 (詳細時間依信件公告為主)
- 日期:9/11 (六) 、9/12 (日) 晚上
※ 暫定, 依報名人數可能調整日期
- 面試形式:線上團體面試, 詳細資訊會以信件通知!
github上傳程式碼 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
本篇文章探討的也是資安系列問題,而這次的目標主角則是 MAC 系統上廣為流傳的 Homebrew 系統。
結論:
作者透過觀察 Homebrew 的 Github Action 流程,成功得上傳一個會列印一行的程式碼到 iterm2 套件中,讓所有安裝的使用者都會於 Terminal 上看到一行作者客製化的訊息。
本次的漏洞是作者刻意從 Homebrew 的 Vulnerability Disclosure Program 專案中去嘗試尋找可能的問題,所有的操作都有跟官方專案的人探討過流程,並且一切的 PoC 都是單純證明該攻擊的可行性,所以有興趣研究的人請遵循一樣的想法去做,不要認真的想攻擊。
原因:
1. Homebrew 透過 Github Action 執行 CI/CD 動作
2. Homebrew 撰寫了一個自動合併 Pull Request 的 Action
3. CI 內會透過一個Ruby的 Git Diff 第三方函式庫來驗證,只要符合下列條件就可以自動合併
- Modifying only 1 file
- Not moving/creating/deleting file
- Target filepath matches \ACasks/[^/]+\.rb\Z
- Line count of deletions/additions are same
- All deletions/additions matches /\A[+-]\s*version "([^"]+)"\Z/ or - -\A[+-]\s*sha256 "[0-9a-f]{64}"\Z
- No changes to format of versions (e.g. 1.2.3 => 2.3.4)
作者一開始想要從該規則下手,找尋有沒有可能塞入惡意攻擊並且騙過系統讓其自動合併,然而這些規則看起來沒有什麼太多問題,於是作者轉往其他領域去找尋問題,其中一個想法就是到底該 Ruby 的 Git Diff 是如何實作,也許從實作下手更有辦法去欺騙這一切。
很順利的是,作者真的於該函式庫中找到問題,對於一個 Git Diff 的結果來說,該函式庫會透過 +++ "?b/(.*) 這樣的正規表達式來判別檔案路徑的資訊而並非程式修改內容,譬如下列 diff
```
diff --git a/source file path b/destination file path
index parent commit hash..current commit hash filemode
--- a/source file path
+++ b/destination file path
@@ line information @@
Details of changes (e.g.: `+asdf`,`-zxcv`)
```
作者就開始思考,如果讓程式碼可以符合 +++ "?b/(.*) 的規則,是否有辦法讓程式碼不被視為一個檔案的修改,因此就可以修改多行程式碼但是讓 CI 系統認為只有一行程式碼於是進行自動合併
作者最初的想法如下,第一行用來放惡意程式碼,第二行用來偽裝檔案路徑,經過一番嘗試後作者真的成功塞入了類似 PRINTF 的程式碼到環境中並觸發自動合併。接者各地使用者透過 brew 安裝 iterm 版本都會看到使用者塞入的程式碼。
```
++ "b/#{Arbitrary codes here}"
++ b/Casks/cask.rb
```
原文還有更多作者的思路過程,有興趣的不要錯過
原文:
https://blog.ryotak.me/post/homebrew-security-incident-en/#fn:7
測試用PR:
https://github.com/Homebrew/homebrew-cask/pull/104191
github上傳程式碼 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
今天的文章不是一個技術文,反而是探討身為一個軟體工程師,該怎麼撰寫相關的技術文件
鑑於 WFH (Work From Hoem) 習慣的興起,人與人面對面的溝通減少,這意味即時的訊息傳遞變少了,取而代之的是非同步的訊息傳遞,簡單來說就是技術文件。
好的技術文件能夠讓需要的人快速找到問題,解決疑惑,但是一個好的技術文件到底該怎麼寫,這部分其實非常困難,並不是向程式碼一樣可以 copy&paste 馬上看到成果的,反而是需要時間練習,將整個過程與思路消化起來,用自己習慣的語言與形式將其撰寫出來。
首先,作者非常推崇由 Google 撰寫的系列文章,Tech Writing Course,整個課程內容不到兩小時,從不同章節來跟大家分享如何撰寫技術文章
接者撰寫技術文章時,作者個人是喜歡 divio 這個平台,不過更重要的則是其推薦的分類模式,根據內容分類成四大項
1. Tutorials - 學習導向
2. How-To Guides - 問題解決導向
3. Explanation - 深度理解導向
4. Reference - 資運分享導向
Google: https://developers.google.com/tech-writing
Divio: https://www.divio.com/
最後寫作語法方面,作者認為寫出一個能夠被有效搜尋的文章是非常重要的,譬如透過 word 等方式上傳檔案到系統中反而是一個不利於搜尋的方式。
取而代之的是,作者認為可以採用 Markdown 類似的語法作為基礎去撰寫文章,這種方式對於維護與撰寫都相對容易
今天有任何 Diagrams 的畫圖需求,可以考慮使用 Mermaid 這套解決方案,對於 GitLab/Azure 的使用者來說,已經內建其中。 GitHub/Atlassian Confluence 則有相關的 Plugin 可以安裝使用
最後則是文章的樣版內容,針對特定的文章格式,已經有不少的範本可以參考,透過這些範本可以更清楚的去描述你的內容,讓整體文章看起來更佳簡潔與流暢
1. Software Architecture Review Template
2. Architecture Decision Record Template
3. Incident Postmortem Template
4. DevOps Runbook
5. Decision Template
6. Writing Guidelines
7. OKR Template
8. Etc.
有興趣的點選原文學習更多
https://medium.com/better-programming/best-practices-when-documenting-your-code-for-software-engineers-941f0897aa0