看完了前面三篇文章后,这里我们来一个小插曲~~~~

第一个小插曲。是前面文章一个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() {

						@Override
public Object invoked(Object arg0, Object... arg1)
throws Throwable {
// TODO Auto-generated method stub System.out.println("是否注冊 hook --->");
boolean aa=(Boolean) old.invoke(arg0,arg1); aa=true; System.out.println("是否注冊了呢?-->"+aa); return aa; }
}, old);

好了,我们执行安装插件,然后重新启动手机打开软件:

在点击播放一个脚本的时候,会有例如以下信息:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VpZ3V6aTExMTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

刚好是我们hook中的信息打印,说明一切正常。

測试方面,我仅仅是简单測了几个插件而已。没有连续搞1个多小时那么长时间。假设測试出现其它问题,那么继续依据问题寻找原因就可以。

0x2:第二个小插曲


游戏中想花钱也不行,人家限定了每天仅仅能花多少,所以,我们能够猜測。游戏获取手机的信息,然后推断你是不是支付了太多,那么一般常见的信息就是imei和imsi了。

这两个单词的概念。不懂的同学搜索一下,一个是手机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;

測试截图:

带入正常游戏的測试,临时手上没有合适的包来測试,这里不再叙述。有需求的朋友能够自行測试就可以。

这个插件,事实上也能够做成一个界面形式的,将Imei和Imsi能够做成自己想要改动的数值,有兴趣的。自己写下。

相关附件资料:

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

前面三课没有学习的,自行翻阅。一步一步来。依照文中全部的叙述操作就可以。然后自己再思考扩展一下,这样才是我们这几课程的目的。

Hook的两个小插曲的更多相关文章

  1. 小插曲之变量和字符串 - 零基础入门学习Python003

    小插曲之变量和字符串 让编程改变世界 Change the world by program 变量 (此处只是省略N多细节,详细通过视频学习) 变量名就像我们现实社会的名字,把一个值赋值给一个名字时, ...

  2. ASP.NET MVC 开发中遇到的两个小问题

    最近在做一个网站,用asp.net MVC4.0来开发,今天遇到了两个小问题,通过查找相关渠道解决了,在这里把这两个问题写出来,问题非常简单,不喜勿喷,mark之希望可以给遇到相同问题的初学者一点帮助 ...

  3. pyhton 查找一个数的所有因子 以及 判断一个数是否是质数 两个小脚本

    最近看到一个网站, 欧拉计划.挺好玩,都是一些算法题.这是本站:http://projecteuler.net/problems 这个是中文站:http://pe.spiritzhang.com/ 下 ...

  4. 测试开发Python培训:实现屌丝的图片收藏愿望(小插曲)

    测试开发Python培训:实现屌丝的图片收藏愿望(小插曲) 男学员在学习python的自动化过程中对于爬虫很感兴趣,有些学员就想能收藏一些图片,供自己欣赏.作为讲师只能是满足愿望,帮助大家实现对美的追 ...

  5. 安卓App提交应用商店时遇到的两个小问题

    陆陆续续做了一个半月左右的「喵呜天气」终于在今天下午成功提交到应用商店(腾讯应用宝).期间遇到两个小问题,记录如下: 1.上传安装包失败,提示「无法获取签名信息,请上传有效包(110506)」. 安装 ...

  6. ssh的两个小知识

    ssh的两个小知识 1. 在ssh客户端启动远程服务器的图形界面程序. 如果你试图在ssh客户端运行远程服务器的一个图形界面程序,比如说执行firefox,此时可能会提示,can not connec ...

  7. SourceTree 的初次使用的两个小问题

    菜鸟才开始使用SourceTree,出现了两个小问题,特此整理一下,希望对各位新手有帮助.刚开始以为装了SourceTree就不用装git了,其实不然,不装git就会出现下面第一个问题: 1.新手使用 ...

  8. vuex2.0+两个小例子

    首先vuex概念比较多,一定要搞懂里面的概念,可以参考官网Vuex2.0概念,我写此文的目的是希望能对前端爱好者提供个参考,加深对vuex2.0各核心概念的理解. 废话少说,直接上干货.这是官网上的一 ...

  9. SpringMVC请求参数注解两个小问题

    今天遇到使用SpringMVC请求注解遇到的两个小问题: 如果用@requestBody注解,则请求体内容类型一般要为application/json,如果其类型为multipart/form-dat ...

随机推荐

  1. JQuery 数据加载中禁止操作页面

    比较常见的做法,但对我而言是第一次做,记录一下. 为了把找来的loading.gif 的背景色设置为透明,还特意装了quicktime. 有学到一些额外的东西. 先将div及img定义好 <bo ...

  2. css样式变 及实际用法

    <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con ...

  3. Android 解析JSON

    上次讲了XML格式数据的解析方式,这次要说的是如何解析JSON数据格式,相对与XML,JSON解析数据的方式在于它的体积更小,在网络上传输可以更省流量. 这次在网上找到一个中国天气json数据的API ...

  4. QS之force(3)

    Example in project - First force signals in certain time and then noforce signals after some time. # ...

  5. Object::connect: No such slot (QT槽丢失问题)

    1.看看你的类声明中有没有Q_OBJECT,并继承public QMainWindow{ 例如: class CPlot: public QMainWindow{ Q_OBJECT 2.你声明的函数要 ...

  6. 【sqli-labs】 less6 GET - Double Injection - Double Quotes - String (双注入GET双引号字符型注入)

    同less5 单引号改成双引号就行 http://localhost/sqli/Less-6/?id=a" union select 1,count(*),concat((select ta ...

  7. 微服务常见安全认证方案Session token cookie跨域

    HTTP 基本认证 HTTP Basic Authentication(HTTP 基本认证)是 HTTP 1.0 提出的一种认证机制,这个想必大家都很熟悉了,我不再赘述.HTTP 基本认证的过程如下: ...

  8. 【转】在VMware中为Linux系统安装VM-Tools的详解教程

    在VMware中为Linux系统安装VM-Tools的详解教程 如果大家打算在VMware虚拟机中安装Linux的话,那么在完成Linux的安装后,如果没有安装Vm-Tools的话,一部分功能将得不到 ...

  9. 修复Thinkphp框架5.0和5.1版本的远程代码执行安全漏洞

    由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞.最直接的影响为index.php直接被篡改成首页html的内容! 5.0版本 thinkphp/libr ...

  10. TCP中的RST标志(Reset)详解

    在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接.四次握手怎样把全双工的连接关闭掉.滑动窗口是怎么传输数据的.TCP的flag标志位里RST在哪些情况下出现.下面我会画一些尽量简化的 ...