java程序如何hook? 其实反射可以做到的。Spring里面就有AOP的例子类似这个。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 敢不敢详细说明啊大哥昨天看AOP 没觉得是我要的东西。。 这个就是个类似于过滤器的功能。AOP你用一下就知道了,当你A调用B的时候,中间有个C能得到A传给B的东西,如果不用AOP,可以用JAVA动态代理能达到你的要求。 package com.birds.aop;public interface Action { public void process(String msg);}package com.birds.aop;public class MyAction implements Action { @Override public void process(String msg) { System.out.println("result:" + msg); }}public class MyHandler implements InvocationHandler { private Object obj; public MyHandler() { } public Object newProx(Object obj){ this.obj = obj; return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this); } /* * (non-Javadoc) * * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, * java.lang.reflect.Method, java.lang.Object[]) */ @Override public Object invoke(Object arg0, Method method, Object[] arg2) throws Throwable { System.out.println("=============" + method + "," + arg2); if (arg2 != null) { for (Object pm : arg2) { System.out.println("what:" + pm); } } return null; } public static void main(String[] args) { MyHandler handler = new MyHandler(); Action action = (Action) handler.newProx(new MyAction()); action.process("Hello,guys"); }}只要执行process方法,就会自动调用invoke方法,你在这个方法里面能看到是什么参数,调用了什么方法。 你好,你这个应该不能完成我想要的。你这个只是监视而已。我昨天看了。我要的不是监视,监视的话 反射我都不需要的。我只需要注册个消息。我需要的是 当A调用B的时候,调用的B是我的代码,由我的代码决定传给B的是什么。你们搞JAVA的是不是根本不需要hook的啊?或者你们搞java的都不用Windows平台吗?你们可以看看Windows平台hook的意思。我要的是那个。现在 A点到B点是直达的。我要实现的是,在A点到B点这个过程中设立关卡。这样总能明白了吧? Java如何测试Int, char, boolean的字节数? Android如何进行图片编辑? 用google direction获取路径问题 android 通讯录分组查询问题 关于布局的问题 像搜狗输入法这种点击按键后弹出视图并且可以拖动的效果应该如何实现 初学Android,请高手赐教--一个国外软件的导航菜单(在线等) 大神们有知道图片上怎么添加多个可以随意拖动的标记吗? android小白,问一下 public void onClick(view v)出错的原因 安卓sqlite创建第二个表失败 高手来帮菜鸟解惑一下啊!! android 开发不能执行可执行文件
敢不敢详细说明啊大哥昨天看AOP 没觉得是我要的东西。。
AOP你用一下就知道了,
当你A调用B的时候,中间有个C能得到A传给B的东西,如果不用AOP,可以用JAVA动态代理能达到你的要求。
package com.birds.aop;public interface Action {
public void process(String msg);
}package com.birds.aop;public class MyAction implements Action { @Override
public void process(String msg) {
System.out.println("result:" + msg);
}}public class MyHandler implements InvocationHandler {
private Object obj; public MyHandler() { }
public Object newProx(Object obj){
this.obj = obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
} /*
* (non-Javadoc)
*
* @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object,
* java.lang.reflect.Method, java.lang.Object[])
*/
@Override
public Object invoke(Object arg0, Method method, Object[] arg2)
throws Throwable {
System.out.println("=============" + method + "," + arg2);
if (arg2 != null) {
for (Object pm : arg2) {
System.out.println("what:" + pm);
}
}
return null;
} public static void main(String[] args) {
MyHandler handler = new MyHandler();
Action action = (Action) handler.newProx(new MyAction());
action.process("Hello,guys");
}
}
只要执行process方法,就会自动调用invoke方法,你在这个方法里面能看到是什么参数,调用了什么方法。
你们搞JAVA的是不是根本不需要hook的啊?
或者你们搞java的都不用Windows平台吗?你们可以看看Windows平台hook的意思。我要的是那个。
现在 A点到B点是直达的。我要实现的是,在A点到B点这个过程中设立关卡。这样总能明白了吧?