一般來說,網(wǎng)絡(luò)游戲的封包都可以加密,對(duì)一般數(shù)據(jù)采用簡單的加密,不會(huì)影響游戲速度,但是對(duì)游戲的安全卻非常管用,對(duì)于非常重要的數(shù)據(jù),則采用復(fù)雜的加密方式,可以保證游戲平衡,例如:游戲中人物的等級(jí),這個(gè)屬于非常重要的數(shù)據(jù),必須采用非常好的加密方式來保密數(shù)據(jù)不會(huì)輕易被修改,好了,這個(gè)大家自然明白,那么我們就開始3大常用加密方式告訴大家,并給出解密方法,大家注意掌握,這個(gè)對(duì)游戲修改至關(guān)重要!不能解密,就做不出象樣的外掛!
異或運(yùn)算加密:
異或運(yùn)算加密是通常的加密方式,為了大家直觀理解,下面給大家圖片分析!
這個(gè)是一個(gè)非常簡單的異或運(yùn)算,經(jīng)過加密以后,我們看到的是a,b,c,d,e,f但是,他的實(shí)際意思不是這樣的,實(shí)際意思是,1,2,3,4,5,6,當(dāng)我們看到的是1時(shí),他的實(shí)際意思就是6,當(dāng)然,這個(gè)異或運(yùn)算是比較簡單的,但是在映射的時(shí)候沒有按照一定規(guī)律影射,如果要在只知道a,b,c的情況下來破解其中的規(guī)律,那是需要一定經(jīng)驗(yàn)和技巧的!
如果大家有高中以上文化水平(我想都該沒有問題吧?),我想利用函數(shù)的方法來講解加密問題,這樣大家容易理解,大家知道函數(shù)
y=f(x),
這里的 x就相當(dāng)于我們圖上的abcdef,而y呢就是123456,箭頭就是f,f是映射方式,函數(shù)就是某種映射方式,從函數(shù)和映射的角度來理解加密是非常好的和正確的
常見的加密算法可以分成三類,對(duì)稱加密算法,非對(duì)稱加密算法和Hash算法。對(duì)稱加密指加密和解密使用相同密鑰的加密算法。對(duì)稱加密算法的優(yōu)點(diǎn)在于加解密的高速度和使用長密鑰時(shí)的難破解性。假設(shè)兩個(gè)用戶需要使用對(duì)稱加密方法加密然后交換數(shù)據(jù),則用戶最少需要2個(gè)密鑰并交換使用,如果企業(yè)內(nèi)用戶有n個(gè),則整個(gè)企業(yè)共需要n×(n-1)個(gè)密鑰,密鑰的生成和分發(fā)將成為企業(yè)信息部門的惡夢。對(duì)稱加密算法的安全性取決于加密密鑰的保存情況,但要求企業(yè)中每一個(gè)持有密鑰的人都保守秘密是不可能的,他們通常會(huì)有意無意的把密鑰泄漏出去——如果一個(gè)用戶使用的密鑰被入侵者所獲得,入侵者便可以讀取該用戶密鑰加密的所有文檔,如果整個(gè)企業(yè)共用一個(gè)加密密鑰,那整個(gè)企業(yè)文檔的保密性便無從談起。常見的對(duì)稱加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES非對(duì)稱加密指加密和解密使用不同密鑰的加密算法,也稱為公私鑰加密。假設(shè)兩個(gè)用戶要加密交換數(shù)據(jù),雙方交換公鑰,使用時(shí)一方用對(duì)方的公鑰加密,另一方即可用自己的私鑰解密。如果企業(yè)中有n個(gè)用戶,企業(yè)需要生成n對(duì)密鑰,并分發(fā)n個(gè)公鑰。由于公鑰是可以公開的,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發(fā)將變得十分簡單。同時(shí),由于每個(gè)用戶的私鑰是唯一的,其他用戶除了可以可以通過信息發(fā)送者的公鑰來驗(yàn)證信息的來源是否真實(shí),還可以確保發(fā)送者無法否認(rèn)曾發(fā)送過該信息。非對(duì)稱加密的缺點(diǎn)是加解密速度要遠(yuǎn)遠(yuǎn)慢于對(duì)稱加密,在某些極端情況下,甚至能比對(duì)稱加密慢上1000倍。常見的非對(duì)稱加密算法有:RSA、ECC(移動(dòng)設(shè)備用)、Diffie-Hellman、El Gamal、DSA(數(shù)字簽名用)Hash算法Hash算法特別的地方在于它是一種單向算法,用戶可以通過Hash算法對(duì)目標(biāo)信息生成一段特定長度的唯一的Hash值,卻不能通過這個(gè)Hash值重新獲得目標(biāo)信息。因此Hash算法常用在不可還原的密碼存儲(chǔ)、信息完整性校驗(yàn)等。常見的Hash算法有MD2、MD4、MD5、HAVAL、SHA加密算法的效能通常可以按照算法本身的復(fù)雜程度、密鑰長度(密鑰越長越安全)、加解密速度等來衡量。上述的算法中,除了DES密鑰長度不夠、MD2速度較慢已逐漸被淘汰外,其他算法仍在目前的加密系統(tǒng)產(chǎn)品中使用。
很多人都基本知道WPE怎么工作的了,但是還是不能用它來修改游戲,不能做出外掛來,為什么?其實(shí)很簡單,因?yàn)樗麄儗?duì)封包的分析不夠,不知道封包是可以加密的,更不知道怎么解密,這里我們給大家講解游戲里面使用頻率非常高的幾大加密方式-----異或運(yùn)算加密、背包運(yùn)算加密等等,并給大家講解怎么分析這些加密的封包,怎么找到它的內(nèi)在規(guī)律,怎樣自己制作假封包滿足它的加密規(guī)律,來達(dá)到修改游戲的目的!
一般來說,網(wǎng)絡(luò)游戲的封包都可以加密,對(duì)一般數(shù)據(jù)采用簡單的加密,不會(huì)影響游戲速度,但是對(duì)游戲的安全卻非常管用,對(duì)于非常重要的數(shù)據(jù),則采用復(fù)雜的加密方式,可以保證游戲平衡,例如:游戲中人物的等級(jí),這個(gè)屬于非常重要的數(shù)據(jù),必須采用非常好的加密方式來保密數(shù)據(jù)不會(huì)輕易被修改,好了,這個(gè)大家自然明白,那么我們就開始3大常用加密方式告訴大家,并給出解密方法,大家注意掌握,這個(gè)對(duì)游戲修改至關(guān)重要!不能解密,就做不出象樣的外掛!
異或運(yùn)算加密:
異或運(yùn)算加密是通常的加密方式,為了大家直觀理解,下面給大家圖片分析!
這個(gè)是一個(gè)非常簡單的異或運(yùn)算,經(jīng)過加密以后,我們看到的是a,b,c,d,e,f但是,他的實(shí)際意思不是這樣的,實(shí)際意思是,1,2,3,4,5,6,當(dāng)我們看到的是1時(shí),他的實(shí)際意思就是6,當(dāng)然,這個(gè)異或運(yùn)算是比較簡單的,但是在映射的時(shí)候沒有按照一定規(guī)律影射,如果要在只知道a,b,c的情況下來破解其中的規(guī)律,那是需要一定經(jīng)驗(yàn)和技巧的!
如果大家有高中以上文化水平(我想都該沒有問題吧?),我想利用函數(shù)的方法來講解加密問題,這樣大家容易理解,大家知道函數(shù)
y=f(x),
這里的 x就相當(dāng)于我們圖上的abcdef,而y呢就是123456,箭頭就是f,f是映射方式,函數(shù)就是某種映射方式,從函數(shù)和映射的角度來理解加密是非常好的和正確的,
我們?yōu)槭裁匆v這種加密方式呢?
因?yàn)檫@種加密方式,不是非常隱蔽,但是非常容易實(shí)現(xiàn),建立一個(gè)映射,可以在整個(gè)軟件中調(diào)用,所以,在游戲制作的時(shí)候,制作一個(gè)映射并不需要太高的技術(shù),而且這個(gè)映射可以在任何時(shí)候修改,非常容易維護(hù)和更新,如果映射規(guī)律被破解了,也可以更新游戲來更新映射,達(dá)到保密的作用,所以,這種加密方式是游戲里面經(jīng)常采用的加密方式,更重要的是,這種加密方式對(duì)電腦要求低,運(yùn)算速度快,不會(huì)影響游戲速度,所以經(jīng)常被采用,如果能很好地破解這種加密方式,那么對(duì)于游戲里面的一些關(guān)鍵數(shù)據(jù),我們就可以非常方便的修改了。
下面結(jié)合一個(gè)網(wǎng)吧管理軟件來講解異或運(yùn)算加密,并給大家講解如何破解這種加密方式:
在一個(gè)網(wǎng)管軟件中,有一個(gè)會(huì)員功能,功能是這樣的,凡是會(huì)員,就可以不在網(wǎng)吧老板那兒去登記而是直接上機(jī),開機(jī)后填寫自己的用戶名和密碼就可以解鎖,可以開始使用電腦了,相信去過網(wǎng)吧的人都知道這個(gè)功能吧?
其實(shí),該軟件實(shí)現(xiàn)該功能的過程是這樣的,首先用戶輸入用戶名和密碼,然后把用戶名和密碼發(fā)送到主控電腦(一般是網(wǎng)吧老板身邊的那臺(tái)電腦),由主控電腦檢查該用戶名是否存在,如果存在,再檢查密碼是否正確,這些我們不管了,我們已經(jīng)知道用戶名和密碼都會(huì)發(fā)送到主控電腦那兒去,好,有密碼發(fā)送,就會(huì)有封包發(fā)到主控機(jī)上去,就可以中途攔截,這個(gè)是WPE的專長,當(dāng)然也可以使用其他黑客工具來攔截,我們不管那么多,先攔截幾個(gè)用戶名密碼先,下面這個(gè)是某臺(tái)電腦上被攔截到的封包,內(nèi)容如下:
send 0000 01 00 00 00 7a 68 61 6e 67 6a 75 6e 30 30 37 00
00 02 00 64 66 6c 64 68 6a 66 64 65 6a 68 00 00
要分析這個(gè)封包還真是麻煩,呵呵,那么長,總不能亂抓吧?這里有簡單方法的,別忘了我們前面已經(jīng)講過的方法哦,我們的黃金規(guī)則:比較法則和結(jié)構(gòu)法則,這里我們用比較法則,利用比較法則的相同比較和不同比較,很容易辨認(rèn)用戶名和密碼各在那一段,這樣對(duì)我們的分析是非常有用的,至于如何比較,在前面的章節(jié)都詳細(xì)說了,相信大家都知道了,好了,這里就不再羅嗦了!直接給出!
通過比較我們知道,
用戶名是: 7a 68 61 6e 67 6a 75 6e 30 30 37
密碼是: 64 66 6c 64 68 6a 66 64 65 6a 68
馬上使用我們的進(jìn)位專家來對(duì)付這些16進(jìn)制的文字,翻譯出來的結(jié)果如下:
用戶名:zhangjun007
密碼:dfldhjfdejh
顯然密碼是不大正確的,因?yàn)檫@個(gè)密碼一般人是很難記住的,從一般的情況分析,一般不會(huì)把密碼隨便顯示出來的,總要經(jīng)過加密才可以安全地發(fā)送,不然是很危險(xiǎn)的,萬一被人攔截,很容易被盜,所以,我們有充分的理由相信,這個(gè)不是真正的密碼,那么怎么分析呢?這下該運(yùn)用我們的異或運(yùn)算分析來分析這個(gè)密碼!
看一看密碼的特點(diǎn),全部是字母,而且集中在A到L,在沒有任何分析的前提下,我們可以假設(shè)這是一個(gè)單滿映射(關(guān)于單滿映射的特點(diǎn)及分析方法在后面給出),那么我們得到的是映射的原象,現(xiàn)在要自己建立一個(gè)映射來分析,簡單的,從字母到字母的映射,看能不能找到一個(gè)規(guī)律,分析很長,我們建立了從A到A的映射到從A到Z的映射逐個(gè)分析,結(jié)果都是錯(cuò)的,所以,應(yīng)該考慮從字母到數(shù)字的映射,最后檢查出映射是從C到L映射到0-9,分析結(jié)果出來了:
密碼是:13915731275
估計(jì)是個(gè)手機(jī)號(hào),經(jīng)過測試,這個(gè)密碼是正確的,可以使用!
上面這個(gè)例子不是教大家怎么分析,而是叫大家明白異或運(yùn)算加密是怎么回事!好了,下面我們進(jìn)入異或運(yùn)算的分析,大家注意分析的方法,并多加練習(xí),以后遇到加密的封包就會(huì)很容易對(duì)付的!
如果大家學(xué)習(xí)過加密技術(shù),可以跳過您所熟悉的章節(jié)!
加密解密
異或運(yùn)算分析方法,為了簡單,這里我們不再一封包作為分析,因?yàn)榉獍獜?6位到10位的步驟,很麻煩,我們直接看下面的異或。
從一個(gè)進(jìn)制到另一個(gè)進(jìn)制是一中異或運(yùn)算,而且是單滿映射,所謂單滿映射,意思是每一個(gè)象都有原象,每一個(gè)原象都有象,例如我們的映射是從16進(jìn)制到10進(jìn)制,象,就是10進(jìn)制里面的所有的數(shù),而16進(jìn)制里面的數(shù)就是原象,每一個(gè)10進(jìn)制的數(shù)都唯一對(duì)應(yīng)一個(gè)16進(jìn)制的數(shù),所以說所有象都有唯一一個(gè)原象,而反過來,每一個(gè)16進(jìn)制也唯一對(duì)應(yīng)一個(gè)10進(jìn)制的數(shù),所以每一個(gè)象都有且只有一個(gè)象,這樣的映射就是單滿映射!這樣的映射使用起來效率最高,可以知道每次調(diào)用函數(shù)返回的值都是有用的,下面這個(gè)也是單滿影射:
但是這個(gè)運(yùn)算要分析起來是復(fù)雜的,我們從簡單的分析,你想一想,如果我們這樣對(duì)應(yīng),0對(duì)應(yīng)A,1對(duì)應(yīng)B,這樣一個(gè)一個(gè)對(duì)應(yīng)下去,那么如果你的生日是:1986年2月14日,如果我們把生日加密,按照我們的映射,結(jié)果就是這樣了,BJIG年C月BE日,看看這個(gè)結(jié)果,是不是不那么容易認(rèn)了,這個(gè)就是加密,如果改變對(duì)應(yīng)的開頭,不是0對(duì)應(yīng)A而是0對(duì)應(yīng)E那么會(huì)是怎么樣呢?當(dāng)然會(huì)變的,異或運(yùn)算本身簡單,但是可以看出來,加密還是很有效的!
那么我們?cè)趺粗酪粋€(gè)封包是不是異或運(yùn)算加密的呢?
我們不知道!
對(duì)于這個(gè)回答,大家也許有寫心灰,其實(shí)完全沒有必要,你知道我早上吃的什么?不知道吧?當(dāng)然不知道,誰知道呢?但是我們可以知道,要么吃的食物,要么喝的水,要么什么都沒有吃,如果沒吃,很簡單嘛,如果吃了,我把所有食物都說一遍,總有一個(gè)是你吃的吧,所以,我們雖然不知道封包具體使用異或運(yùn)算沒有,但是我們可以假設(shè)已經(jīng)采用了,然后繼續(xù)分析!異或運(yùn)算不改變數(shù)據(jù)的任何性質(zhì),不會(huì)影響任何分析。
那么怎么分析呢?如果一個(gè)封包確實(shí)是異或運(yùn)算加密的,我們?nèi)绾慰梢哉业剿募用芊椒兀窟@就要采用枚舉法來做了,所謂的枚舉法,也稱窮舉法,如果你認(rèn)為你發(fā)封包應(yīng)該是數(shù)字,那么就找到數(shù)字的映射,可以建立方程,比如:y=F(x)
那么我們找?guī)讉€(gè)點(diǎn),稱為已知點(diǎn),然后解方程,例如,我們我們已經(jīng)知道:a對(duì)應(yīng)的是0,d對(duì)應(yīng)的是3,f對(duì)應(yīng)的是5,那么我們可以這樣做,F(xiàn)(a)=0,F(d)=3,
而這種異或運(yùn)算都是線性的,也就是可以認(rèn)為是一維的,那么有兩個(gè)點(diǎn)就可以算出來了,我們可以認(rèn)為,映射就是:F(x)=Asc(x)-97,這里是Asc()是VB里面的一個(gè)函數(shù),就是返回該字母的Ascii碼,這樣,我們可以帶f對(duì)應(yīng)5進(jìn)行檢驗(yàn),也許你會(huì)問我怎么來這些點(diǎn),這些可以確定函數(shù)的點(diǎn)從那里來?其實(shí)很簡單,舉個(gè)例子,你要知道游戲里面錢的數(shù)字與封包里面數(shù)字的聯(lián)系怎么辦,要確定這個(gè)對(duì)應(yīng)關(guān)系,就要自己去找一些點(diǎn)來確定,我們可以通過一些方法來找到的,例如,我們?nèi)拥粢辉X,看看數(shù)字是多少,這里就找到一點(diǎn)了,一個(gè)點(diǎn)如果確定不了,可以多取一些點(diǎn)來確定,如果還是不行,那么再來,如果是不規(guī)則的影射,就要取遍所有點(diǎn),當(dāng)然象錢這樣的數(shù)字,由于可邊范圍太大,不可能建立想我們給的圖那樣的非規(guī)則影射,否則很難計(jì)算,影響游戲速度,所以可以肯定:游戲里面錢的數(shù)字的加密一定是規(guī)則的運(yùn)算加密的,至于是不是異或運(yùn)算加密的就不知道了!但是我們可以假設(shè)是,然后做我們想做的事啊!
當(dāng)然,異或運(yùn)算的規(guī)則是自己建立的,可以有無窮多,要給大家講解所有的破解方法是不行的,大家是要多動(dòng)手分析才行,這個(gè)需要的是經(jīng)驗(yàn)和技巧,你要從別人的角度想,“如果我要加密,我會(huì)怎么做能做到計(jì)算簡單,加密性好,而且加密函數(shù)又容易設(shè)計(jì)”,想多了,你就知道其實(shí)異或運(yùn)算加密是可以比較容易地分析出來的,當(dāng)然,光靠我們的大腦是痛苦的,何不找一些工具來幫助分析呢?很多黑客軟件都具有分析加密數(shù)據(jù)的功能,試者學(xué)習(xí)一些,會(huì)對(duì)您的封包破解很有幫助的,也許他們能提供更好的破解思路也不一定!
加密解密
背包加密是一中相當(dāng)高級(jí)的加密方式,不容易破解,而且還原也相對(duì)容易,因此采用這種加密方式加密游戲數(shù)據(jù)也是非常好的,只要知道背包,就可以輕易算出來,所以在游戲里面采用這種加密方式加密對(duì)游戲的影響也不是很大,不會(huì)給服務(wù)器帶來太大的負(fù)擔(dān),而且加密是非常安全的,對(duì)于一些重要的數(shù)據(jù)采用這種方式加密是非常可靠的,說了那么多,你也許會(huì)問:“什么是背包加密方式”,好下面給大家說明。
背包分兩種,加法背包和乘法背包!想講加法背包!
我們知道:1