第一篇文章读完之后,大家在熟悉了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() {
@Override
public Object invoked(Object arg0, Object... arg1) throws Throwable {
System.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;
//返回aa
return aa;
}
},old);
}
好了,这样以后,我们可以开始测试了。
进行安装此插件,然后重启手机。。。
对比上面我们测试工程的打印截图,这下可以很清楚的看到,我们已经成功修改掉getMoney的返回值为999999。
好了,到现在这两篇文章,大家看完之后,也就可以大致明白了,我们是可以通过这个来操作游戏的,尤其是对有各种验证如签名或者md5的游戏,我们在本机这样修改的话,就可以算是破解掉了,那么我们下一篇文章就拿一个游戏开始测试,验证我们的想法是否可行。
相关工程附件都在下面网盘,可以直接拿来测试。
链接:
http://pan.baidu.com/s/1qW2TPYO 密码:d1ad
- 大小: 7.3 KB
- 大小: 16.7 KB
- 大小: 8.8 KB
分享到:
相关推荐
Method Hook主要针对Java层的方法调用,通过替换或插入自定义的行为来控制方法的执行。例如,我们可以使用Xposed框架,它在Dalvik虚拟机或者ART运行时环境中提供了一个全局的hook机制。开发者可以定义一个或多个接口...
"注入安卓进程,并hook java世界的方法"这一主题主要涵盖了如何在Android环境中对Java层进行动态代码注入和函数Hook的技术。 首先,我们需要理解什么是进程注入。在计算机系统中,进程注入是一种技术,它允许一个...
Android进程so注入Hook java方法的原理和使用(一)中介绍的Android native Hook工具文件,已经在android模拟器上进行Hook测试,能够成功,提供给需要的朋友,也为自己备份一下。
Android 5.1 Art Hook 是一个针对Android系统中 ART (Android RunTime) 的动态代码钩子(Hook)技术。在Android系统中,Art是应用程序运行时环境,它负责编译和执行应用程序的字节码。Hook技术允许开发者在不修改...
在Android上,最常用的Hook库是Xposed框架,它利用Java层面的反射机制对系统API进行Hook。然而,当涉及到C/C++级别的系统函数或库函数时,我们就需要借助更底层的方法,如LD_PRELOAD。 LD_PRELOAD是Linux动态链接器...
在Android开发中,Hook技术是一种高级的编程技巧,它允许开发者在不修改原始代码的情况下,拦截和修改系统或第三方库的函数调用行为。这种方式在进行插件化、动态加载、调试以及性能监控等方面有着广泛的应用。本...
在Android中,这通常通过反射机制和JNI(Java Native Interface)来实现。反射用于定位要Hook的方法,而JNI则允许我们编写C/C++代码来实现对原方法的拦截和替换。 2. **Xposed框架** "xponsed"提及的应该是知名的...
DDI(Dynamic Device Identifier)Hook框架是Android平台上的一个Java Hook框架,尤其适用于对系统服务、组件或者特定API的监控和控制。本文将深入探讨DDI框架的实现原理、核心功能以及如何进行代码分析。 ### 1. ...
`Android Hook Activity 启动劫持`是一种高级技术,它允许开发者利用动态代理(Dynamic Proxy)技术来拦截并控制AMS的行为,从而在不修改系统源码的情况下,实现对Activity启动流程的监控或修改。 首先,我们需要...
Java Hook 和 Android Hook 是两种在Java和Android平台上进行动态代码修改和行为监控的技术。它们主要应用于调试、性能分析、安全检测以及插件化开发等领域。本文将深入探讨这两种技术的概念、原理及其应用。 首先...
在Android开发中,Hook技术是一种常用的调试和测试手段,它允许开发者在不修改原有代码的情况下,改变程序的行为。本文将详细讲解如何实现对Instrumentation的Hook,以达到控制应用程序执行流程的目的。 首先,理解...
【Android Hook 概述】 Android Hook 技术是一种在运行时动态修改或拦截系统或应用程序行为的方法,它通过替换或扩展原始方法实现来达到特定目的。Hook 在 Android 中的应用广泛,例如性能分析、调试、插件化开发...
Android进程so注入Hook java方法的原理和使用(一)中提到的Android native Hook的源码工程,能够在ubuntu下编译成功,提供给向学习Android的Hook的同学,同时也自己备份一下。
在Android系统中,JNI(Java Native Interface)是Java与C/C++交互的桥梁,而内联钩子(Inline Hook)技术则是在JNI层面上进行的。它通常涉及到修改目标函数的指令序列,以便在调用原始函数之前和之后插入自定义的...
首先,理解Android Hook的基础:在Android系统中,大部分应用程序都是基于Java编写的,但它们最终都会被Dalvik或ART(Android运行时)转换为字节码执行。Hook技术就是针对这些字节码或原生代码进行动态拦截,改变其...
在Android端的APM实现中,Hook技术的应用尤为关键,因为Android系统本身是基于Java语言开发的,而Java的运行时特性为Hook技术提供了良好的支持。 在讨论网易的Hook方案之前,需要了解Android平台下Hook的几种常见...
小米mimu系统,会对toast进行拦截,在用户提交的toast 消息体拼接一个前缀,由于该种会导致插件工程出现资源错乱,获取appLabel异常,现我们通过hook 动态代理,对消息发送做一个劫持,修改消息信息,还原原来的消息
在Android中,我们通常使用Java的反射机制和代理模式来实现hook。它允许我们在运行时动态地改变代码的行为,比如在特定函数执行前后插入自定义逻辑,或者替换函数的实现。 在这个插件化开发的场景下,我们的目标是...
在Android系统中,"Native Hook"是指在C/C++层进行的hook技术,主要用于拦截和修改系统函数调用。在Android应用开发中,特别是在安全、性能优化和调试领域,Native Hook有着广泛的应用。本篇文章将深入探讨Android ...
1. **Android 应用开发**:Android版手机摄像头应用通常由Java或Kotlin编写,使用Android Studio作为集成开发环境。开发者需要理解Android SDK,学习如何创建活动(Activity)、服务(Service)以及处理用户界面(UI...