




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、尋找CALL的教程2009-04-03 12:49說一說一個簡單的找 call 原理其實游戲中的 call 是有一定規(guī)律的,這個規(guī)律是什么?1、調用之前,必定有 call 名入棧,什么,不知道如何看堆棧有哪些內容。很簡 單啊,按 alt k 就看到了2、系統(tǒng)進程空間,一般都可以忽略,那么,哪些是系統(tǒng)進程呢,我自己也分不 太清,但是NTDLL USER32 WS_S3等一般都是系統(tǒng)進程空間,在 od的狀態(tài)欄 上就可以分辨出來。舉個例子:ZX中找死亡回程call一、 在弄死小號后,先下了 BP SEND旨令,od中斷下來,按ALT+ K,看到的堆 棧情況是這樣的:地址堆棧函數過程 / 參數調用來自
2、結構029FFEC8 00572860 WS2_32.send elementc.0057285A029FFECC 000006BC Socket = 6BC029FFED0 06D1F2A8 Data = 06D1F2A8029FFED4 00000003 DataSize = 3029FFED8 00000000 Flags = 0029FFEE8 00578BE7包含 elementc.00572860 elementc.00578BE4029FFEF0 00578827 elementc.00578BB0 elementc.00578822029FFF38 005785DE ? ele
3、mentc.00578640 elementc.005785D9029FFF48 00577128 包含 elementc.005785DE elementc.00577125二、然后F9讓游戲正常,再回到游戲中,按下“回城”三、od中斷下來,再按alt+K,看到的堆棧是另外一個樣子了: 地址堆棧函數過程 / 參數調用來自結構0012F3B4 00581775 ? elementc.005898B0 elementc.005817700012F3C4 00583F75 ? elementc.00581740 elementc.00583F700012F400 005A8CF6 ? elemen
4、tc.00583ED0 elementc.005A8CF10012F410 0057E701 ? elementc.005A8CD0 elementc.0057E6FC 0012F420 00509E80 elementc.0057E6C0 elementc.00509E7B0012F424 006C6527 包含 elementc.00509E80 elementc.006C65240012F444 006C647C elementc.006C64B0 elementc.006C64770012F45C 006C8F0E包含 elementc.006C647C elementc.006C8F
5、0B0012F464 0054A432 elementc.006C8F00 elementc.0054A42D0012F47C 006C236B包含 elementc.0054A432 elementc.006C23680012F494 006C269B elementc.006C22C0 elementc.006C26960012F4E0 006C93AA ? elementc.006C2380 elementc.006C93A50012F55C 00549BBB ? elementc.006C8F50 elementc.00549BB6四、如果用CTRL+F9跟蹤,很容易發(fā)現,前三個都是在
6、 WS32系統(tǒng)進程空間,所以,第 4 個,做了個標記的那里,就是死亡回程 call 了 希望大家多多實踐, 注意觀察。 也許我的這個方法有問題, 也請?zhí)岢鰜泶蠹矣懻?D尋找CALL希望對新手有用關鍵 Call 的找法一直都是個不大不小讓人頭痛的問題,需要大量的匯編代碼分 析,還需要很多測試工作,當然還有一種變態(tài)的方法,那就是用0D斷下后,把前前后后所有的 call 都測試一邊,也能找到關鍵 call ,不過面對大量的 call 和無數次掛游戲,恐怕這個方法只能在理論上實現了。那么是否有既不需要看大量的匯編代碼, 有能夠經過有限的幾個測試找到 關鍵 call 的方法呢,下面我就把一種另類的找法送
7、給和我一樣的懶人和新手吧。以 50 打坐和普通攻擊的 call 查找為例。啟動0D加載50,進入游戲后,和傳統(tǒng)方法一樣,bp send下斷,然后等 待游戲斷一次,按 F9 直到游戲正常運行(這里等待斷一次主要是為了去掉游戲 定時與服務器信息和其它信息的干擾),然后馬上回到游戲,按0(默認 0是打坐),游戲被斷下,連續(xù)按 4次 ctrl+F9 (通常游戲的前 3層都是信息函數等東 西,所以直接到第4層啦),然后按F8,此時按alt+k打開堆棧窗口,如下:調用堆棧地址堆棧函數例程 / 參數調用來自框架0012F524 004542DBElementC.0059E270ElementC.004542
8、D60012F528 0049959BElementC.004542C0ElementC.004995960012F538005410C4包含ElementC.0049959BElementC.005410C10012F550 00540E87ElementC.00540ED0ElementC.00540E821、 有很多行,不過我們只需要關系第一行就可以了,其它的不用管,記錄下0059E270,如果已經知道打坐的call地址,一看就知道我們已經找到了,不過 現在我們架設是第一次找不知道關鍵call的地址,所以把0059E270記錄下來,繼續(xù) ctrl+F9 , F8 再進入一層,仍然是按 a
9、lt+k ,查看堆棧窗口,仍然只記錄第 一行得到004542C0,還是ctrl+F9,F8,alt+k再記錄一個0049959B 般來說游戲的 call 多在 4-6 層中,很少有再深的,而且還有另外的判斷方法,因為單你 再使用 ctrl+F9 進入下一層時,出現的 call 就不是單純的地址了,而是類似 call xxxx+xxx 這樣的形式,那么也就說明走過了,所以記錄 3 層就夠了。2、 第一步完成了,此時按F9讓游戲繼續(xù),又斷下來了,不過這個時候不用急著 按 ctrl+f9 進入,直接按一個 alt+k 看看,Elemen調用堆棧地址堆棧函數例程 / 參數調用來自框架O35CFEC8O
10、O568A6OWS2_32.sendElementC.OO568A5AO35CFECCOOOOO5OOSocket = 5OOO35CFEDOOC622OO8Data = OC622OO8O35CFED4OOOOOOODDataSize = D (13.)O35CFED8OOOOOOOOFlags = OO35CFEE8OO56DE37包含ElementC.OO568A6OElementC.OO56DE34第一行顯示的是 ws2_32.send ,原來是發(fā)送函數,所以不用再進入了,看一下CPU窗 口的標題,顯示的是 CPU-1線程 OOOOOOOxxxx ,記一下那個xxxx的 數字,直接按F
11、9運行游戲,又斷下來了,此時看一下CPUS 口的標題,如果xxxx 數字一樣, 說明還是發(fā)送函數一類的東西不用進入 (你可以都打開堆棧窗口看看 驗證下),繼續(xù)按 f9 運行游戲,如果游戲斷下來了而且不是發(fā)送函數一類的就 都進入看一下,和上面的一樣記錄下地址,最后直到不再連續(xù)斷,刪除斷點,回 到游戲,人物已經進入打坐狀態(tài), 一般簡單的操作只會有 1到 2個需要跟進的斷, 而復雜的操作可能多一些,不過如果你從簡單的 call 入手,注意觀察,復雜操 作的 call 還可以通過總結再去除掉很多無關的斷。3、第三步,好了只有三個地址,而且都沒有參數,直接調用測試吧,運氣不錯 第一個OO59E27O就是
12、了。呵呵,沒有分析匯編代碼找到了打坐的call順便找找取消打坐的call吧,仍然bp send,然后等游戲斷一次,按F9直到游 戲正常,然后進入游戲, 用鼠標在其它地方點一下, 游戲斷了下來, 4 次 ctrl+f9 后按 f8,alt+k ,直接記錄第一行,調用堆棧地址 堆棧函數例程 / 參數調用來自框架OF19FD88 OO466D4CElementC.OO59E2BOElementC.OO466D47OF19FE2C OO455D8EElementC.OO4668COElementC.OO455D89OF19FE3O OF19FE7CArg1 = OF19FE7COF19FE38OO56
13、O4D9包含ElementC.OO455D8EElementC.OO56O4D6有了經驗就不再繼續(xù)了,直接測試 OO59E2BQ果然就是取消打坐。順便說一下,注意上面的OF19FE2C OO455D8E ElementC.OO4668CO tC.OO455D89OF19FE3O OF19FE7C Arg1 = OF19FE7C 這兩行,如果是有參數的 call ,就是這樣的形態(tài),這里也就是 call 004668c0 含有一個參數。普通攻擊 call 的找法,和上面的類似, 先選擇一個怪, 然后切換到 OD,bp send, 等游戲斷一次,按F9直到恢復,然后按數字1 (普通攻擊默認在1),游
14、戲斷下, 然后同樣的方法,你可以找到調用堆棧地址堆棧函數例程 / 參數調用來自框架OF19FDCCOO475F71ElementC.OO59DC3OElementC.OO475F6COF19FDECOO475B8EElementC.OO475CEOElementC.OO475B89OF19FDFO1OB2A5OOArg1 = 1OB2A5OOOF19FE2OOO4639EC包含ElementC.OO475B8EElementC.OO4639E9OF19FE98OO43A572包含ElementC.OO4639ECElementC.OO43A56F還是在第一行看到了嗎? OO59DC30直接就找
15、到了普通攻擊的 call。帶參數的call 的找法,和普通攻擊的相似,無非就是記錄下來的地址可能會多一些,需 要測試的也多一些, 不過如果你能夠對找出來的地址處的匯編代碼進行簡單的分 析,那么也就還可以再排除大部分地址,減少測試量。這就是利用堆棧進行關鍵 call 的另類找法。本來打算弄點圖上去的,不過因為 我很懶,也就算了,大家多動手測試下,相信很快就能夠掌握一些東西,然后我 們多交流共同提高。比如找怪的 call ,bp send ,等游戲斷一下,然后 f9 恢復運行,切換到游戲, 用鼠標點任何一個怪,0D斷下來,然后按照上面的方法,馬上就可以在堆棧中 找到ElementC.OO5738O
16、O 在第一行,而且這行的下面就在堆棧中顯示這個 call 的參 數,類似Arg1 = XXXXXXXXArg2 = XXXXXXXX 眼睛尖的馬上就會發(fā)現,其中一個參數不就是我選的怪的 ID 嘛,另外一個就是 相關的偏移,馬上就可以確定這個就是 call 了。揀物品、使用物品等也是類似的,全都是在第一行出現,其實原理很簡單,因為 是在堆棧里面,必須滿足堆棧的處理原則,所以么先入后出,后入先出,呵呵。 如果是一個新游戲可能一開始會覺得不太好弄, 不過因為大多數程序員都有共同 的毛病就是只要功能類似肯定就會選擇對某一類動作調用共同的函數進行操作, 只是傳入的參數不同, 所以看多了,很快就可以對哪個
17、才是我們需要的真正 call 地址做出判斷。有時候還有額外的收獲,比如說,查找使用技能的 call ,由于 距離怪還有一定的距離,所以要先移動,然后才打,于是會斷下很多,其中大部 分是w32_send這個直接判斷標題欄就剔除了,而剩下的斷中,就包含移動的和使用技能的, 注意觀察堆棧中調用的參數, 只用看第一個調用, 很意外的還順 便把移動的 call 找到了CALL 筆 記 (轉)首先先說一個概念 call 游戲函數 , 首先必須進入游戲的進程中 , 就像要偷人家 的東西必須進入人家的家 呵呵比喻有點不恰當 , 如何進入呢 , 參照論壇上的其 他的帖子 , 方法基本有三個 hook 鉤子 注入
18、 dll 注入代碼 , 我這主要是說的注入 代碼的方式 ,所謂注入代碼 可以分成兩步 , 一是在游戲進程中創(chuàng)建自己可以控制的內存空間,將代碼寫入 二是, 創(chuàng)建遠程線程 運行注入的代碼 ; 具體的方法 一 無參數的 call比如我們用0D查找到打坐的Call是$0059A960,因為是無參數的call我們就不 需要寫代碼 , 也就不需要把代碼注入到目標進程 , 直接可以執(zhí)行第二步 TempppHandle:= CreateRemoteThread(Hid, nil, 0,Pointer($0059A960,),nil, 0, num);/返回的句柄:=創(chuàng)建遠程線程并執(zhí)行(目標句柄,nil,0,執(zhí)
19、行$0059A960函 數,n il,0, nu m);WaitForSingle0bject(TempppHandle, INFINITE);/ 等待線程結束 CloseHandle(TempppHandle); / 關閉遠程線程句柄 偷玩東西記得關門 到這里我們就可以控制游戲中人物打坐了 ,這部分的學習重點是 要理解一個概念 用 CreateRemoteThread 是將我們的外 掛程序與目標程序進行連接 , 通過 CreateRemoteThread 進入到游戲的進程從而 可以在游戲中操作我們想操作的任何事 , 進了人家的家 , 那你不是想干什么就干 什么?先寫到這 , 下次寫帶參數注入
20、的方法和詳細講解 帶參數 Call 以武林的拾取物體為例子注:我的0D水平也比較差 這里就不講解關于0D找call的步驟了 ,有興趣的朋 友可以查閱網上的教程1)我們用0D查找到拾取物品的call的原型004758E0 8B0D C4C98E00 mov ecx, dword ptr 8EC9C4 ; ElementC.008F04B8 004758E6 8B97 10010000 mov edx, dword ptr edi+110 物品地址 +110=物品的 ID004758EC 8B46 20 mov eax, dword ptr esi+20物品地址 +10C=W 品的序列號00475
21、8EF 52 push edx 壓入物品 ID004758F0 8B49 20 mov ecx, dword ptr ecx+20004758F3 50 push eax 壓入物品序列號 004758F4 81C1 D4000000 add ecx, 0D4004758FA E8 51A40F00 call 0056FD50從原型看到 , 我們必須傳入兩個參數給匯編代碼 , 如果傳入兩個參數呢 ? 首先我們把兩個參數轉換成一個數據結構先定義以數據結構typePParam = ATParam; / PParam 指向 TParam數據的指針Tparam=packed record/數據結構包含了
22、 id sn 這兩個dwod類型的變量 id:dword;padd, 0,sn:dword;end;現在我們先些匯編代碼function PickCall(p: pparam):DWORD; Stdcall;/拾取物體varedx1, eax1: DWORD; / 定義兩個變量來傳遞物品的 ID 和序列號address:Pointer; /call 地址begin address:=Pointer($0056FD50);/call 的地址edxl := pA.id;/ 將函數參數的P的數據結構中的ID復制個EDX1eaxl := pA.sn;將函數參數的P的數據結構中的SN復制個EaX1asm / 匯編代碼 (不會匯編 ?沒有關系 對照上面的原型抄 ) pushadpush edx1 / 壓入參數物品 IDpush eax1 / 壓入參數物品序列號mov ecx, dword ptr $8EC9C4mov ecx, dword ptr ecx+$20add ecx, $D4call address /call 游戲拾取函數popad;end;result:=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川幼兒師范高等??茖W?!洞蟮販y量學實驗》2023-2024學年第二學期期末試卷
- 晉中師范高等??茖W?!毒W絡及其計算》2023-2024學年第二學期期末試卷
- 福建對外經濟貿易職業(yè)技術學院《大學生勞動教育》2023-2024學年第二學期期末試卷
- 天津藝術職業(yè)學院《文獻目錄與信息檢索》2023-2024學年第二學期期末試卷
- 2025海南省安全員A證考試題庫及答案
- 貴州中醫(yī)藥大學時珍學院《安全經濟學》2023-2024學年第二學期期末試卷
- 2024-2025學年遼寧省七校協作體高一上學期12月月考歷史試卷
- 2025江西省建筑安全員-A證考試題庫及答案
- 漯河醫(yī)學高等專科學?!秺W林匹克文化》2023-2024學年第二學期期末試卷
- 遼寧輕工職業(yè)學院《阿拉伯文學選讀》2023-2024學年第二學期期末試卷
- 教科版 二年級下冊科學教學計劃
- 中國膿毒癥及膿毒性休克急診治療指南
- 部編版六年級道德與法治下冊《學會反思》教案
- 人教版體育與健康四年級-《障礙跑》教學設計
- DB32-T 2860-2015散裝液體化學品槽車裝卸安全作業(yè)規(guī)范-(高清現行)
- 部編版四年級下冊語文教案(完整)
- T∕CIS 71001-2021 化工安全儀表系統(tǒng)安全要求規(guī)格書編制導則
- 福利院裝修改造工程施工組織設計(225頁)
- 環(huán)境空氣中臭氧的測定
- 第七章 化學物質與酶的相互作用
- 機械畢業(yè)設計論文鋼筋自動折彎機的結構設計全套圖紙
評論
0/150
提交評論