2000FUN論壇

 

 

搜索
2000FUN論壇 綜合論壇 埃米爾物語 可怕的NP盾..
查看: 6060|回覆: 21
go

可怕的NP盾.. [複製鏈接]

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
1#
發表於 11-7-23 09:55 PM |只看該作者 |倒序瀏覽 |打印
什麼是nProtect?
nProtect是設計用於保護個人電腦終端不被病毒和黑客程式感染的新概念的基於網路的反黑客和反病毒的工具。他幫助確保所有輸入個人電腦終端的資訊在網路上不落入黑客手中。
在最終使用者在執行電子貿易時,可以透過將nProtect配置在那些提供電子商務、進口貿易,電子貿易的金融機構的網站上,來提升安全等級。
--------------------------------------------------------------------------------------------------
nProtect怎樣工作?
nProtect是一種基於伺服器端的解決方案並且當那些需要保護的任何網路應用被營運時而自動啟動。nProtect被載入記憶體,所以最終使用者不需
要安裝任何應用程式,只要nProtect啟動,就開始拒絕黑客工具和病毒的入侵﹗
--------------------------------------------------------------------------------------------------
nProtect如何工作?
1. 使用者登陸時nProtect自動啟動。
2. 瀏覽器確認和自動安裝安全模塊到使用者的個人電腦。
3. 掃瞄黑客工具和病毒
4. 通知使用者目前的安全狀態
5. 如果有黑客工具和病毒嘗試刪除
6. 在被入侵時端駐留記憶體來鎖定黑客工具直到電腦或者nProtect關閉。
--------------------------------------------------------------------------------------------------

[ 本帖最後由 曉;) 於 11-7-28 08:06 AM 編輯 ]

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
2#
發表於 11-7-23 09:56 PM |只看該作者
使用此軟體的網路遊戲還有很多,比如︰冒險島國際服,信長野望online,希望online等等
再來談談新版本的冒險島外掛問題︰
目前在伺服器上能屏蔽掉的一般都是高速戰鬥,即兩次戰鬥的資料傳輸時間間隔少於遊戲設定的最少時間(比如說最快的攻擊是用小刀砍一下,假設這個時間是2 秒,而某ip長時間以1秒傳送一次攻擊指令(既含有攻擊指令的封包),可以強製讓此ip斷線,但並不能做為封號的證據)高速采集原理也差不多,還有瞬移等。
什麼是封包?客戶端和伺服器之間往來的資料就是封包
有學過電腦的因該都知道電腦網路被OSI參考模型分為7層︰
第1層︰物理層;傳輸單位是比特流,既bit
第2層︰資料鏈路層;傳輸單位是幀,既frame
第3層︰網路層;這一層傳輸的就是包了,既packet
第4層︰傳輸層;傳輸單位是段,既segment
第5層︰會話層;建立連接並保持連接暢通
第6層︰表示層;將資訊"表示"為一種格式,可以理解為就是"格式轉換"
第7層︰應用層。對軟體提供界面以使程式能使用網路服務
資料在網路中傳輸不是一整大段的傳輸的,而是分成小塊傳輸的,由於比較分散,所以封包。大家可以理解為"搬家的時候把東西打成包好搬運
"。
目前的外掛都是內嵌於遊戲中,對遊戲所接收和送出的封包進行截取,修改,重構建等。
話說回來,nProtect GameGuard的確很厲害,從冒險島更新它又來到我的硬碟上以後,我的ZoneAlarm防火牆就開始報警了,說它要監視你的進程,並且欲訪問網路,唉,沒辦法,為了玩冒險,只好放行咯。
試圖訪問internet
監視冒險島進程
切出遊戲後,你會發現右下角多了個這東西,翻譯過來就是"nProtect 遊戲監視程式 版本624"
至此,我想大家覺得冒險島純淨時代再次來臨了吧?
不過很可惜,答案是否定的。
已有 1 人評分Good 收起 理由
一健正野 + 3 好耐無派good了~

總評分:  Good + 3   查看全部評分

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
3#
發表於 11-7-23 09:56 PM |只看該作者
-----------------------------------------------------------------------------------------------------------------
截包工具:
WPRO.rar
IRIS.rar

   WPE 是透過注入dll的模式hook send, recv, WSASend, WSARecv等函數來截取封包, 如果進程有anti wpe , 有可能截不到資料包
   Iris 是sniffer工具, 對網卡進行截包, 需要適當設定IP,port過濾條件, 不可能漏包
調試工具:
   flyOdbg 1.1

   fly修改的ollydbg漢化第二版, 很棒的調試工具
