日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hook的两个小插曲

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hook的两个小插曲 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 看完了前面三篇文章后,這里我們來一個小插曲~~~~

????

? ? 第一個小插曲。是前面文章一個CM精靈的分析。我們這里使用hook代碼來搞定。

第二個小插曲,是如今一些游戲,都有了支付上限,比如每天僅僅能花20塊錢來購買。

好了。以下我們分開敘述~~~~

0x1:第一個小插曲


CM精靈分析的時候,打開軟件能得到的最初始的信息,是軟件的使用時間有限制,為30分鐘,我們能夠找到其上下文來繼續查看一下。

軟件分析方面,懶得再次打字敘述了,看以下的連接就可以:

http://www.52pojie.cn/thread-285325-1-1.html

?

我們通過分析以后,能夠得到:





通過查看a()Z方法。發現是一個返回值為boolean類型的方法,所以。也能看到確定的類和方法,那么我們就開始寫hook代碼,hook代碼簡單來說,使用框架的話是非常easy的:


1.確定hook

2.確定hook類中的關鍵call方法

3.hook方法來怎么做


那好。有這三條流程以后,我們繼續下去。

這里是確定須要hook方法所在的類:




MS.hookClassLoad("net.aisence.Touchelper.TouchelperLicense", new MS.ClassLoadHook()


這里是確定須要hook的方法名和方法的傳入參數



hookvalid=arg0.getMethod("a", null);


然后就是hook那個方法,我們這里僅僅須要它的返回值為true就可以:



final MS.MethodPointer old = new MS.MethodPointer();MS.hookMethod(arg0, hookvalid, new MS.MethodHook() {@Overridepublic Object invoked(Object arg0, Object... arg1)throws Throwable {// TODO Auto-generated method stubSystem.out.println("是否注冊 hook --->");boolean aa=(Boolean) old.invoke(arg0,arg1);aa=true;System.out.println("是否注冊了呢?-->"+aa);return aa; }}, old);


好了,我們執行安裝插件,然后重新啟動手機打開軟件:

在點擊播放一個腳本的時候,會有例如以下信息:






剛好是我們hook中的信息打印,說明一切正常。

測試方面,我僅僅是簡單測了幾個插件而已。沒有連續搞1個多小時那么長時間。假設測試出現其它問題,那么繼續依據問題尋找原因就可以。

?

0x2:第二個小插曲


游戲中想花錢也不行,人家限定了每天僅僅能花多少,所以,我們能夠猜測。游戲獲取手機的信息,然后推斷你是不是支付了太多,那么一般常見的信息就是imeiimsi了。

這兩個單詞的概念。不懂的同學搜索一下,一個是手機imei,一個是sim卡的imsi,相當于人的身份證。


好了。那么我們先從imei入手:


先寫下我們開發中正常獲取imei的代碼:




TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(this.TELEPHONY_SERVICE);String imei=mTelephonyMgr.getDeviceId();System.out.println("如今的Imei為-->"+imei);



好了,正常軟件開發來獲取手機的imei是這樣寫的,使用系統的API就可以。


然后我們須要分析下TelephonyManager?所在的類,由上面的引用import為:



import android.telephony.TelephonyManager;


所以,我們能夠知道完整的類路徑。同一時候又知道方法,那么我們就開始編寫hook代碼了:


依照前文的三部曲:



1.?MS.hookClassLoad("android.telephony.TelephonyManager",?new?MS.ClassLoadHook()?

?

?

2.?hookimei=arg0.getMethod("getDeviceId",?null);

?

?

3.?System.out.println("hook?imei----------->");

?

????????String?imei=(String)?old1.invoke(arg0,?arg1);?

?

? imei="999996015409081";

?????????????????????????????

return?imei;??

?

好了,然后我們安裝,開始測試吧,剛好在前面我們寫的正常獲取的project里面測試,通過各種信息打印。我們能夠知道結果的。







上面的打印是我們hook代碼中的信息。最后一行的代碼是我們測試獲取imeiproject中的打印。說明一切正常,我們達到了所需目的!

IMEI的獲取沒問題了,那么我們就開始操作IMSI吧,依照上面的思路走起~



1.MS.hookClassLoad("android.telephony.TelephonyManager",?new?MS.ClassLoadHook()

?

2.hookimsi=arg0.getMethod("getSubscriberId",?null);

?

3.?System.out.println("hook?imsi----------->");

String?imsi=(String)?old1.invoke(arg0,?arg1);

imsi="460001200505666";

return?imsi;??

?


測試截圖:







帶入正常游戲的測試,臨時手上沒有合適的包來測試,這里不再敘述。有需求的朋友能夠自行測試就可以。

這個插件,事實上也能夠做成一個界面形式的,將ImeiImsi能夠做成自己想要改動的數值,有興趣的。自己寫下。


相關附件資料:


http://pan.baidu.com/s/1gd9rV2r



前面三課沒有學習的,自行翻閱。一步一步來。依照文中全部的敘述操作就可以。然后自己再思考擴展一下,這樣才是我們這幾課程的目的。






總結

以上是生活随笔為你收集整理的Hook的两个小插曲的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。