005 定位控件输入call
文章目錄
- 什么是控件輸入call
- 定位控件輸入call
- 定位字符長度
- 通過字符長度定位控件輸入call
什么是控件輸入call
當我們想要在游戲里進行喊話和聊天的時候,需要在游戲內置的控件里輸入相應的內容,這個往控件輸入內容的call就叫控件輸入call。
定位控件輸入call
以游戲的賬號密碼輸入框為例,來找這樣一個控件輸入框。當我們在輸入字符的時候,這個call會在內部改變當前的字符長度,字符長度就可以作為一個突破口。
所以利用這個內存訪問關系,只要在當前的字符長度下斷,就可以找到這個控件輸入call
定位字符長度
首先在控件里輸入8個1,在CE里搜索8
然后不斷去修改字符長度,很容易就能篩出控件的字符長度。
最后還剩下三個值,然后我們把鼠標挪到1111的位置,再來看一下三個值的變化
注意看光標的位置和CE里的數值。有兩個值發生了變化,這兩個值表示的是當前光標所在的字符的位置,剩下的那個才是真正的字符長度
通過字符長度定位控件輸入call
接著我們在字符長度下硬件寫入斷點,隨便輸入一個值,讓程序斷下
打開調用堆棧,找到第二個call,顯示調用,這個就是我們要的控件輸入call
接下來分析參數,我們先輸入一個8,看看當前的寄存器狀態
ebx的值是38,也就是數字8的ASCII值,所以這個參數的含義是輸入的按鍵ASCII值
再看ecx,這個寄存器的值在輸入按鍵和密碼的時候分別出現了兩次,那么可以猜到這個參數應該就是控件ID。
往上追ecx的來源可以找到一個二叉樹的結構,我們這里不進行深究。
相關工具:
https://github.com/TonyChen56/GameReverseNote
總結
以上是生活随笔為你收集整理的005 定位控件输入call的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 004 两种方法找寻路call
- 下一篇: 008 数据结构逆向—数组(简单版)