分析工具:
   IDA 4.8

16進製編輯工具:
   UE 11.0
--------------------------------------------------------------------------------------------------
遊戲中看到的資料可都是十進製的,在要尋找並修改參數的值時,可以使用Windows提供的電算機來進行十進製和16進製的換算,我們可以在開始功能表裡的程式組中的附件中找到它。
現下要了解的知識也差不多了﹗不過,有個問題在遊戲修改中是需要注意的。在電腦中資料的儲存模式一般是低位數儲存在低位位元組,高位數儲存在高位位元組。比如,十進製數41715轉換為16進製的數為A2F3,但在電腦中這個數被存為F3A2。
------------------------------------------------------------------------------------------------

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
4#
發表於 11-7-23 09:58 PM |只看該作者
WPE使用方法︰執行WPE會有下列幾項功能可選擇︰
SELECT GAME選擇目前在記憶體中您想攔截的程式,您只需雙擊該程式名稱即可。
TRACE追蹤功能。用來追蹤擷取程式送收的封包。WPE必須先完成點選欲追蹤的程式名稱,才可以使用此項目。按下Play鍵開始擷取程式收送的封包。您可以隨時按下 | | 暫停追蹤,想繼續時請再按下 | |。按下正方形可以停止擷取封包並且顯示所有已擷取封包內容。若您沒按下正方形停止鍵,追蹤的動作將依照OPTION裡的設定值自動停止。如果您沒有擷取到資料,試試將OPTION裡調整為Winsock Version 2。WPE 及 Trainers 是設定在顯示至少16 bits顏色下才可執行。
FILTER過濾功能。用來分析所擷取到的封包,並且予以修改。
SEND PACKET送出封包功能。能夠讓您送出假造的封包。
TRAINER MAKER製作修改器。
OPTIONS設定功能。讓您調整WPE的一些設定值。
FILTER的詳細教學
當FILTER在啟動狀態時 ,ON的按鈕會呈現紅色。- 當您啟動FILTER時,您隨時可以關閉這個視窗。FILTER將會保留在原來的狀態,直到您再按一次on / off 鈕。- 只有FILTER啟用鈕在OFF的狀態下,才可以勾選Filter前的方框來編輯修改。-當您想編輯某個Filter,只要雙擊該Filter的名字即可。
NORMAL MODE︰
範例︰
當您在 Street Fighter Online   快打旋風線上版  遊戲中,您使用了兩次火球而且擊中了對方,這時您會擷取到以下的封包︰
SEND-> 0000 08 14 21 06 01 04
SEND-> 0000 02 09 87 00 67 FF A4 AA 11 22 00 00 00 00
SEND-> 0000 03 84 11 09 11 09
SEND-> 0000 0A 09 C1 10 00 00 FF 52 44
SEND-> 0000 0A 09 C1 10 00 00 66 52 44
您的第一個火球讓對方減了16滴  16 = 10h  的生命值,而您觀察到第4跟第5個封包的位置4有10h的值出現,應該就是這裡了。
您觀察10h前的0A 09 C1在兩個封包中都沒改變,可見得這3個數值是發出火球的關鍵。
因此您將0A 09 C1 10填在搜尋列  SEARCH  ,然後在修改列  MODIFY  的位置4填上FF。如此一來,當您再度發出火球時,FF會取代之前的10,也就是攻擊力為255的火球了﹗
ADVANCED MODE︰
範例︰當您在一個遊戲中,您不想要用真實姓名,您想用修改過的假名傳送給對方。在您使用TRACE後,您會發現有些封包裡面有您的名字出現。假設您的名字是Shadow,換算成16進位則是  53 68 61 64 6F 77  ;而您打算用moon  6D 6F 6F 6E 20 20  來取代他。1)
SEND-> 0000 08 14 21 06 01 042)
SEND-> 0000 01 06 99 53 68 61 64 6F 77 00 01 05 3)
SEND-> 0000 03 84 11 09 11 094)
SEND-> 0000 0A 09 C1 10 00 53 68 61 64 6F 77 00 11 5)
SEND-> 0000 0A 09 C1 10 00 00 66 52 44
但是您仔細看,您的名字在每個封包中並不是出現下相同的位置上
在第2個封包裡,名字是出現下第4個位置上- 在第4個封包裡,名字是出現下第6個位置上
在這種情況下,您就需要使用ADVANCED MODE- 您在搜尋列  SEARCH  填上︰53 68 61 64 6F 77  請務必從位置1開始填  - 您想要從原來名字Shadow的第一個字母開始置換新名字,因此您要選擇從數值被發現的位置開始替代連續數值  fromthe position of the chain found  。- 現下,在修改列  MODIFY  000的位置填上︰6D 6F 6F 6E20 20   此為相對應位置,也就是從原來搜尋欄的+001位置開始遞換  - 如果您想從封包的第一個位置就修改數值,請選擇  from thebeginning of the packet  
了解一點TCP/IP協議常識的人都知道,互聯網是將資訊資料打包之後再傳送出去的。每個資料包分為頭部資訊和資料資訊兩部分。頭部資訊包括資料包的送出位址和到達位址等。資料資訊包括我們在遊戲中相關操作的各項資訊。那麼在做截獲封包的過程之前我們先要知道遊戲伺服器的IP位址和連接埠號等各種資訊,實際上最簡單的是看看我們遊戲目錄下,是否有一個SERVER.INI的配置檔案,這個檔案裡你可以檢視到個遊戲伺服器的IP位址,比如金庸群俠傳就是如此,那麼除了這個我們還可以在DOS下使用NETSTAT這個命令,
NETSTAT命令的功能是顯示網路連接、路由表和網路界面資訊,可以讓使用者得知目前都有哪些網路連接正在運作。或者你可以使用木馬客星等工具來檢視網路連接。工具是很多的,看你喜歡用哪一種了。
NETSTAT命令的一般格式為︰NETSTAT [選項]
命令中各選項的含義如下︰
-a 顯示所有socket,包括正在監聽的。
-c 每隔1秒就重新顯示一遍,直到使用者中斷它。
-i 顯示所有網路界面的資訊。
-n 以網路IP位址代替名稱,顯示出網路連接情形。
-r 顯示核心路由表,格式同"route -e"。
-t 顯示TCP協議的連接情況。
-u 顯示UDP協議的連接情況。
-v 顯示正在進行的工作。
--------------------------------------------------------------------------------------------------

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
5#
發表於 11-7-23 09:58 PM |只看該作者
GameGuard nprotect是營運遊戲後自動在後台營運的遊戲過程中切換回桌面可疑看到在系統
DES( data encryption Standard)是一種世界標準的加密形式,已經15年歷史了,雖然有些老,可還算是比較可靠的算法。在七十的初期,隨著電腦之間的通信發展,需要有一種標準密碼算法為了限制不同算法的激增使它們之間不能互相對話。為解決這個問題, 美國國家安全局(N.S.A ) 進行招標。 I.B.M 公司開發了一種算法, 稱為︰Lucifer。 經過幾年的研討和修改, 這種算法, 成為了今天的D.E.S,1976 年11月23 日,終於被美國國家安全局採用。
D.E.S是分塊加密的,將明文分割成 64 BITS 的塊,然後它們一個個接起來。它使用56位密鑰對64位的資料塊進行加密,並對64bits的資料塊進行16輪編碼。與每輪編碼時,一個48bits的“每輪”密鑰值由56bits的完整密鑰得出來。DES用軟體進行解碼需要用很長時間,而用硬體解碼速度非常快,1977年,人們估計要耗資兩千萬美元才能建成一個專門電腦用於DES的解密,而且需要12個小時的破解才能得到結果。所以,當時DES被認為是一種十分強壯的加密方法。但今天,只需二十萬美圓就可以製造一台破譯DES的特殊的電腦,所以現下 DES 對要求“強壯”加密的場合已經不再適用了。
美國軍方委托IBM公司研究出來的加密算法,是美國政府的標準加密算法,不是雙質數加密法。
DES算法全稱為Data EncryptionStandard,即資料加密算法,它是IBM公司於1975年研究成功並公開發表的。DES算法的入口參數有三個:Key、Data、Mode。其中Key為8個位元組共64位,是DES算法的工作密鑰;Data也為8個位元組64位,是要被加密或被解密的資料;Mode為DES的工作模式,有兩種:加密或解密。
DES算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的密鑰也是64位,其算法主要分為兩步︰
1 初始置換
其功能是把輸入的64位資料塊按位重新組合,並把輸出分為L0、R0兩部分,每部分各長32位,其置換規則為將輸入的第58位換到第一位,第50位換到第2位……依此類推,最後一位是原來的第7位。L0、R0則是換位輸出後的兩部分,L0是輸出的左32位,R0是右32位,例:設定換前的輸入值為D1D2D3……D64,則經過初始置換後的結果為:L0=D58D50……D8;R0=D57D49……D7。
2 逆置換
經過16次迭代運算後,得到L16、R16,將此作為輸入,進行逆置換,逆置換正好是初始置換的逆運算,由此即得到密文輸出。
--------------------------------------------------------------------------------------------------

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
6#
發表於 11-7-23 09:59 PM |只看該作者
DES算法的簡單說明
DES的每個分組是64位,既明文和密鑰都是64位(密鑰實際用56位,每位元組第8位為校驗)。這個算法的核心是Feistel密碼,由於其設計的巧妙,加密解密都用一個函數,具體原理請查閱其他資料。DES的流程基本是執行16輪下面的運算︰
1 初始變換Initial Permutation
2 右邊32位f函數
2.1 E置換
2.2 與輪密鑰XOR
2.3 S盒替換
2.4 P置換
2.5 和左邊32位XOR
3 左右交換,最終變換final permutation
需要特別注意的是,最後一輪是不需要做左右交換這一部的,有的書在這個問題上寫得不夠明確,逼得我當時手算了一遍,還好只是64位。
--------------------------------------------------------------------------------------------------

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
7#
發表於 11-7-23 10:00 PM |只看該作者
實現分析
可以看出DES裡到處都是基於bit的置換,所以我的實現是把明文的64位拆開儲存在數組裡,再寫一個專門處理置換的函數。
private int[] permutation(int[] initial, int[] perm)
{
int[] result = new int[perm.length];
for(int i=0; i<result.length; i++)
{
result=initial[perm-1];
}
return result;
}
剩下的事情就是照著書上的算法描述實現就可以了。
--------------------------------------------------------------------------------------------------

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
8#
發表於 11-7-23 10:00 PM |只看該作者
破解nProtect︰
nProtect GameGuard在啟動後使用SetWindowsHookEx(Inject DLL)模式進入所有的進程,並且在
OpenProcess()
ReadProcessMemory()
WriteProcessMemory()
PostMessage()
......等等函數的頭部加入JMP XXXXXX的代碼跳入監測程式進行監測,如發現對遊戲進行操作便攔截該操作。所以以上函數均無法正常工作。
解決方案︰
1. 營運時將要使用的動態連接庫(如︰user32.dll kernel32.dll)複製後改名,使用LoadLibrary和GetProcAddress載入函數。
要使用LoadLibrary和GetProcAddress載入函數,你需要有Visual Studio .NET,或者其中的 VisualBasic和Visual C++,當然,你還要會使用他們,而且你還要知道nProtectGameGuard營運時到底調用了哪些動態連接庫(這時候大家就八仙過海各顯神通吧)
2. 恢復JMP XXXXXX處的代碼(需要很高的技術並有很大的危險性,而且不知道會不會再被改)
3. 如果nProtect GameGuard非正常關閉,JMP XXXXXX處的代碼不會被恢復而監測程式代碼卻已經被卸載,這時候如果被Hook程式調用函數……
根據論壇裡回複帖子,解決方案一是可以實現的,但我在用代碼實現的時候遇到了問題。代碼和報錯資訊如下︰
#include "stdafx.h"
typedef void (__stdcall *keybd)(
   BYTE bVk,           // virtual-key code
   BYTE bScan,       // hardware scan code
   DWORD dwFlags,    // flags specifying various function options
   DWORD dwExtraInfo // additional data associated with keystroke
);
keybd keybd_event1;
void keyd(int nkey);
int APIENTRY WinMain(HINSTANCE hInstance,
                  HINSTANCE hPrevInstance,
                  LPSTR     lpCmdLine,
                  int    nCmdShow)
{
   // TODO: Place code here.
HMODULE hLibrary=0;
hLibrary=LoadLibrary("user36.dll");//改名後的user32.dll
//加載DLL
if(hLibrary!=NULL) //加載成功
{
keybd_event1=(keybd)GetProcAddress(hLibrary,"keybd_event");
if(keybd_event1!=NULL)//成功後就調用
{
Sleep(1000);
keyd('A');
Sleep(1000);
keyd('A');
Sleep(1000);
keyd('A');
Sleep(1000);
keyd('A');
Sleep(1000);
}
FreeLibrary(hLibrary);
}
return 0;
}
void keyd(int nkey)
{
keybd_event1(nkey,0,0,0);
Sleep(50);
keybd_event1(nkey,0,KEYEVENTF_KEYUP,0);
}
報錯資訊︰無效的系統 DLL 重定位
系統 DLL user32.dll 在記憶體中重定位。應用程式將不能正常營運。 由於DLL g:\..\user36.dll佔用了為Windows系統 DLL 儲存的位址空間而產生了錯誤。應當與提供該 DLL 的供應商聯繫以得到新的 DLL。
測試平台︰windows xp SP2 VC6.0
問題還沒有被解決。
--------------------------------------------------------------------------------------------------

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
9#
發表於 11-7-23 10:02 PM |只看該作者
NProtect 研究了一段時間也算是小有成果了
下面簡單說說NP的流程:
NP在遊戲exe裡面採用全局初始化時進行初始化 初始化首先建立各個通信event 然後啟動GameGuard檢查np自身檔案更新 然後讀取ini配置初始化NPGameLib 備份系統dll 然後啟動GameMon 在GameMon中根據ini的配置完成驅動加載隱藏進程 Hook所有進程以保護系統api調用當在其它進程調用這些保護的api時將比較對象是否為遊戲進程和api入口是否與備份的dll相同並再GameMon中啟動通信線程負責與遊戲進行通信以完成伺服器回包計算 CRC效驗等操作
NP基本就是這個流程
去NP關鍵也就是斷開GameMon與遊戲exe之間的通信 而對於伺服器效驗包則自己計算如需帶NP營運就去掉它的CRC效驗.
就做這麼多介紹吧
用冒險的np eg.
我也是摸索出來的,參考MPC上的方法,還要感謝dubious的幫助
先講講跳過nProtect的思路
1. 首先你機器是一個WEB伺服器。
2. 你的WEB連接埠為8086
3. 在你的WEB伺服器的根目錄裡建立目錄︰\maplestory\nProtect\GameGuard\RealServer\在目錄中放入已經被你修改的不在防外掛的nProtect。
4. 修改hosts檔案︰ 127.0.0.1 nprotect1.mxd.sdo.com
               127.0.0.1 nprotect2.mxd.sdo.com
               127.0.0.1 update.nProtect.com
               127.0.0.1 update.nProtect.net
