apustyphoon 发布于四月 17, 2016 分享 发布于四月 17, 2016 [align=left]『』聽聞同盟內資源外流事情頗為嚴重,而同盟內尚無有效的手段以應變。所以就想了一個方法,看有無可行之處。[/align] [align=left]『』本資源外流管控方式,只要由幾個要素構成:1、論壇特有離線解壓器、壓縮器,沒有解壓器就無法解壓。2、基於同盟成員唯一ID的密鑰生成器。3、密鑰烙印器、密鑰識別器。4、網頁動態文本控件。[/align][align=left]『』離線解壓器大概每一個月或半個月登陸一次,每次登入時會在解壓器中更新一次使用者的識別密鑰。該識別密鑰,主要基於使用者——SSTM用戶——唯一ID推算出來。每次使用解壓器解壓遊戲壓縮包時,解壓器會將使用者密鑰烙印在遊戲資料內隱而不顯的地方。如此以來,只要有人外流遊戲,那麼必然可從外流資源內識別出其密鑰,逆向追蹤外流者。[/align][align=left]『』如果發布者有心得話,可以一個遊戲壓縮多次,(不是一個遊戲分成幾個壓縮包;而是一個遊戲,用同樣的方法,不同的密碼,解壓成不同的壓縮包),不同壓縮版本在隱而不顯的地方打上壓縮包版本。然後壓縮包下載地址及對應的壓縮包密碼,放在一個序列中,灌入網頁控件。網頁控件依據用戶的不同、或用戶購買時間的不同,給予不同的壓縮包下載地址以及解壓密碼。如此一來,只要有資源外流,只要根據壓縮包版本就可以大概推算出外流者大概是那些用戶群組的、或什麼時候下載的。考慮到遊戲內容比較大,個人是建議只有遊戲核心部分(漢化文件、或一些必要遊戲資料)如此設置多版本壓縮。此外,考慮多版本壓縮步驟繁瑣,該功能應由論壇提供的壓縮器實現。[/align][align=left]『』綜合上述,如果同盟內用戶在解壓一個遊戲後,該遊戲就會有兩段特徵密鑰來標記出解壓者。相信這可以幫助論壇很方便地鎖定資源外流者。而此兩種密鑰(解壓者密鑰、加密版本密鑰)只要實作一個就可以了。從技術上而言,「解壓者密鑰」要設計ID演算法,屬高難度;而「加密版本密鑰」比較費工,雖然會由壓縮解壓器實現大部分操作,但還是屬於高煩度的(但比較容易實現就是)。[/align][align=left]『』最終,要強調的是。此機制僅負責加壓解壓遊戲軟件,不涉及遊戲內部的彙編使用;以免加劇漢化者的負擔。此外關於此機制,以我的能力恐怕無法提供任何代碼上的實現。(攤手,畢竟我只是一個高職畢業的人~)[/align] #注01:密鑰烙印時直接以字符碼或字節碼形式,寫入遊戲代碼文件中隱而不顯的地方。 [hide=600]『』考慮到同盟資源有限,「解壓者密鑰」到無須一人一個,大概一組人一個就好。而且也未必是需要靠ID來演算;只要在論壇內設置一個密鑰表就好了,裡面使用者分組和對應密鑰隨機生成指派即可。假設如果資源是同一個人流出的話,那麼不難根據外流資源逐步縮小範圍;當鎖定出高度可疑者時,在給其配個獨立特徵密鑰、用以查驗。 『』這裡要注意的是,特徵密鑰不一定代表當事人。有可能是我說的機制被發現,有人故意抽出特徵密鑰以嫁禍他人。(但原則上,每個人的特徵密鑰,大家都是互不知道的;但也不排除密鑰算法、密鑰用戶表被抓到~)另外,特徵密鑰得做出比較完善的校驗機制,以免誤會。考慮到「解壓者密鑰」未必絕對可靠,故所以再外加一個「加密版本密鑰」以補全。 『』最終從心戰角度講,我建議這個技術上留一個後門,允許在比較高階的破解手法下抹除特徵密鑰。如此,只要在網絡上發現外流又抹除特徵密鑰的資源時,就表示我說的方法被發現並破解啦。這個時候就算無法立即堵上漏洞,至少也可早點知道。同盟如果投入很大的心血於該機制並實現的話,對外也不要太過張揚,以免引起好事者破解。 [/hide] [hide=1000]『』這個機制有一個罩門。即是「解壓者密鑰」演算法高明、論壇防火牆夠厲害;但用戶還是可以通過反編譯「離線加密器」以大概瞭解「解壓者密鑰」大概如何烙印的。但即使如此,「加密版本密鑰」的烙印密鑰機制與「解壓者密鑰」無關;所以當「解壓者密鑰」被抓出來時,「加密版本密鑰」仍可發揮作用。 『』如果論壇有充足資源的話,可以講遊戲核心部分加密彙編起來,在程序運行時不得不引用「解壓者密鑰」。但如果可以做到這一步,基本上可以開個小公司拿這個技術來賺錢了。[/hide] 链接到点评
apustyphoon 发布于四月 17, 2016 作者 分享 发布于四月 17, 2016 swjacjc 发表于 2016-4-17 18:56認真認為,算了吧 大家的許多資源還不是外網錢空弄來的? 只有幾個大戶,或是我這種偶爾買遊戲分享的會買 『』密鑰是基於SSTM用戶名的,使外流者在外流資源時形同做了是SSTM內誰誰外流的印記。『』密鑰的烙印是烙印在遊戲文件中的;你解壓就自然烙印上了,再壓縮也無用,解壓後還是有烙印。 链接到点评
apustyphoon 发布于四月 17, 2016 作者 分享 发布于四月 17, 2016 布偶只是布偶 发表于 2016-4-17 19:42......簡單講.....辦不到........ 樓主 說了一大串......最後卻說"以我的能力恐怕無法提供任何代 ... 呵呵,沒辦法,我連用Java寫一個批量文本替代的小程序都要花兩個月⋯⋯而且才局部實現功能而已⋯⋯ 链接到点评
apustyphoon 发布于四月 18, 2016 作者 分享 发布于四月 18, 2016 帕琪妮特 发表于 2016-4-18 09:20看了前面的評論之後,妮特總覺得要實現這個的話 可能是非常困難…… (淚~)『』雖然可行性被婊到不行,但多少還是學習了點東西。 『』話說,在程式碼內加點料,就那麼難嗎?代碼中總是可以設置一些無引用字符串常量什麼的;又不是修改代碼過程什麼的⋯⋯ 『』不過機制罩門沒幾下就被發現,還是蠻受打擊的⋯⋯ 链接到点评
推荐贴