逆向實戰干貨,快速定位自動撿陽光Call,或者標志
注意: 關於CE和OD的使用,這里不再多說,快速定位,默認大家已經有了CE基礎,或者OD基礎.
第一種方法,找Call
第一步,打開CE,搜索陽光值

第二步,打開OD,數據窗口中搜索這個地址的數值(073B7C10)
注意,OD要先附加一下


F9 把游戲運行起來,我們數據窗口搜索這個地址的數值

然后找到地址

第三步,對其里面的值下內存寫入斷點

然后回到游戲,撿起一個陽光

內存斷點斷下來了,我們看下指令,發現 add函數,而且看下ECX的值
16進制的19,那么10進制的25,所以我們判斷這里是增加陽光的地方
但是我們根據我們的操作發現
點擊陽光 -> 陽光增加, 那么我們找到了增加陽光,那么自然上找,就能到點擊陽光的Call了
那么CTRL+F9運行到函數結尾,注意,要把內存斷點刪除,我們不需要了
第四步,看下返回的Call
到了函數結尾,是一個retn,所以我們按下F8鍵,單步一下,則會退出上面的那個函數
退出之后是就是下面的界面,我們發現也是一個Call,那我們就知道了,這個是增加陽光的CALL

現在我們用NOP指令,把這個CALL NOP掉,看下陽光還會增加嗎

F9運行起來,看下陽光增加了嗎

我們發現,陽光不會增加了,但是動畫效果變了,那么可以肯定的是,這個Call里面有個單獨的撿陽光的CAll
現在我們 ALT + 回退鍵,撤銷剛才的NOP掉的地方,
回退鍵是什么,就是你打字, 打多了,然后刪除一個字的那個鍵
第五步,自動撿陽光Call下段點,跟進去查看.
上面我們已經找到了那個Call,那么我們下段點,看看撿陽光的時候會來嗎
但是我們遇到一個問題,因為OD下段點的時候,植物會有暫停的界面,然后點擊返回的時候,這里也斷下了
所以由此斷定,它的上一層可能還有游戲暫停或者取消的判斷,那么這個先不管,我們斷下來了
F7跟進去看
現在我們在F7這個位置的地方下斷點,然后撤銷以前的斷點
撤銷以前的斷點,看下地面的圖

我們點擊B這個按鈕或者點擊查看的地方

現在我們把Call下段點的地方,用Delete鍵刪除,然后雙擊我們上面下段點的那個位置,可以跳轉到我們下段點的位置

現在我們運行起來(F9)

現在我們可以看到,這個Call可能就是自動撿陽光的Call
第二種方法,找標志
現在我們找到的是Call,但是我們會想,他是怎么判斷我們點擊的哪
所以在此Call的基礎上,再往上邊找
注意,這個call使我們第四步返回的Call的位置,然后我們接着執行到函數結束,下斷,看看來了嗎

在這里CTR6 + F9找到我們上一層的那個CALL(也就是第四步返回的Call)

然后我們在這里下段點,運行植物大戰僵屍,接着看看來了嗎.
我們發現已經來了

那么,我們知道,它的上一層肯定有判斷是否點擊,所以接着CTRL + F9 返回到函數結尾,接着F8,然后返回上一層,

上面這張圖就返回了上一層,如果沒有看到比較,那么在來一次CTRL + F9
但是看上圖放發現,他都與比較,CMP xxx,00,01比較,我們依次修改一下,看下有什么效果

我們修改周后,發現上面的 ebx + 0x50,和1比較是自動收集陽光
下面的沒有測試出來什么結果.好了,現在分析去吧