其實也不複雜的,仔細點就行了。用到的工具是Apache,因為要架設自己的NP伺服器。
安裝好Apache後,C:\WINDOWS\system32\drivers\etc 裡的host檔案裡加入上面的IP。
找到\Apache Group\Apache\conf裡的httpd.conf檔案,用記事本打開,找到part 80 改成part 8086。
然後到控制面板/管理工具/服務 找到Apache並選中,然後禁用它,再啟動。
這樣,你的伺服器就架設好了。
把NP的伺服器檔案到/ApacheGroup/Apache/htdocs/[maplestory/nProtect/GameGuard/RealServer] 裡。 打括號的檔案夾要自己建。
OK 成功bypass了
只要是上一次吸怪沒封時期的檔案就可以,因為bypass之後,NP不會去盛大的伺服器更新,而是直接在你電腦上更新,因為你電腦上的是老的不防怪的,所以NP就被退回到封吸怪以前的版本了,接下去怎麼做大家應該知道吧。。。
旁路NP的意義或者說好處︰舉個例子,如果架設的伺服器中的NP檔案是在V39剛出來的時候的,那麼上次被封的吸怪可以繼續使用
-----------------------------------------------------------------------------------------------------------------
跳過nProtect︰
首先要清楚,nProtect透過連接其更新伺服器獲得當前最新檔案內容,然後與本地檔案作比較,如發現伺服器端的檔案與本地的不一致,則從更新伺服器重新下載檔案更新本地的nProtect檔案。如果nProtect更新成功,而新版nProtect又攔截外掛,那麼理所當然地nProtect每更新一次外掛就失效一次了。
透過分析遊戲客戶端用於解析該遊戲各程式與其對應遠端連接的IP清單檔案,找出nProtect更新伺服器的位址,並分析出nProtect官方更新伺服器上的目錄檔案架構。
目錄檔案架構一般為: "更新伺服器的名稱\\GameGuard"
先自己構建一台類比nProtect更新伺服器,伺服器上目錄檔案架構與官方的相同,更新下載檔案內容使用舊版nProtect的內容(舊的客戶端先別忙著刪除。。。。。)
將真實nProtect更新伺服器的位址,解析到你構建的類比nProtect更新伺服器的IP位址.
例: 127.0.0.1gg.muchina.com
寫入到 system32\\drivers\\etc 的 host 檔案中
這個 host 檔案為系統TCP/IP協議配置IP解析服務, 沒有後綴名,可用記事本或UE32打開編輯。
通常一個網游的順利營運,是要連接伺服器端多個IP的("nProtect服務","連接服務","資料服務","登陸服務","主服務"。。。。。。。)
而這一系列的服務都是由一個遊戲主程式的啟動營運來完成(如"命運"的"WYDLaucher.exe","奇跡"的"Main.exe","冒險島"的"MapleStory.exe")
由於host檔案已被修改過,其中nProtect更新的連接IP被解析為指向自己類比的更新伺服器,而類比伺服器上的"更新檔案"是舊版本的,所以nProtect不但不會被更新為新版,反而會版本倒退。並且往後都不會再更新。。。。。。。。
另一個方法,則是直接修改遊戲主程式代碼內容,就是暴力修改了。
由於nProtect的功能是附在遊戲主程式的開頭獨立執行的,所以,透過對遊戲主程式進行破解處理後,將遊戲主程式關於nProtect的執行部分的代碼打上無效化標記,就很自然地跳過了nProtect了。
補充一下,構建類比nProtect更新伺服器可用本地機器完成(nProtect更新IP:127.0.0.1 有的安全軟體會屏蔽掉此個本地自連接IP);用VM虛擬機完成(VM虛擬的多系統可各自設定不同IP);或者。。。。。另外組一台機器來做也可。。。。。
--------------------------------------------------------------------------------------------------

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
10#
發表於 11-7-23 10:02 PM |只看該作者
步驟:
在np目錄裡找到GameMon.des(沒有+密,所以破解速度超快),改名為GameMon.exe,然後用WASM32打開,找程式的入口,然後用16位編輯器把第1個位元組改位c3(也就是彙編的ret),儲存退出,開開si,設定MessageBoxA斷點(bpxMessageBoxA),然後進入遊戲,在np更新的時候取消,進入中斷,按2下F12,再將EAX改為1就可以正長進入遊戲了,哈哈,大家發線了沒,np的監控進程閃了一下就沒了(誇張了說,其實跟本看不到^_^).盡情的修改遊戲進程吧,np以經不在啦.今天真高興,沒想到這個外掛殺手死到我的手下了.
工具:
1. uedit32 16進製編輯器
2. WASM32 反彙編工具
3. Soft-ICE 調試工具(我用的是SoftICE Driver Suite 2.7)
步驟:
1. 先找到遊戲裡的np目錄,一般都是GameGuard
2. 進去後有個***Mon.des,神話的是GameMon.des
3. 用WASM32打開GameMon.des,然後選擇功能表的 跳轉->到程式入口點
4. 記下來跳到的語句的16進製。。
5. 用UltraEdit(就是上面說的uedit32)打開GameMon.des
6. 然後搜尋剛才記下來的東西
8. 多找幾遍,要是有重複的話就再多記幾個字符,找到一個為止
9. 然後將第一個位元組改為3C,關掉WASM32然後儲存修改退出.
10.營運SI(Soft-ICE),然後設定斷點bpx MessageBoxA
11.營運遊戲,在np更新的時候點擊取消
12.等帶進入遊戲,這時SI跳出來會停在MessageBoxA處按2次F12,然後用R命令修改EAX為1,再按F5,完成
下面附一個高手的破解nProtect的過程。給大家參考。
代碼級破解。
首先看匯入函數,用到了IoAttachDeviceToDeviceStack,似乎走的還是設備棧的老路。於是祭出WinDbg檢視KeyboardClass0/1的設備棧,居然沒有異常,那八成就是掛鍵盤中斷了,匯入的函數HalGetInterruptVector就是用來干這個的。列出所有中斷向量(WinDbg沒有類似SoftICE的idt命令,不爽的很),一眼就發現n個80開頭的位址中有個f7開頭的,哈,就是它。
再次重啟系統,先列出原先的IDT,啟動QQ後還原被修改的條目,然後嘗試鍵盤記錄,無效。再看IDT,又被改回去了﹗在這個中斷向量的位址上設記憶體讀寫斷點,只斷到了讀操作,卻沒有寫操作。但明明就被改回去了啊。郁悶了一分鐘之後,我開始看驅動的反彙編代碼。從被斷到的讀操作開始跟蹤,我發現讀到的值被儲存在全局變量裡,而所有對這個變量的操作中,幾乎都是賦值,只有一個cmp指令,比較儲存的值和讀取的值,如果不同就關中斷,然後修改成QQ自己的中斷服務位址(難怪斷不到,關中斷了嘛)。
到這裡問題就算解決了,把緊隨cmp之後的jz改為jnz,中斷向量再也不會被改回去啦,鍵盤記錄(不管是哪種)當然也有效了,金鎖還是老樣子。所謂的“國際先進技術”原來只是從DOS時代就被大玩特玩的中斷掛鉤,鉤住鍵盤中斷後直接把ScanCode傳給應用程式。如果QQ能繞過Windows的中斷映射機製,控制PIC或APIC重新映射鍵盤中斷,那還有點看頭。
--------------------------------------------------------------------------------------------------
nProtect GameGuard 破解交流
小弟初學人搞了半天還是搞不定~nProtect
一開始以為nProtect就和~QQ的Npro一樣~跟蹤生成檔案之發現根本沒用
ANTI_APIHOOK程式檢測發現掛鉤~
OpenProcess
ReadProcessMemory鉤子
後來使用Toolhelp32ReadProcessMemory函數也不行
使用消息鉤子還可以插入~遊戲進程~但是想讀取記憶體也可以~直接讀取自身(這個我就不具體說了~差不多會程式化的人都會)
至於如何API-HOOK??就有點麻煩了~
1.尋找~插入DLL然後~卸載之
結果失敗~卸載不掉~(難道FreeLibrary也被掛鉤了?)
2.Ring3全局脫鉤~既然可以掛後我們的API~我們也就可以脫鉤~
把我們需要的一些~函數脫鉤後發現~也不能用~一直郁悶
3.當時就懷疑nPro是不是掛鉤~NTDLL.dll的匯出表了?
(一直以為是匯入表掛鉤~從來沒有想到過是類似防火牆的~匯出表掛鉤)
不幸的是~脫鉤後~程式就非法操作了(遊戲本身也掛了)
4.祭出最後一招~Ring3下的萬能絕學~VirtualAPIHook
透過調試暫存器~來動態脫鉤和~掛鉤API,搞了半天不但使程式體積明顯增大反而~有的時候不太穩定(因為是~調試模式所以有的時候會出現一點點問題~遊戲速度慢了)
記憶體讀取:
進程是插入了~但是你打算用金山游俠搜索記憶體是不太可能了~
驅動級隱藏進程了~冰刃下顯示紅色字體。。。
還好冰刃有個讀取目標進程功能(感謝一下pjf開發這麼好的功能)
可惜冰刃沒有搜索功能~郁悶~~
剩下的就是讀取記憶體和寫入記憶體了~不過這裡有個嚴重的問題﹗﹗
VirtualProtect也被掛鉤了‧~~改寫入記憶體的地方根本跑不起來~
結論:nPro到底是一個~遊戲保護程式還是一個~內核級後門??
前面的仁兄提到~一個問題。。就是他是使用消息鉤子掛鉤的﹗
那我們是不是先把SetWindowsHookEx函數封殺~讓他掛不了~
不知道理解是否正確~不過我感覺~
nPro作的有點過分了~~~nPro作的這麼牛不知道~在Win9x下是不是能完整的跑完遊戲(藍屏當機~呵呵)
--------------------------------------------------------------------------------------------------

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
11#
發表於 11-7-23 10:03 PM |只看該作者
NP有沒有用到驅動程式?
很有可能是自已類比了SetWindowsHookEX和對他所用到的部份API做了變型處理,涵數
我感覺關健還是把NP HookApi前的代碼找出來,才是正道,你研究怎麼脫勾,很難從根本上解決問題
--------------------------------------------------------------------------------------------------
在講述遊戲封包反跟蹤原理之前我們首先需要對函數HOOK原理有深入了解
我們知道函數HOOK原理主要透過二個途徑截獲封包資料的,一個是將跳轉下在PE檔案的被跟蹤的輸入表項中,一個是將跳轉下在被跟蹤的函數體中。
遊戲封包反跟蹤(NP)程式是基於上述原理而實施反跟蹤的,按反跟蹤的實現不同,相應可分為︰
1. 將PE中用於搜尋指定函數的相關幫助資訊刪除
2. 不斷判斷輸入表中相關函數項的跳轉位址
3. 不斷判斷被反跟蹤函數體代碼的情況
上述三點中,前二點是基於函數HOOK原理的第一種情況的,第三點是基於函數HOOK原理的第二種情況的。

