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.mzph.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 显示或更…