跟着鬼哥学android java hook(二)
来源:互联网 发布:个人可以注册几个域名 编辑:程序博客网 时间:2024/06/04 18:49
第一篇文章读完之后,大家在熟悉了cydia的hook框架了,然后我们就开始下一步的学习。
本篇文章,主要是修改正常软件中方法的返回值,大家可以根据这个思路去延伸扩展,不要局限于此文一个思路。
0x1:建立新工程
新建立一个正常安卓工程,具体可以看附件
工程名:TestHook
包名:com.example.testhook
主类:MainActivity.java
编写一个测试算法的代码:
public int getMoney(){int aa=10;System.out.println("这里还是初始化的aa为-->"+aa); return aa;}
代码很简单,模拟一般游戏的get方法,返回一个int类型的数据,一般用来当作游戏中的金币数量。
然后在onCreate中调用这个方法:
System.out.println("开始执行了");int bb=getMoney();System.out.println("现在是新版本的aa为-->"+bb);
在调用方法前后,对数据都有打印,这样我们就可以很方便的查看数据是否改变了。
好了,测试工程基本就这样了,那么我们安装看一下log日志:
一切正常,我们的目标工程完成后,那么我们就开始编写hook方面的算法。
0x2:编写hook代码
省事一点,我们直接使用上篇文章使用的Hook工程,编写一个新的方法即可。
这里是定义我们需要 hook 的类和方法。
然后就是看怎么操作那个hook的getMoney的方法了:
if(log!=null){final MS.MethodPointer old = new MS.MethodPointer();MS.hookMethod(arg0, log, new MS.MethodHook() { @Overridepublic Object invoked(Object arg0, Object... arg1)throws Throwable {// TODO Auto-generated method stubSystem.out.println("i am in---------->");System.out.println("i am going to fuck ---->");//调用原getMoney方法,将原方法的返回值放到aa中int aa=(Integer) old.invoke(arg0, arg1);//修改aa为999999,即原方法返回值已经修改掉了aa=9999999;//返回aareturn aa;}},old);}
好了,这样以后,我们可以开始测试了。
进行安装此插件,然后重启手机。。。
对比上面我们测试工程的打印截图,这下可以很清楚的看到,我们已经成功修改掉getMoney的返回值为999999。
好了,到现在这两篇文章,大家看完之后,也就可以大致明白了,我们是可以通过这个来操作游戏的,尤其是对有各种验证如签名或者md5的游戏,我们在本机这样修改的话,就可以算是破解掉了,那么我们下一篇文章就拿一个游戏开始测试,验证我们的想法是否可行。
相关工程附件都在下面网盘,可以直接拿来测试。
链接:http://pan.baidu.com/s/1qW2TPYO 密码:d1ad
- 跟着鬼哥学android java hook(二)
- 跟着鬼哥学android java hook(三)
- 跟着鬼哥学Android java hook(一)
- 跟着鬼哥学Android java hook (一)
- 跟着老毕学Java之基础篇(二)
- 跟着某乎玩python(二)
- Android Java Hook 方法
- Android Hook Java
- Xposed Android Java Hook
- 深入Android源码系列(二) HOOK技术大作战
- 跟着鬼哥学so修改,二,进行篇
- 跟着angularjs2官方文档学习(二)
- (每日一转)黑马程序员----跟着老毕学Java之基础篇(二)
- 进击的Android Hook 注入术《二》
- 跟着姜少学Java基础编程之二:类型转换
- 跟着沈毅学微电商(PHP):二
- 跟着AARON一起学http协议(二)URL语法
- 跟着官方文档学HINT(二)优化器模式
- 协议森林02 小喇叭开始广播 (以太网与WiFi协议)
- 这里有些JAVA的免费课程分享
- Linux的命令
- cocos2dx 3.1.1 ProgressTimer游戏进度条简明实例(语言C++)
- 协议森林03 IP接力赛 (IP, ARP, RIP和BGP协议)
- 跟着鬼哥学android java hook(二)
- 十月百度,阿里巴巴,迅雷搜狗最新面试七十题(第201-270题)
- 图片缓存-DisplayImageOptions
- 如何运用自定义验证来排除特殊字符
- 常用文件路径和文件名处理函数
- 协议森林04 地址耗尽危机 (IPv4与IPv6地址)
- Java 集群
- ArcGIS Python实现Modis NDVI批量化月最大合成
- tar 解压缩命令