遊戲封包反跟蹤(NP)為了不讓使用者輕易將反跟蹤程式去消,其實現的往往是採用某種動態算法,並與遊戲伺服器相通信。
我們如果想去消遊戲封包反跟蹤(NP)程式的反跟蹤,那麼必須對反跟蹤代碼的行為進行分析,找出算法後,我們就可以仿照它的行為而實施我們的類比反跟蹤。
反跟蹤 NP 一旦去消,我們又可以用HOOK原理來實施我們對封包資訊的截獲工作了。當然純粹為了跟蹤封包,我們其實並不需要去對付反跟蹤,因為我們還有很多其他途徑來實施封包的跟蹤,而在這些途徑中有些原理本身就是無法被反跟蹤的。
如何搜尋反跟蹤程式,其實十分的簡單,我們知道在進行判斷之前,被判斷的記憶體資料必須會被讀取,因此我們只要給被分析代碼所在的記憶體下一個讀斷點就行,然後用營運跟蹤即可找到反跟蹤代碼段。
目前遇到一個NP的難題,一旦跳過NP就無法認証
不跳NP時正常連接為︰
C -> S 02 58 //送出連接請求
S -> C 02 27 +16位KEY //接收16位隨機密匙
C -> S 02 28 +16位根據KEY算出的結果 //送出16位密匙計算結果
S -> C 02 59 01 //伺服器確認後返回標記,開始正常登陸
但如果跳過NP後︰
C -> S 02 58 //送出連接請求
S -> C 02 27 +16位KEY //接收16位隨機密匙
只到了這裡客戶端就不返回計算結果了,估計是檢測不到NP營運所以就不返回結果
我推算有兩種情況︰
1)加密算法是單獨的,不與NP掛鉤,那麼只需要搞點判斷位,或類比NP營運就行
2)加密算法作為NP一個模塊,內嵌在NP,這樣的話只能跟蹤NP獲得加密算法了
已有 1 人評分Good 收起 理由
momo_555 + 3 因為高深到我睇唔明,所以3個good

