跟著鬼哥學android java hook(三)

2021-06-25 08:25:06 字數 1722 閱讀 4282

按照上文的約定,我們繼續第三篇文章,找乙個遊戲來測試此框架和外掛程式的穩定性。

乙個解謎逃脫類的遊戲,挺好玩的,我還是未破解情況下玩通上乙個版本了,新版本其實也出來兩三個月了,過了那個新鮮勁頭,就直接破解得了。

遊戲正常的破解方面,讀者自己去搞吧,一般是看完我以前發過的所有文章,這個遊戲是很簡單搞定的,在這裡,我們不用暴力破解的方式來搞,假設遊戲裡面加入了很多防護,如檔案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必須先宣告 鍵值...