Android Xpose Hook(一)
http://repo.xposed.info/module/de.robv.android.xposed.installer


public String sayhello(int num1, int num2 )
{
if (num1 + num2 < 100) {
return "so small than 100!";
}
if (num1 + num2 == 100) {
return "equal 100!";
}
if (num1 + num2 > 100) {
return "so big than 100!";
}
return "error";
}
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="Easy example" />
<meta-data
android:name="xposedminversion"
android:value="54" />
将下载好的XposedBridged.jar放入该目录
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile files('lib/XposedBridgeApi-54.jar')
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
provided files('lib/XposedBridgeApi-54.jar')
}
com.bingghost.xposeddemo.XposedHook
public class XposedHook implements IXposedHookLoadPackage {
public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedBridge.log("Loaded app: " + lpparam.packageName);
if (!lpparam.packageName.equals("com.bingghost.simplehelloworld"))
{
return;
}
findAndHookMethod("com.bingghost.simplehelloworld.MainActivity", lpparam.classLoader, "sayhello", int.class, int.class, new XC_MethodHook() {
protected void afterHookedMethod(MethodHookParam param) {
String str = (String) param.getResult();
Log.v("hook after result :", str);
Integer para1 = (Integer) param.args[0]; //获取参数1
Integer para2 = (Integer) param.args[1]; //获取参数2
String s1 = Integer.toString(para1);
String s2 = Integer.toString(para2);
param.setResult("i am new result! after"); //设置返回值
Log.v("hook param1:", s1);
Log.v("hook param2:", s2);
Log.v("hook result:", "i am new result! after");
}
protected void beforeHookedMethod(MethodHookParam param) {
param.setResult("i am new result! before"); //
Integer para1 = (Integer) param.args[0]; //获取参数1
Integer para2 = (Integer) param.args[1]; //获取参数2
String s1 = Integer.toString(para1);
String s2 = Integer.toString(para2);
Log.v("hook before param1:", s1);
Log.v("hook before param2:", s2);
param.args[0] = 100; //设置参数1
param.args[1] = 200; //设置参数2
Log.v("hook", "before hook!");
}
});
}
}



Android Xpose Hook(一)的更多相关文章
- 使用cydia substrate 来进行android native hook
cydia不仅可以hook java代码,同样可以hook native代码,下面举一个例子来进行android native hook 我是在网上找到的supermathhook这个项目,在他基 ...
- Android Exception Hook
承接上一篇文章Android Inline Hook,接下来我们看一下android系统中基于异常的hook方式,这种方式与inline hook相比实现较为简单,但执行效率是它的短板. except ...
- android inline hook
最近终于沉下心来对着书把hook跟注入方面的代码敲了一遍,打算写几个博客把它们记录下来. 第一次介绍一下我感觉难度最大的inline hook,实现代码参考了腾讯GAD的游戏安全入门. inline ...
- android ART hook
0x00 前言 之前一直都是在Dalvik 虚拟机上在折腾,从Android 4.4开始开始引入ART,到5.0已经成为默认选择.而且最近看到阿里开源的 Dexposed 框架,已经提供了对于andr ...
- Android Native Hook技术(二)
Hook技术应用 已经介绍了安卓 Native hook 原理,这里介绍 hook 技术的应用,及 Cyida Substrate 框架. 分析某APP,发现其POST请求数据经过加密,我们希望还原其 ...
- Android Native Hook技术(一)
原理分析 ADBI是一个著名的安卓平台hook框架,基于 动态库注入 与 inline hook 技术实现.该框架主要由2个模块构成:1)hijack负责将so注入到目标进程空间,2)libbase是 ...
- android的hook方面知识点
android hook分为另种: native层hook---理解ELF文件 java层---虚拟机特性和Java上的反射的作用 注入代码: 存放在哪? 用mmap函数分配临时内存来完成代码存放,对 ...
- Android GOT Hook
最后介绍的这种hook方式原理比较简单,只需要将GOT表中的目标函数地址替换为我们自己的函数地址即可,但它的缺点是只能对导入函数进行hook,还需要对elf文件的结构有所了解. 一.获取到GOT表在内 ...
- Android逆向进阶(7)——揭开Hook的神秘面纱
本文作者:i春秋作家——HAI_ 0×00 前言 HAI_逆向使用手册(想尝试一下新的写法) 其他 Android逆向进阶 系列课程 <<<<<<< 人物说明 ...
随机推荐
- php分页的实现
php常见分页有3种,一种是文字分页,比如说上一页,下一页之类的,还有一种数字分页,像1,2,3...之类的,这个比较简单,前者稍微复杂些.最后一种是他们2者结合. 下面是代码: 1 //获取当 ...
- 第一次使用Android Studio时你应该知道的一切配置
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- webapi输入验证过滤器ValidationActionFilter
public class validationActionFilter:ActionFilterAttribute { public override void OnActionExecuting(S ...
- Ansible简介及常用模块
一.基础介绍 1.简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置. ...
- Yii2 rules验证规则
Rules验证规则: required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空. [['字段名1','字段名2'],required] //字段 ...
- ASP.NET MVC使用Bootstrap系统(2)——使用Bootstrap CSS和HTML元素
阅读目录 Bootstrap 栅格(Grid)系统 Bootstrap HTML元素 Bootstrap 验证样式 ASP.NET MVC创建包含Bootstrap样式编辑模板 小结 Bootstra ...
- 我也来写:数据库访问类DBHelper(转)
一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...
- MFC中文件的查找、创建、打开、读写等
http://blog.csdn.net/whatforever/article/details/6316416
- express 框架之 路由与中间件
1. 什么是router路径,什么是middleware? 我们输入www.baidu.com 来访问百度的主页,浏览器会自动转换为 http://www.baidu.com:80/(省略一些参数) ...
- jquery 使用textarea
问题: 若在textarea标签中键入一个回车时,将插入2个字符\n\r ,将在datagrid不能正确显示. \n: 回车符 \r: 换行符 解决方案: txt = txt.Replace(&qu ...