總評分:  Good + 3   查看全部評分

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

UID
1098251 
帖子
3601 
積分
4358 
Good
89  
註冊時間
08-6-24 
在線時間
1383 小時 
12#
發表於 11-7-23 10:08 PM |只看該作者
真是強大啊~~~~

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
13#
發表於 11-7-23 10:12 PM |只看該作者
個條公式好難.等人回覆

Rank: 4Rank: 4Rank: 4Rank: 4

UID
1114062 
帖子
1290 
積分
1242 
Good
54  
註冊時間
08-7-17 
在線時間
363 小時 
14#
發表於 11-7-23 11:31 PM |只看該作者
比個good你

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

UID
775155 
帖子
3463 
積分
3485 
Good
14  
註冊時間
06-10-23 
在線時間
2087 小時 
15#
發表於 11-7-23 11:45 PM |只看該作者
道高一尺 魔高一丈 ..

Rank: 2Rank: 2

UID
2085010 
帖子
202 
積分
180 
Good
15  
註冊時間
11-5-14 
在線時間
111 小時 
16#
發表於 11-7-24 08:20 AM |只看該作者
為什麼Nostale也把NP盾換掉而..現在NECO要重度[復切]呢

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

UID
715904 
帖子
1360 
積分
2520 
Good
12  
註冊時間
06-8-11 
在線時間
1526 小時 

