java进程 代码注入 (Powered by zms)http://www.btsmth.com/show_topic.php?en_name=Java&gid=277398楼主 zms (小美)
此代码注入非依赖注入,是hack里的 代码注入
回复 删除场景是这样滴: 机器上有一个java进程,我不想停止它,但我想把一段代码植入进去,干 一些事情(获取一些信息,改变一些值,监控一些东西,或者其它猥琐的事情) 这个进程不能停,而且也没有预料到现在的事情,或者这个进程的代码完全不能修改。 好,这篇文章是要干这个事情,它基于 jvm的 jdi或者jvmti 接口 这里用的jvmti,jdi也可以,麻烦不少 应该jdk1.5 就有,需要用c写。1.6 支持另一种方式,java也可以写 以前做过类似的事情,代码找不到了,现在有实现了一番。 直接上代码: 被注入的代码是这样滴: while(true) { System.out.println(System.currentTimeMillis()); Thread.sleep(1000); } 每隔一秒输出当前时间,只是示意用。不管什么java程序都行 我要注入的类,那个方法是固定的: package com.zms.inject; import java.lang.instrument.Instrumentation; public class MyAgent1 { public static void premain(String s) { premain(s, null); } public static void premain(String s, Instrumentation instru) { System.out.println("I'm injected! 木哈哈哈哈哈"); System.out.printf("param: %s\n", s); } public static void agentmain(String args, Instrumentation inst) { premain(args, inst); } public static void agentmain(String args) { premain(args); } } 编译,打入jar包 MANIFEST.MF Manifest-Version: 1.0 Created-By: 1.6.0_26 (Apple Inc.) Agent-Class: com.zms.inject.MyAgent1 Premain-Class: com.zms.inject.MyAgent1 操作代码: import com.sun.tools.attach.*; import com.sun.tools.attach.spi.AttachProvider; VirtualMachine vm=VirtualMachine.attach("24862"); //target java process pid System.out.println(vm); vm.loadAgent("/Users/zms/workspace/mt/out/production/agent1.jar","Powered by zms!"); Thread.sleep(1000); vm.detach(); 目标程序结果: 1317283652520 1317283653520 1317283654521 I'm injected! 木哈哈哈哈哈 param: Powered by zms! 1317283655521 1317283656522
| |||||||||||
2011-09-29 17:33:49 广东省广州市电信ADSL 在本版活跃指数 29.6 | canper (洗衣粉) 拜,我记得你之前贴在水木的博客上 【 在 zms (小美) 的大作中提到: 】 : 此代码注入非依赖注入,是hack里的 代码注入 : 场景是这样滴: : 机器上有一个java进程,我不想停止它,但我想把一段代码植入进去,干 : ................... | ||||||||||
2011-09-29 17:35:24 在本版活跃指数 23.7
blog:
http://blog.wsdd.org/
每天都有更新 本人可以帮忙解决您的任何和Java有关的技术问题,任何方向均可,难度越大越好 其它方向如 Flash/Flex/Web/数据库/UI/算法/Hack/调优/搜索/Script/Win32等也均可胜任 可以免费提供指导咨询和给出技术方向 | 楼主 zms (小美)
嗯,水木blog挂了,文件下不下来了。源代码也找不到了。。
支持 回复 删除只好再研究一遍。 那个工具是动态更新代码的。(程序不停机,不用调试模式) 和这个本质是一样的。 【 在 canper (洗衣粉) 的大作中提到: 】 : 拜,我记得你之前贴在水木的博客上 | ||||||||||
2011-09-29 17:39:16 中国 在本版活跃指数 19.4
软件变慢的速度要快于硬件变快的速度
| modico ().net()
能移走吗?能移走自己吗?能移走别的吗?
支持 回复 删除移走前,println("byebye!") 【 在 zms (小美) 的大作中提到: 】 : 此代码注入非依赖注入,是hack里的 代码注入 : 场景是这样滴: : 机器上有一个java进程,我不想停止它,但我想把一段代码植入进去,干 : ................... | ||||||||||
2011-09-29 17:41:18 在本版活跃指数 23.7
blog:
http://blog.wsdd.org/
每天都有更新 本人可以帮忙解决您的任何和Java有关的技术问题,任何方向均可,难度越大越好 其它方向如 Flash/Flex/Web/数据库/UI/算法/Hack/调优/搜索/Script/Win32等也均可胜任 可以免费提供指导咨询和给出技术方向 | 楼主 zms (小美)
一切皆有可能
支持 回复 删除【 在 modico ().net() 的大作中提到: 】 : 能移走吗?能移走自己吗?能移走别的吗? : 移走前,println("byebye!") | ||||||||||
2011-09-29 17:41:33 中国 在本版活跃指数 19.4
珍爱生命,远离IDE
| modico ().net()
上,代码
支持 回复 删除【 在 zms (小美) 的大作中提到: 】 : 一切皆有可能 | ||||||||||
2011-09-29 17:46:10 北京市联通ADSL 在本版活跃指数 18.4 | Apache9 ()()
这个是不是靠security设置可以不让你这么干?
支持 回复 删除【 在 zms (小美) 的大作中提到: 】 : 一切皆有可能 | ||||||||||
2011-09-29 17:47:47 在本版活跃指数 23.7
blog:
http://blog.wsdd.org/
每天都有更新 本人可以帮忙解决您的任何和Java有关的技术问题,任何方向均可,难度越大越好 其它方向如 Flash/Flex/Web/数据库/UI/算法/Hack/调优/搜索/Script/Win32等也均可胜任 可以免费提供指导咨询和给出技术方向 | 楼主 zms (小美)
很简单,做一个基本的agent。
支持 回复 删除它工作起来大概是: 根据传入的一个url new 一个URLClassLoader,载入那个url对应的jar load出来class来,真正的执行。 执行完后,所有实例干掉,gc,把所有的class都gc掉,最后把classloader也gc掉 除了屏幕上的hello world,不留下任何痕迹 就ok了。 【 在 modico ().net() 的大作中提到: 】 : 上,代码 | ||||||||||
2011-09-29 17:48:01 中国 在本版活跃指数 19.4
软件变慢的速度要快于硬件变快的速度
| modico ().net()
谁不让干就先搞谁
支持 回复 删除【 在 Apache9 ()() 的大作中提到: 】 : 这个是不是靠security设置可以不让你这么干? | ||||||||||
2011-09-29 17:48:25 中国 在本版活跃指数 23.7
blog:
http://blog.wsdd.org/
每天都有更新 本人可以帮忙解决您的任何和Java有关的技术问题,任何方向均可,难度越大越好 其它方向如 Flash/Flex/Web/数据库/UI/算法/Hack/调优/搜索/Script/Win32等也均可胜任 可以免费提供指导咨询和给出技术方向 | 楼主 zms (小美)
木哈哈哈
支持 回复 删除靠人类是阻止不了的 【 在 modico ().net() 的大作中提到: 】 : 标 题: Re: java进程 代码注入 (Powered by zms) : 发信站: 水木社区 (Thu Sep 29 17:48:01 2011), 站内 : : 谁不让干就先搞谁 : : 【 在 Apache9 ()() 的大作中提到: 】 : : 这个是不是靠security设置可以不让你这么干? : : : -- : 软件变慢的速度要快于硬件变快的速度 : : : ※ 来源:·水木社区 newsmth.net·[FROM: 1.202.91.*] | ||||||||||
2011-09-29 17:50:27 中国 在本版活跃指数 19.4
天暖花开不做工
将来哪里好过冬 | modico ().net()
小美上代码就像翠花上酸菜
支持 回复 删除【 在 zms (小美) 的大作中提到: 】 : 很简单,做一个基本的agent。 : 它工作起来大概是: : 根据传入的一个url : ................... | ||||||||||
2011-09-29 18:16:47 北京市光环新网 在本版活跃指数 18.9 | memory166 (司机加油,必须夺冠)
难道可以随便载入类?而不受范围的控制?
支持 回复 删除直接可以调用别人的private方法么? 【 在 zms (小美) 的大作中提到: 】 : 此代码注入非依赖注入,是hack里的 代码注入 : 场景是这样滴: : 机器上有一个java进程,我不想停止它,但我想把一段代码植入进去,干 : ................... | ||||||||||
2011-09-29 18:24:56 在本版活跃指数 23.7
blog:
http://blog.wsdd.org/
每天都有更新 本人可以帮忙解决您的任何和Java有关的技术问题,任何方向均可,难度越大越好 其它方向如 Flash/Flex/Web/数据库/UI/算法/Hack/调优/搜索/Script/Win32等也均可胜任 可以免费提供指导咨询和给出技术方向 | 楼主 zms (小美)
Keep Your Mind Wide Open,一切皆有可能:
支持 回复 删除你本来写了一个desktop的记事本程序,运行以后,我注入我的代码,关掉你的窗体,从远端下载我的jar,偷偷下载一个jetty,启动,下载war,部署。进程还是那个进程,结果变成了一个app serve可以提供服务 【 在 memory166 (司机加油,必须夺冠) 的大作中提到: 】 : 难道可以随便载入类?而不受范围的控制? : 直接可以调用别人的private方法么? | ||||||||||
2011-09-29 18:29:54 在本版活跃指数 23.7
blog:
http://blog.wsdd.org/
每天都有更新 本人可以帮忙解决您的任何和Java有关的技术问题,任何方向均可,难度越大越好 其它方向如 Flash/Flex/Web/数据库/UI/算法/Hack/调优/搜索/Script/Win32等也均可胜任 可以免费提供指导咨询和给出技术方向 | 楼主 zms (小美)
如果安全措施做的不好的话,甚至可以跨越机器注入
支持 回复 删除【 在 memory166 (司机加油,必须夺冠) 的大作中提到: 】 : 难道可以随便载入类?而不受范围的控制? : 直接可以调用别人的private方法么? | ||||||||||
2011-09-29 20:16:54 北京市光环新网 在本版活跃指数 18.9 | memory166 (司机加油,必须夺冠)
明白鸟~这是为你的程序找了个宿主!
支持 回复 删除【 在 zms (小美) 的大作中提到: 】 : Keep Your Mind Wide Open,一切皆有可能: : 你本来写了一个desktop的记事本程序,运行以后,我注入我的代码,关掉你的窗体,从远端下载我的jar,偷偷下载一个jetty,启动,下载war,部署。进程还是那个进程,结果变成了一个app serve可以提供服务 | ||||||||||
2011-09-29 20:19:32 北京市光环新网 在本版活跃指数 18.9 | memory166 (司机加油,必须夺冠)
只能运行你自己注入的代码,运行不了你宿主jvm进程里面的那些代码。
支持 回复 删除我的意思是,比如进入alipay进程,运行它的充值方法,然后,就没有然后了…… 【 在 zms (小美) 的大作中提到: 】 : 如果安全措施做的不好的话,甚至可以跨越机器注入 | ||||||||||
2011-09-29 20:24:30 在本版活跃指数 23.7
blog:
http://blog.wsdd.org/
每天都有更新 本人可以帮忙解决您的任何和Java有关的技术问题,任何方向均可,难度越大越好 其它方向如 Flash/Flex/Web/数据库/UI/算法/Hack/调优/搜索/Script/Win32等也均可胜任 可以免费提供指导咨询和给出技术方向 | 楼主 zms (小美)
当然可以啊, 一个进程内啊。
支持 回复 删除【 在 memory166 (司机加油,必须夺冠) 的大作中提到: 】 : 只能运行你自己注入的代码,运行不了你宿主jvm进程里面的那些代码。 : 我的意思是,比如进入alipay进程,运行它的充值方法,然后,就没有然后了…… | ||||||||||
2011-09-29 23:37:14 美国北达科他州立大学 在本版活跃指数 19.2 | qblyy (十年先も君に恋して·情何以堪)
赞
支持 回复 删除【 在 zms (小美) 的大作中提到: 】 : 此代码注入非依赖注入,是hack里的 代码注入 : 场景是这样滴: : 机器上有一个java进程,我不想停止它,但我想把一段代码植入进去,干 : ................... | ||||||||||
2011-09-30 00:39:12 美国/加拿大 在本版活跃指数 20.7
男子汉,大丈夫,生又何忧,死又何欢?
我出了门,干咳两声,袖了手,施施然而去...... 那一刻被电光照亮的这个身姿,千万年后仍凝固在传说之中。 | muser (负尽千重罪,练就不死心)
THIS tech shown here is more like a DLL injection--MS used it for debugging but left a big door for virus--rather than code instrument.
支持 回复 删除you may search "java bytecode instrument" for your need. 【 在 memory166 的大作中提到: 】 : 难道可以随便载入类?而不受范围的控制? : 直接可以调用别人的private方法么? : 【 在 zms (小美) 的大作中提到: 】 : ................... | ||||||||||
2011-09-30 00:40:45 北京市西城区联通ADSL 在本版活跃指数 11.8
【 在 KCN (毒中之毒~strongest) 的大作中提到: 】
: 标 题: Re: 搜水木,上奇虎 (转载) : 发信站: 水木社区 (Wed Jul 15 10:13:10 2009), 站内 : : 太不像话了,真流氓阿! : 【 在 PKubuntu (Your Emacs Is Mine) 的大作中提到: 】 | PKubuntu (Your Emacs Is Mine)
i总前两天还在python版发了一个python的
支持 回复 删除https://fedorahosted.org/pyrasite/ 看来所有语言的终极目标都是向lisp靠拢阿 【 在 zms (小美) 的大作中提到: 】 : 此代码注入非依赖注入,是hack里的 代码注入 : 场景是这样滴: : 机器上有一个java进程,我不想停止它,但我想把一段代码植入进去,干 : ................... |