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



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






本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258472.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258472.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258472.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

### C++總結-[類成員函數]

C類中的常見函數。 #author: gr #date: 2015-07-23 #email: forgeruigmail.com 一、constructor, copy constructor, copy assignment, destructor 1. copy constructor必須傳引用,傳值編譯器會報錯 2. operator 返回值為引用,為了…

微信小程序和vue雙向綁定哪里不一樣_個人理解Vue和React區別

本文轉載自掘金,作者:binbinsilk,監聽數據變化的實現原理不同Vue 通過 getter/setter 以及一些函數的劫持,能精確知道數據變化,不需要特別的優化就能達到很好的性能React 默認是通過比較引用的方式進行的,如…

JS 省,市,區

1 // 純JS省市區三級聯動2 // 2011-11-30 by http://www.cnblogs.com/zjfree3 var addressInit function (_cmbProvince, _cmbCity, _cmbArea, defaultProvince, defaultCity, defaultArea) {4 var cmbProvince document.getElementById(_cmbProvince);5 var cmbCity…

使用極鏈/AutoDL云服務器復盤caffe安裝

繼上一次倒騰caffe安裝以后,因為博士畢業等原因,舊的服務器已經不能再使用,最近因論文等原因,不得不繼續來安裝一下我的caffe。這次運氣比較好,經歷了一晚上和一早上的痛苦之后,最終安裝成功了,…

ibatis中使用List作為傳入參數的使用方法及 CDATA使用

ibatis中list做回參很簡單,resultClass設為list中元素類型,dao層調用: (List)getSqlMapClientTemplate().queryForList("sqlName", paraName); 并經類型轉換即可,做入參還需要稍微調整下,本文主要講list做入參碰到的幾…

Samba服務

####################samba####################1.samba作用提供cifs協議實現共享文件2.安裝yum install samba samba-common samba-client -ysystemctl start smb nmbsystemctl enable smb nmb3.添加smb用戶smb用戶必須是本機用戶[rootlocalhost ~]# smbpasswd -a student New…

wpf 窗口的返回值_WPF Tips: Window.ShowDialog() 返回 true

Window.ShowDialog() 返回值為bool?。希望在窗口點擊OK時返回True。解決方法:ShowDialog()的注釋為:// Returns:// A System.Nullable value of type System.Boolean that specifies whether// the activity was accepted (true) or canceled (false). …

CodeForces 543D 樹形DP Road Improvement

題意: 有一顆樹,每條邊是好邊或者是壞邊,對于一個節點為x,如果任意一個點到x的路徑上的壞邊不超過1條,那么這樣的方案是合法的,求所有合法的方案數。 對于n個所有可能的x,輸出n個答案。 分析&am…

理解Javascritp中的引用

Author: bugall Wechat: bugallF Email: 769088641qq.com Github: https://github.com/bugall一: 函數中的引用傳遞 我們看下下面的代碼的正確輸出是什么 function changeStuff(a, b, c) {a a * 10;b.item "changed";c {item: "changed"}; …

通過擴展改善ASP.NET MVC的驗證機制[實現篇]

通過擴展改善ASP.NET MVC的驗證機制[實現篇] 原文:通過擴展改善ASP.NET MVC的驗證機制[實現篇]在《使用篇》中我們談到擴展的驗證編程方式,并且演示了本解決方案的三大特性:消息提供機制的分離、多語言的支持和多驗證規則的支持,我們現在來看…

canopen和1939區別_CAN 和 CANopen的區別和聯系

1、CAN與CANopen的共同點與不同點:CAN只定義了物理層與鏈路層,而沒有定義用戶層,用戶可根據自己的需要定義一些網絡上的通信約定; CANopen是在CAN的基礎上定義了用戶層,即規定了用戶、軟件、網絡終端等之間用來進行信…

ONOS系統架構演進,實現高可用性解決方案

上一篇文章《ONOS高可用性和可擴展性實現初探》講到了ONOS系統架構在高可用、可擴展方面技術概況,提到了系統在分布式集群中怎樣保證數據的一致性。在數據終于一致性方面,ONOS採用了Gossip協議。這一部分的變化不大,而在強一致性方案的選擇方…

Struts2_day01

Java Web開發常用框架 SSH(Struts2 Spring Hibernate)SSM(Struts2 Spring MyBatis)SSI(Struts2 Spring iBatis) 多種框架協同工作 Web層 -- Service層 -- Dao層 Struts2框架: Struts2是一個基于MVC設計模式的Web應用框架,它本質上相當于一個servlet,在MV…

使用 python 開發 Web Service

使用 python 開發 Web Service Python 是一種強大的面向對象腳本語言,用 python 開發應用程序往往十分快捷,非常適用于開發時間要求苛刻的原型產品。使用 python 開發 web service 同樣有語言本身的簡捷高速的特點,能使您快速地提供新的網絡服…

python中輸出n開始的5個奇數_送你99道Python經典練習題,練完直接上手做項目,免費送了來拿吧...

學python沒練習題怎么行、今天,給大家準備一個項目: 99道編程練習,這些題如果能堅持每天至少完成一道,一定可以幫大家輕松 get Python 的編程技能。目前,這個項目已經獲得了 2924 Stars,2468 Forks。首先&a…

java 基礎5

一、 什么是數組及其作用? 定義:具有相同數據類型的一個集合 作用:存儲連續的具有相同類型的數據 二、 java中如何聲明和定義數組 2.1 聲明和定義的語法: 數據類型[ ] 數組名;( int[ ] nums ; ) 或 數…

TFS(Team Foundation Server)介紹和入門

在本文的兩個部分中,我將介紹Team Foundation Server的一些核心特征,重點介紹在本產品的日常應用中是怎樣將這些特性結合在一起使用的。 作為一名軟件開發者,在我的職業生涯中,我常常會用到支持軟件開發過程的大量開發工具&#x…

逆函數求導公式_反函數求導法則

反函數的求導法則是:反函數的導數是原函數導數的倒數。例題:求yarcsinx的導函數。首先,函數yarcsinx的反函數為xsiny,所以:y‘1/sin’y1/cosy,因為xsiny,所以cosy√1-x2,所以y‘1/√…

SpringXML方式配置bean的懶加載lazy-init

lazy-init&#xff08;懶加載&#xff09;&#xff0c;表示該bean在容器初始化的時候不進行初始化。例如&#xff1a;<bean name"role1" class"com.fz.entity.Role" lazy-init"true">以上配置表示&#xff1a;spring容器在初始化的時候不會…

windows下system函數的使用

system函數 是可以調用一些DOS命令,比如system("cls");//清屏,等于在DOS上使用cls命令寫可執行文件路徑&#xff0c;可以運行它 下面列出常用的DOS命令,都可以用system函數調用: ASSOC 顯示或修改文件擴展名關聯。AT 計劃在計算機上運行的命令和程序。ATTRIB 顯示或更…