按照上文的約定,我們繼續第三篇文章,找乙個遊戲來測試此框架和外掛程式的穩定性。
乙個解謎逃脫類的遊戲,挺好玩的,我還是未破解情況下玩通上乙個版本了,新版本其實也出來兩三個月了,過了那個新鮮勁頭,就直接破解得了。
遊戲正常的破解方面,讀者自己去搞吧,一般是看完我以前發過的所有文章,這個遊戲是很簡單搞定的,在這裡,我們不用暴力破解的方式來搞,假設遊戲裡面加入了很多防護,如檔案md5
驗證,dex
修改,簽名驗證,防回編譯之類的,那麼只能反編譯而回編譯不了或者回編譯的包不能執行,所以我們需要在不修改遊戲原包情況下來操作遊戲的破解了。
所以我們先靜態分析一下遊戲,然後找到關鍵類:
過程這裡不再重複,讀者自己去分析一下,hook
是基於對方法的操作,如果都找不對關鍵的
call
,那麼一切都是無用的。
通過這個類,已經很明顯的定義了乙個money
的model
,用於所有跟
money
相關資源的定義。
這裡我們對此getmoney()
方法來進行
hook
。上面截圖大家可以看到,我是先採用的暴力破解,直接修改金幣數量為99999
,如果這個軟體有防護,那我們就開始編寫外掛程式。
軟體使用的基本框架,參照前兩篇文章即可,我們只需要用第二篇文章提到的工程,簡單修改一些**即可使用。
1.我們需要hook
的類2.我們需要hook
的方法3.hook方法後的操作
按照我們歸納的這三點:
首先是修改這裡,將需要hook
的類換成遊戲中這個類:
ms.hookclassload("com.gipnetix.escapeaction.scenes.money.moneymodel", new ms.classloadhook()
然後就是hook
的方法:
(無參,後面用
null)
log=arg0.getmethod("getmoney", null);
接著就是hook
後這個方法的操作
://呼叫原getmoney方法,將原方法的返回值放到aa中
float aa=(float) old.invoke(arg0, arg1);
//修改aa為777777,即原方法返回值已經修改掉了
aa=777777;
system.out.println("金幣已經修改為777777");
//返回aa
return aa;
float型別的方法,返回值必然也是float,所以上面我們已經修改資料返回為77777,然後就是安裝此外掛程式,重啟手機啟用外掛程式。
執行遊戲,檢視log日誌:
好了,通過上面兩個圖,證明我們的修改是有效的。
總結一下:
本文主要進行修改的是無引數方法的hook
hook
**的編寫。
編碼基礎不好的同學,請注意自主學習,網上很多資料的,多翻翻多看看,有付出才會有進步。
跟著鬼哥學爬蟲 1
好久沒公開過破解的文章了,手上的東西都不太方便公開,所以寫一點程式設計方面的文章。工作需求,最近在爬一些資料,下面主要介紹一下採用的beartiful soup,這個python下的乙個很方便用作爬蟲的解析器。老規矩,簡單介紹一下初始化使用,然後開始用乙個個案例才熟悉它的用法。0x01 簡介 bea...
跟著鬼哥學爬蟲 2 糗事百科
bs4中最重要的就是資料的分類,解析,獲取過程。即 response urllib2.urlopen res html response.read soup beautifulsoup html,lxml somedata soup.select div.content span 這裡的soup.s...
跟著貓哥學Golang 7 Map
大多數現代化的程式語言都有個類似map的概念,大意就是對映,go語言也不能例外。1.golang裡,map對映鍵到值,以貓哥的粗淺認識,map的作用類似於雜湊表或者python裡的字典,只不過比後兩者用得更廣泛。map在golang裡是一種資料型別,與golang的結構體類似,map必須先宣告 鍵值...