水木:java進程 代碼注入 (Powered by zms)

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


回覆 刪除
推薦帖
做個調查 顯擺個,我在做個scm平臺
請教,用什麼工具寫xml文件能換行和自動縮進。 zip壓縮docx文件,解壓後有問題
Java學習 Java與模式這本書,有人轉手嗎
做高級XXX需要了解應用到什麼程度 真實的ITer薪資水平來了!!!
關於泛型 求教大家,java程序中怎麼把字符串作爲關鍵字調用現有的搜索引擎返回結果?
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進程,我不想停止它,但我想把一段代碼植入進去,幹
: ...................
支持 回覆 刪除

發佈了22 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章