Cydia for Android2

使用cydia框架编写cydia hook插件的时候由于initialize方法是无参的静态方法,所以不能获取上下文因此很多事情直接在initialize方法里就干不了,比如toast,发送广播等。由于hook是改变其他的类的API的执行结果。所以可以使用HOOK的那个类来获取context从而达到可以使用toast等的目的。

办法:

 1             MS.hookMethod(arg0, toast, new MS.MethodAlteration() {
 2 
 3                 @Override
 4                 public Object invoked(Object arg0, Object... arg1)
 5                         throws Throwable {
 6                     Toast.makeText(((Activity)arg0).getApplicationContext(), "test", Toast.LENGTH_LONG).show();
 7                     invoke(arg0, "hook before");
 8                     invoke(arg0, arg1);
 9                     invoke(arg0, "hook end");                    
10                     return null;
11                 }
12             });

参数arg0就是最后HOOK的那个类的一个实例,利用她可以获取她里面的方法,由于我这里HOOK的类是Activity类型,所以可以获取Context.

转载于:https://www.cnblogs.com/xushihai/p/4503439.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值