dnf外掛編寫教程原理

dnf外掛編寫教程原理

ID:34722700

大?。?3.53 KB

頁數(shù):6頁

時間:2019-03-10

dnf外掛編寫教程原理_第1頁
dnf外掛編寫教程原理_第2頁
dnf外掛編寫教程原理_第3頁
dnf外掛編寫教程原理_第4頁
dnf外掛編寫教程原理_第5頁
資源描述:

《dnf外掛編寫教程原理》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、我們在使用OD做CALL調(diào)試的時候大家都會選擇嵌入一句__asmINT3;來讓OD自動斷在我們需要的代碼處。經(jīng)過測試發(fā)現(xiàn)DNF攔截了INT3的中斷門,一旦程序運行到INT3就會跳轉(zhuǎn)到DNF內(nèi)的一段代碼,直接將游戲T下線。在這里呢就不講如何恢復(fù)了,對我來說這個還做不到,于是想到了一個替代辦法,沒腦人也能做成事,多出點傻力氣也就可以了。言歸正傳。或許許多人對SYSER的操作還不熟悉,這里就詳細(xì)的按步說下。在我們寫打DLL代碼中,想在哪里斷下我們就在那個位置添加一句:__asmMOVEAX,1F0001??這樣做的前提是:你接下來的代碼不會使用到EAX的數(shù)據(jù),如果使用到了,你可以

2、更換成其他的對下面代碼沒有影響的寄存器。另外你還要能夠手工觸發(fā)你的被測試代碼,例如按某個鍵就執(zhí)行你需要測試的代碼。上面的條件都滿足了那我們繼續(xù):CTRL+F12進入SYSER的界面,輸入命令:ADDRDNF進入DNF的領(lǐng)空,鼠標(biāo)點擊菜單Tools菜單,選擇第一項:MemorySearch也就是內(nèi)存搜索工具,彈出搜索對話框我們設(shè)定第一項TYPE為DWORD,搜索內(nèi)容自然是1F0001,接下來是Range也就是搜索區(qū)域設(shè)置,我們點擊Selectmodule按鈕來選擇當(dāng)前DNF的類,在列表中選擇你要測試的代碼所在的類,雙擊類名稱后面的起始地址,這樣搜索范圍就被固定在這個類中了。點

3、下find按鈕,在內(nèi)存顯示窗口內(nèi)就會出現(xiàn)匹配的數(shù)據(jù)了,我們需要的是數(shù)據(jù)的地址。得到數(shù)據(jù)的存儲地址后,我們在下面的命令窗口輸入命令:U地址??注意這里的地址就是剛剛我們得到的數(shù)據(jù)存儲地址,U后面是有空格的。命令成功執(zhí)行后,我們可以移動下代碼窗口右側(cè)的滾動條,讓SYSER得以正確識別代碼。這里我們說下為什么選擇使用1F0001這個數(shù)值,大家通過上面步驟看到了,它其實的作用就是一個特征碼,既然是特征碼,它越具有唯一性對我們的尋找也就越有幫助,通過上面的步驟如果運氣好的話,那找到的就是你自己的代碼,也就是:__asmMOVEAX,1F0001;所在的,你的程序里的位置,如果不是的話

4、可以繼續(xù)搜索findnext,我想大家都應(yīng)該有能力識別出到底找到的地方是不是自己想要的地方,如果連自己的程序反匯編后事什么樣都判斷不出來的話,不建議看本文,還要多加努力。我們通過特征碼方式找到了自己的程序特定的代碼段,剩下來的工作就是F9在這里下個斷點了,呵呵,然后一切隨你操作了就,人工斷點完成。單步步進快捷鍵F11,步過F10,繼續(xù)運行F5,或者輸入命令X尋找血量計算方法:當(dāng)鼠標(biāo)放置于血條上會有提示信息出現(xiàn)(這里很重要必須將鼠標(biāo)放置在血條上,顯示出信息后再呼出SYSER的調(diào)試窗口,同時鼠標(biāo)也不要動,就停留在這里),顯示出當(dāng)前血量和最大血量,我們就從這里入手來找到血量的計算

5、函數(shù)。將鼠標(biāo)放置于DNF的血條上CTRL+F12呼出syser調(diào)試窗口用第一節(jié)里我們使用過的內(nèi)存搜索工具在DNF的內(nèi)存范圍內(nèi)進行搜索,類型是Text(Ansi),搜索我的最大血量1375很快在地址:00E23C78這里發(fā)現(xiàn)了完整的顯示信息:“HP:756/1375”,而且這個地址是個常量,固定功能就是存儲顯示信息,此處的00E23C78是用來存儲血和藍(lán)的臨時顯示信息,稍后大家就會自然明白。數(shù)據(jù)找到了,接下來就是對這塊內(nèi)存下內(nèi)存寫入斷點:bpmd00E23C78這里注意:內(nèi)存斷點共有4個命令,bpmbpmbbpmwbpmd,后三個依次是對內(nèi)存下BYTE、WORD、DWORD的

6、斷點。這里下完的斷點經(jīng)常會引起DNF崩潰,大家自己摸索規(guī)律來讓自己順利完成跟蹤和分析。下完斷點后按F5或者輸入X命令讓游戲繼續(xù)運行,屏幕一閃隨后斷了下來。在沒有真正分析代碼之前請大家回憶下自己寫掛的經(jīng)歷,這有助于開拓思路。因為血量在游戲運行過程中首先是一個數(shù)字型變量,而我們?nèi)胧值牡胤绞墙缑骘@示部分,別忘了我們是按照Text方式搜索的,所以目前得到的是個字符類型的,從核心計算到界面顯示必然要經(jīng)歷一個數(shù)字到字符的轉(zhuǎn)換過程。我們仔細(xì)看下左邊堆棧里的數(shù)據(jù)情況(現(xiàn)在是斷點生效并且成功斷下來的時候),我們看到堆棧里有幾組一眼就能認(rèn)出的數(shù)據(jù),類似:“HP:756/1375”這樣的,我們越

7、過這些明文的字符數(shù)據(jù)從堆棧繼續(xù)向下找,直到?jīng)]有再出現(xiàn):“HP:756/1375”這樣的數(shù)據(jù),目光停下,然后我們將要尋找的就是血量的數(shù)值,將756和1375分別轉(zhuǎn)換成16進制數(shù)得到:2F4和55F,于是我們繼續(xù)向下在堆棧中尋找這2個16進制數(shù),終于發(fā)現(xiàn)他們了,而且是挨在一起的,接下來的精確定位這2個數(shù)據(jù)的來源過程略過,大家自己完成,我只給出結(jié)果,因為過程復(fù)雜而且SYSER在單機上調(diào)試的時候無法復(fù)制代碼出來,所以講起來也很不方便,下面只把最關(guān)鍵的代碼給出來:MOVECX,[00DA3C0C]//取CALL基址MOVED

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。