武影影
摘要:該文從技術(shù)實現(xiàn)角度將現(xiàn)有的軟件自動化濫用分成三類:篡改應(yīng)用進(jìn)程數(shù)據(jù)文件、修改進(jìn)程與服務(wù)器數(shù)據(jù)封包、監(jiān)聽用戶界面并模擬用戶點擊或輸入。首先從用戶、軟件開發(fā)者和網(wǎng)絡(luò)管理者等方面分析了自動化濫用存在的原因,接著對三種自動化濫用的原理進(jìn)行探討,最后,分別從技術(shù)、法律和經(jīng)濟(jì)方面針對三種自動化濫用給出防御方法。
關(guān)鍵詞:篡改數(shù)據(jù);修改封包;模擬用戶;自動化濫用防御方法
中圖分類號:TP309? ? ? 文獻(xiàn)標(biāo)識碼: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],對原軟件基礎(chǔ)功能進(jìn)行修改,讓使用者獲得超出原軟件應(yīng)有性能的濫用現(xiàn)象。濫用已出現(xiàn)在多個領(lǐng)域,如游戲外掛、刷課、搶票、搶紅包等:游戲外掛數(shù)量呈逐年上升趨勢;刷課軟件也隨著線上課程的出現(xiàn)“應(yīng)運而生”;攜程、途牛、去哪兒網(wǎng)等搶票軟件層出不窮。濫用不僅破壞應(yīng)用使用的公平,還會危害到軟件開發(fā)商、軟件發(fā)行商和其他用戶的利益。因此,分析濫用原理并給出相應(yīng)防御技術(shù)非常有必要。此前研究,大多針對篡改進(jìn)程數(shù)據(jù)文件和監(jiān)聽用戶界面模擬用戶點擊或輸入給出相應(yīng)防御對策,本文在此基礎(chǔ)上,補充了修改進(jìn)程與服務(wù)器數(shù)據(jù)封包類的防御措施。
2 自動化濫用原因分析
2.1 用戶
用戶使用自動化軟件主要有三個原因:1)避免重復(fù)單一的動作。如模擬點擊類游戲外掛、刷課軟件;2)獲得原軟件以外的功能。如修改數(shù)據(jù)封包類外掛,通過修改數(shù)值提升游戲人物能力值;3)謀取利益。用戶利用自動化軟件實現(xiàn)游戲快速升級[2]、借助搶票軟件購票,再將游戲賬號和票高價賣出,賺取利潤。
2.2 軟件/腳本開發(fā)者
開發(fā)者主要為了獲取利益。通常自動化軟件價格高昂,并且由于軟件的可復(fù)制性,一份軟件可以賣給多個用戶,開發(fā)者因此能獲取巨額利潤。
2.3 網(wǎng)絡(luò)管理者
濫用的防御存在一定的滯后性。在該類軟件最初使用時,網(wǎng)絡(luò)管理者并不能有效識別,通常在該類軟件大面積使用后,管理者才能開發(fā)出相應(yīng)技術(shù)對其檢測和防御。
3 自動化濫用的分類
濫用從技術(shù)上可以分為三類:篡改應(yīng)用進(jìn)程數(shù)據(jù)文件、修改進(jìn)程與服務(wù)器數(shù)據(jù)封包、監(jiān)聽用戶界面并模擬用戶點擊或輸入。
3.1 篡改應(yīng)用進(jìn)程數(shù)據(jù)文件
篡改應(yīng)用進(jìn)程數(shù)據(jù)文件大多應(yīng)用于游戲外掛。目前主要有兩種方法。
1)通過輔助工具(如Delphi7、SPY4、Cheat Engine等 )對游戲進(jìn)行逆向分析[3],分析游戲頁面,得到游戲窗口句柄的API函數(shù);通過API函數(shù)逐步獲得游戲窗口句柄、窗口id、進(jìn)程句柄。借助輔助工具得到游戲中變量的內(nèi)存地址,利用進(jìn)程句柄和該變量地址,修改該游戲進(jìn)程數(shù)據(jù)。如修改游戲時鐘類外掛,外掛軟件通過修改游戲API函數(shù)修改游戲定時器[1],實現(xiàn)修改游戲速度。
2)另外一種方式是向游戲進(jìn)程中注入外掛動態(tài)鏈接庫(外掛DLL),由DLL入口函數(shù)執(zhí)行外掛代碼[4]。DLL注入可以通過APC(異步進(jìn)程調(diào)用)注入、Message注入、注冊列表注入、遠(yuǎn)程線程注入、輸入法注入等方式注入。
3.2 修改進(jìn)程與服務(wù)器數(shù)據(jù)封包
修改封包類自動化軟件通過攔截客戶端與服務(wù)器之間的數(shù)據(jù)封包,解析數(shù)據(jù)封包,然后采取相應(yīng)的技術(shù)產(chǎn)生并發(fā)送服務(wù)器能識別的數(shù)據(jù)包。由于不同應(yīng)用程序客戶端/服務(wù)器交換數(shù)據(jù)包的差異性,這類外掛的針對性較強。主要有兩種方法:直接修改數(shù)據(jù)包、Hook API [5]。
1)直接修改數(shù)據(jù)包
直接修改數(shù)據(jù)包相對簡單,但應(yīng)用卻很廣泛,尤其是在刷課領(lǐng)域。以刷課軟件為例,刷課軟件通過獲取課程頁面信息,如課程id、進(jìn)程id,課程時間長度等,篡改信息后,將信息發(fā)送給數(shù)據(jù)庫。數(shù)據(jù)庫根據(jù)篡改后的信息記錄個人學(xué)習(xí)時長。