十週年勳章(賀詞) 玩過星曲WEB

17#
發表於 11-7-24 10:14 AM |只看該作者
因為np盾的確係難d呀.3.(至少上面果堆野要熟人先明/.\)

我希望佢np盾出幾個月就好刪左去-

Rank: 1

UID
1597469 
帖子
66 
積分
47 
Good
1  
註冊時間
10-1-10 
在線時間
26 小時 
18#
發表於 11-7-25 12:26 AM |只看該作者
電腦強人呀!!!!!
我睇到第四樓就睇唔明

Rank: 1

UID
1092953 
帖子
11 
積分
11 
Good
0  
註冊時間
08-6-15 
在線時間
18 小時 
19#
發表於 11-7-25 01:07 AM |只看該作者
我想整走佢呀~~~
開住佢 有好多GAME都玩唔倒

Rank: 4Rank: 4Rank: 4Rank: 4

UID
2110289 
帖子
1495 
積分
1556 
Good
16  
註冊時間
11-7-9 
在線時間
130 小時 
20#
發表於 11-7-25 07:05 AM |只看該作者
自從有np盾既game

我都吾玩

因為永遠都系有問題發生

更因為np盾而特登換新電腦黎打機...

我對佢既仇恨值不斷上升
‹ 上一主題|下一主題

聯絡我們|Archiver| 2000FUN論壇

SERVER: 2 GMT+8, 26-2-23 01:27 AM , Processed in 0.031803 second(s), 12 queries , Gzip On.

Sponsor:工作間 , 網頁寄存

Powered by Discuz! X1.5.1

© 2001-2010 Comsenz Inc.