逆向分析-连连看
工具:吾愛專用OD、CE、代碼注入器、火絨劍、VS2019
1.找到原程序exe去廣告。
2.以兩種方式實現輔助工具:MFC輔助、MFC靜態鏈接庫輔助。
3.功能:增加炸彈道具、無限道具、無限時間、單次消除、一鍵秒殺。
2.具體分析過程
?2.1 去廣告
打開qqllk.exe會連續彈兩個窗然后才進入游戲
打開火絨劍觀察,重新打開qqllk.exe發現會創建進的進程qqllk.ock
然后再創建kyodai.exe
那么kyodai.exe才是游戲的本體文件。直接把qqllk.ock拖進OD
在CreateProcess函數API下斷點,發現這個進程創建的參數是掛起的
而且直接打開kyodai.exe是會報錯的
而用qqllk.ock打開就會成功,那么我猜測肯定是修改了kyodai.exe什么數據才能讓他成功打開。
所以再去下API斷點WriteProcessMemory
果然斷下了
那么觀察到是在0x43817a基址下寫入了一個字節的0x0
那么我們去OD把kyodai.exe里面改掉,再保存新的文件
去廣告完畢!
2.2 指南針道具無限、無限時間
用CE找指南針的基址
發現指南針是兩字節的 基址:0x0012AC5E
嘗試修改,確實修改了,重開發現這個地址還可以用,那說明就是基址
CE右鍵->找出是什么改寫了這個地址
找到如下代碼:
把dec這行代碼給nop掉,再運行,指南針數量就不減少了,其他道具也不減少了。
更改時間同理找到時間基址:0x0012A748
CE右鍵->找出是什么改寫了這個地址
把這行代碼nop掉。
搞定!
2.3 增加道具
先找到內存0x0012AC5E
觀察使用道具、獲得道具后內存的變化。
發現這樣修改就有炸彈道具
2.4 單次消除
方法2:增加炸彈道具+無限道具+鼠標點擊事件
代碼如下:
方法2:找到道具CALL
我的方法是先找到連連看數組,因為我覺得道具CALL會訪問這個數組
方塊是隨機的,我下個rand斷點
在這里斷下
這個函數很短,出去看看
外層是這個函數,發現參數沒有找到有用的
看到下面有個memcpy,看看它的參數,
第一個參數,數據窗口跟隨,是很有規律的數組,多跑幾次發現就是我們想要的
選中內存,右鍵內存訪問斷點
然后ALT+K發現這里有很多CALL把這些CALL的地方都下斷點,然后觀察參數
感覺這個CALL是的話就寫個匯編代碼注入試試
最終找到這個
寫了下面代碼:
1. lea ecx,[0x0012A688] 2. push 0xF4 3. push 0 4. push 0 5. call 0x0041E691注入成功!開始寫代碼
寫mfc的dll直接注入匯編代碼(會失敗),所以我用注入之后改寫窗口回調函數,注入之后再回到原來的窗口回調函數,這樣是可行的。
關鍵代碼如下:
2.4 一鍵秒殺
無論是鼠標點擊,還是注入匯編代碼,一個循環執行就行了唄。
定義 i = / 2;
然后循環
3.總結
我寫了兩種輔助工具的方法,MFC和MFC靜態鏈接庫,都是可行的
總結
- 上一篇: 全球 40 位 40 岁以下的富豪
- 下一篇: 空间金字塔模型与池化