武影影
摘要:該文從技術實現角度將現有的軟件自動化濫用分成三類:篡改應用進程數據文件、修改進程與服務器數據封包、監聽用戶界面并模擬用戶點擊或輸入。首先從用戶、軟件開發者和網絡管理者等方面分析了自動化濫用存在的原因,接著對三種自動化濫用的原理進行探討,最后,分別從技術、法律和經濟方面針對三種自動化濫用給出防御方法。
關鍵詞:篡改數據;修改封包;模擬用戶;自動化濫用防御方法
中圖分類號:TP309? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)19-0079-03
Analysis of Software Automation Abuse and Countermeasures
WU Ying-ying
(School of International Business, Tianjin Foreign Studies University, Tianjin 300270, China)
Abstract: From the perspective of technology implementation, this paper divides the existing automation abuse into three categories: tampering with process data files, modifying process and server data packets, monitoring user interface and simulating user click or input. This paper first analyzes the reasons of automation abuse from the aspects of users, software developers and network managers, then discusses the principles of three kinds of automation abuse, and finally gives the defense methods from the aspects of technology, law and economy.
Key words: tamper data; modify packets; simulate users; automation abuse defense methods
1 背景
軟件自動化濫用(以下簡稱濫用)是指借助輔助程序(輔助軟件)[1],對原軟件基礎功能進行修改,讓使用者獲得超出原軟件應有性能的濫用現象。濫用已出現在多個領域,如游戲外掛、刷課、搶票、搶紅包等:游戲外掛數量呈逐年上升趨勢;刷課軟件也隨著線上課程的出現“應運而生”;攜程、途牛、去哪兒網等搶票軟件層出不窮。濫用不僅破壞應用使用的公平,還會危害到軟件開發商、軟件發行商和其他用戶的利益。因此,分析濫用原理并給出相應防御技術非常有必要。此前研究,大多針對篡改進程數據文件和監聽用戶界面模擬用戶點擊或輸入給出相應防御對策,本文在此基礎上,補充了修改進程與服務器數據封包類的防御措施。
2 自動化濫用原因分析
2.1 用戶
用戶使用自動化軟件主要有三個原因:1)避免重復單一的動作。如模擬點擊類游戲外掛、刷課軟件;2)獲得原軟件以外的功能。如修改數據封包類外掛,通過修改數值提升游戲人物能力值;3)謀取利益。用戶利用自動化軟件實現游戲快速升級[2]、借助搶票軟件購票,再將游戲賬號和票高價賣出,賺取利潤。
2.2 軟件/腳本開發者
開發者主要為了獲取利益。通常自動化軟件價格高昂,并且由于軟件的可復制性,一份軟件可以賣給多個用戶,開發者因此能獲取巨額利潤。
2.3 網絡管理者
濫用的防御存在一定的滯后性。在該類軟件最初使用時,網絡管理者并不能有效識別,通常在該類軟件大面積使用后,管理者才能開發出相應技術對其檢測和防御。
3 自動化濫用的分類
濫用從技術上可以分為三類:篡改應用進程數據文件、修改進程與服務器數據封包、監聽用戶界面并模擬用戶點擊或輸入。
3.1 篡改應用進程數據文件
篡改應用進程數據文件大多應用于游戲外掛。目前主要有兩種方法。
1)通過輔助工具(如Delphi7、SPY4、Cheat Engine等 )對游戲進行逆向分析[3],分析游戲頁面,得到游戲窗口句柄的API函數;通過API函數逐步獲得游戲窗口句柄、窗口id、進程句柄。借助輔助工具得到游戲中變量的內存地址,利用進程句柄和該變量地址,修改該游戲進程數據。如修改游戲時鐘類外掛,外掛軟件通過修改游戲API函數修改游戲定時器[1],實現修改游戲速度。
2)另外一種方式是向游戲進程中注入外掛動態鏈接庫(外掛DLL),由DLL入口函數執行外掛代碼[4]。DLL注入可以通過APC(異步進程調用)注入、Message注入、注冊列表注入、遠程線程注入、輸入法注入等方式注入。
3.2 修改進程與服務器數據封包
修改封包類自動化軟件通過攔截客戶端與服務器之間的數據封包,解析數據封包,然后采取相應的技術產生并發送服務器能識別的數據包。由于不同應用程序客戶端/服務器交換數據包的差異性,這類外掛的針對性較強。主要有兩種方法:直接修改數據包、Hook API [5]。
1)直接修改數據包
直接修改數據包相對簡單,但應用卻很廣泛,尤其是在刷課領域。以刷課軟件為例,刷課軟件通過獲取課程頁面信息,如課程id、進程id,課程時間長度等,篡改信息后,將信息發送給數據庫。數據庫根據篡改后的信息記錄個人學習時長。