五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

游戲安全丨喊話CALL分析-分析參數(shù)

2022-06-23 10:58 作者:rkvir逆向工程學(xué)院  | 我要投稿

文章主要內(nèi)容是有參CALL如何分析參數(shù),在寫匯編時如何把參數(shù)寫進(jìn)去以及如何調(diào)用。

以喊話CALL為例,喊話CALL是用代碼來調(diào)用,打印任意的話。


1.打開x86dbg,文件-附加-打開游戲




2.bp send(設(shè)置send函數(shù)的斷點)回車,斷點,再運行


3.在游戲中,點擊“當(dāng)前”,輸入123456,再運行x86dbg


4.點擊調(diào)用堆棧,找到斷點,復(fù)制整個表格


5.新建分析文本,粘貼整個表格,只留下主線程,在第三層74開始分析


6.運行,然后斷點禁用或刪除


7.Ctrl+G返回到這里,確定


8.返回到是Nop,它的上一層就是調(diào)用的call,可以看到有三個參數(shù)rdx、r8d(r8的32位)、rcx(在64位類似fastcall,它的前四個參數(shù)分別是rcx、rdx、r8、r9)

喊話CALL是會帶一個發(fā)送的文本,有文本參數(shù),所以先找一下參數(shù)。


9.1 點擊call的地方下斷點,在游戲內(nèi)-當(dāng)前-發(fā)送文本


9.2來看一下參數(shù),發(fā)現(xiàn)其他rax、rsi、r10、r11里有文本,但在r8、r9、rcx、rdx里沒有



因此判斷不是我們要找的CALL,是底層或上一層call,取消斷點


9.3文本參數(shù)應(yīng)該前四個參數(shù)里


9.4 Ctrl+G返回到這里,確定


9.5下個斷點,走動一下(防止是其他call),再說一句話,回車


9.6斷下來,發(fā)現(xiàn)r8符合要求


9.7把參數(shù)記下來,然后斷點運行


9.8復(fù)制寄存器,只留通用寄存器


9.9把rcx、rdx、r8、r9參數(shù)復(fù)制下來,可以確定r8是字符串地址


10.找rdx參數(shù)

10.1 Ctrl+G返回到這里,確定


10.2測試rdx,在當(dāng)前多喊幾次話,發(fā)現(xiàn)寄存器沒有值,所以認(rèn)為rdx是寫死的值-0


10.3再切換主隊,發(fā)現(xiàn)rdx有變化,所以判定rdx是說話的方式



10.4當(dāng)前模式是0,組隊模式是2,團(tuán)隊模式是12


11.找r9參數(shù)

11.1測試r9,多喊幾遍,r9沒有變化,r9是寫死的值-FFFFFFFF


12.找rcx參數(shù)

12.1復(fù)制rcx,重啟游戲并重新打開x86dbg,文件-附加-打開游戲



12.2喊話-斷點,發(fā)現(xiàn)rcx的值變了,所以需要找一下值


12.3返回調(diào)用,發(fā)現(xiàn)rcx來自與rbp+620,然后找一下620

使用x64dbg繼續(xù)調(diào)也可以,使用ida看起來更方便


12.4把64位客戶端在64ida里打開

12.5 CTRL+G跳轉(zhuǎn)到返回的位置上,發(fā)現(xiàn)沒有rcx賦值

13.因為很難找到rcx,所以找到另一個突破點

13.1在寄存器里發(fā)現(xiàn)rbx和rcx一樣,就以rbx為突破點,找到了rbx對rcx的賦值

13.2懷疑沒有通過src對rcx賦值,而是通過rbx對rcx賦值之后,通過跳轉(zhuǎn)到參數(shù)傳遞,直接調(diào)用喊話CALL

13.3 若是上述情況,需要先找rbx的值

13.3.1發(fā)現(xiàn)是變量Var EB0給rbx賦值



13.3.2再尋找變量Var EB0,發(fā)現(xiàn)是rax賦值給變量Var EB0



13.3.3 rax值來源于上面的call,call的返回值是rax



13.4 Rcx=那個call的返回值

13.4.1進(jìn)一層,Rax就是call的返回值+48,然后取值



13.4.2再進(jìn)去一層,發(fā)現(xiàn)一個基址放在rax里



13.4.3 Rcx=[0x基址+0x48]


到此數(shù)據(jù)分析的四個參數(shù)已經(jīng)都找到了


游戲安全丨喊話CALL分析-分析參數(shù)的評論 (共 條)

分享到微博請遵守國家法律
泸水县| 湖州市| 绥化市| 潼关县| 宜城市| 克山县| 军事| 辽阳市| 青冈县| 泗水县| 新安县| 武夷山市| 枞阳县| 伊吾县| 长治县| 巴林左旗| 南开区| 定日县| 广河县| 辽阳市| 元朗区| 崇州市| 黑山县| 会泽县| 南和县| 大邑县| 平湖市| 扶余县| 土默特左旗| 章丘市| 荆州市| 临颍县| 平武县| 崇礼县| 平江县| 盐津县| 蓬莱市| 阿瓦提县| 长葛市| 萨嘎县| 资阳市|