عرض مشاركة واحدة
احصائياتى

الردود
45

المشاهدات
33773
 
محمد ياسر

محمد ياسر is on a distinguished road

    غير متواجد

المشاركات
1,940

+التقييم
0.90

تاريخ التسجيل
Apr 2019

الاقامة
https://www.facebook.com/daany

نظام التشغيل

رقم العضوية
1
2019-04-20, 11:27 AM
المشاركة 1 
#1  
افتراضي لودر لتشغيل سورسات ال 3d قبل البروتوا

السلام عليكم ورحمة الله وبركاته

في ناس عنده سورسات لكن مش بتشتغل كسرفير واحد وتجيب سيرفيرات اونلاين كله

تعالوا نحل المشكله ده في 3 قايق





افتح ملف Authentication.cs

وبدل الي جواها بده


كود:
using System;
using System.IO;
using System.Text;
using MoDY.Network.Cryptography;

namespace 
MoDY.Network.AuthPackets
{
    public 
unsafe class Authentication Interfaces.IPacket
    
{
        public 
string Username;
        public 
string Password;
        public 
string Server;


        public 
Authentication()
        {
        }
        public 
void Deserialize(byte[] buffer)
        {
            if (
buffer.Length == 312)
            {
                
ushort length BitConverter.ToUInt16(buffer0);

                if (
length == 312)
                {

                    
ushort type BitConverter.ToUInt16(buffer2);
                    
byte[] temp = new byte[16];
                    if (
type == 1542)
                    {
                        
MemoryStream MS = new MemoryStream(buffer);
                        
BinaryReader BR = new BinaryReader(MS);

                        
BR.ReadUInt16();
                        
BR.ReadUInt16();
                        
Username Encoding.Default.GetString(BR.ReadBytes(32));
                        
Username Username.Replace("\0""");
                        
BR.ReadBytes(36);
                        var 
PasswordArray BR.ReadBytes(32);
                        
LoaderEncryption.Decrypt(PasswordArray32);
                        
Password Encoding.Default.GetString(PasswordArray);
                        
Password Password.Replace("\0""");
                        
BR.ReadBytes(32);
                        
Server Encoding.Default.GetString(BR.ReadBytes(32));
                        
Server Server.Replace("\0""");
                        
BR.Close();
                        
MS.Close();
                    }
                }
            }
        }

        public 
byte[] ToArray()
        {
            throw new 
NotImplementedException();
        }
        public 
void Send(Client.GameState client)
        {
            throw new 
NotImplementedException();
        }
    }



افتح ملف Forward.cs

وبدله بده




كود:
using System;
using System.Text;

namespace 
MoDY.Network.AuthPackets
{
    public 
unsafe class Forward Interfaces.IPacket
    
{
        
byte[] Buffer;
        public 
enum ForwardType byte
        
{
            
Ready 2,
            
Ready2 3,
            
InvalidInfo 1,
            
Banned 25,
            
WrongAccount 57
        
}
        public 
Forward()
        {
            
Buffer = new byte[52];
            
Writer.WriteUInt16(520Buffer);
            
Writer.WriteUInt16(10552Buffer);
        }
        public 
uint Identifier
        
{
            
get { return BitConverter.ToUInt32(Buffer4); }
            
set Writer.WriteUInt32(value4Buffer); }
        }
        public 
ForwardType Type
        
{
            
get { return (ForwardType)(byte)BitConverter.ToUInt32(Buffer8); }
            
set Writer.WriteUInt32((byte)value8Buffer); }
        }
        public 
ushort Port
        
{
            
get { return BitConverter.ToUInt16(Buffer12); }
            
set Writer.WriteUInt16(value12Buffer); }
        }
        public 
string IP
        
{
            
get { return Encoding.Default.GetString(Buffer2016); }
            
set Writer.WriteString(value20Buffer); }
        }
        public 
byte[] ToArray()
        {
            return 
Buffer;
        }
        public 
void Deserialize(byte[] buffer)
        {

        }
        public 
void Send(Client.GameState client)
        {
            
client.Send(Buffer);
        }
    }


افتح كلاس LoaderEncryption.cs

وبدل الي جواها بده


كود:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 
MoDY.Network.Cryptography
{
    public class 
LoaderEncryption
    
{
        private static 
byte[] Key = { 1212215102011601931196531577137150225862241781842301477919416009923921813417913247155237245165245128144 };
        public static 
void Encrypt(byte[] arr)
        {
            
int length Key.Length;
            for (
int i 0arr.Lengthi++)
            {
                
arr[i] ^= Key[length];
                
arr[i] ^= Key[(1) % length];

            }
        }
        public static 
void Decrypt(byte[] arrint size)
        {
            
int length Key.Length;
            for (
int i 0sizei++)
            {
                
arr[i] ^= Key[(1) % length];
                
arr[i] ^= Key[length];






            }
        }
    }


لحد كده تمام

لو حملت الباتش ومرضيش يدخل السيرفير

افتح ملف server.cs

وابحث عن


كود:
#region GameServer|AuthServer 

اقفله من السالب وبدله بده

كود:
        #region GameServer|AuthServer
        
static void GameServer_OnClientReceive(byte[] bufferint lengthClientWrapper obj)
        {
            if (
obj.Connector == null)
            {
                
obj.Disconnect();
                return;
            }
            
Client.GameState Client obj.Connector as Client.GameState;
            if (
Client.Exchange)
            {
                
Client.Exchange false;
                
Client.Action 1;
                var 
crypto = new Network.Cryptography.GameCryptography(System.Text.Encoding.Default.GetBytes(Constants.GameCryptographyKey));
                
byte[] otherData = new byte[length];
                Array.
Copy(bufferotherDatalength);
                
crypto.Decrypt(otherDatalength);

                
bool extra false;
                
int pos 0;
                if (
BitConverter.ToInt32(otherDatalength 140) == 128)//no extra packet
                
{
                    
pos length 140;
                    
Client.Cryptography.Decrypt(bufferlength);
                }
                else if (
BitConverter.ToInt32(otherDatalength 176) == 128)//extra packet
                
{
                    
pos length 176;
                    
extra true;
                    
Client.Cryptography.Decrypt(bufferlength 36);
                }
                
int len BitConverter.ToInt32(bufferpos); pos += 4;
                if (
len != 128)
                {
                    
Client.Disconnect();
                    return;
                }
                
byte[] pubKey = new byte[128];
                for (
int x 0lenx++, pos++) pubKey[x] = buffer[pos];
                
string PubKey System.Text.Encoding.Default.GetString(pubKey);
                
Client.Cryptography Client.DHKeyExchange.HandleClientKeyPacket(PubKeyClient.Cryptography);
                if (
extra)
                {
                    
byte[] data = new byte[36];
                    
Buffer.BlockCopy(bufferlength 36data036);
                    
processData(data36Client);
                }
            }
            else
            {
                
processData(bufferlengthClient);
            }
        }
        private static 
void processData(byte[] bufferint lengthClient.GameState Client)
        {
            
Client.Cryptography.Decrypt(bufferlength);
            
Client.Queue.Enqueue(bufferlength);
            if (
Client.Queue.CurrentLength 1224)
            {
                
Console.WriteLine("[Disconnect]Reason:The packet size is too big. " Client.Queue.CurrentLength);
                
Client.Disconnect();
                return;
            }
            while (
Client.Queue.CanDequeue())
            {
                
byte[] data Client.Queue.Dequeue();
                
MsgHandler.Process(dataClient);
            }
        }
        static 
void GameServer_OnClientConnect(ClientWrapper obj)
        {
            
Client.GameState client = new Client.GameState(obj);
            
client.Send(client.DHKeyExchange.CreateServerKeyPacket());
            
obj.Connector client;
        }
        static 
void GameServer_OnClientDisconnect(ClientWrapper obj)
        {
            if (
obj.Connector != null)
                (
obj.Connector as Client.GameState).Disconnect();
            else
                
obj.Disconnect();
        }
        static 
void AuthServer_OnClientReceive(byte[] bufferint lengthClientWrapper arg3)
        {
            var 
player arg3.Connector as Client.AuthClient;

            
player.Cryptographer.Decrypt(bufferlength);

            
player.Queue.Enqueue(bufferlength);
            while (
player.Queue.CanDequeue())
            {
                
byte[] packet player.Queue.Dequeue();

                
ushort len BitConverter.ToUInt16(packet0);
                
ushort id BitConverter.ToUInt16(packet2);
                if (
len == 312)
                {

                    
player.Info = new Authentication();
                    
player.Info.Deserialize(packet);
                    
player.Account = new AccountTable(player.Info.Username);
                    
msvcrt.msvcrt.srand(player.PasswordSeed);

                    
Forward Fw = new Forward();


                    if (
player.Account.Password == player.Info.Password && player.Account.exists)
                        
Fw.Type Forward.ForwardType.Ready;
                    else
                        
Fw.Type Forward.ForwardType.InvalidInfo;


                    if (
IPBan.IsBanned(arg3.IP))
                    {
                        
Fw.Type Forward.ForwardType.Banned;
                        
player.Send(Fw);
                        return;
                    }

                    if (
Fw.Type == Network.AuthPackets.Forward.ForwardType.Ready)
                    {
                        
Fw.Identifier player.Account.GenerateKey();
                        
Kernel.AwaitingPool[Fw.Identifier] = player.Account;
                        
Fw.IP GameIP;
                        
Fw.Port GamePort;
                    }

                    
player.Send(Fw);
                }
            }
        }

        static 
void AuthServer_OnClientDisconnect(ClientWrapper obj)
        {
            
obj.Disconnect();
        }
        static 
void AuthServer_OnClientConnect(ClientWrapper obj)
        {
            
Client.AuthClient authState;
            
obj.Connector = (authState = new Client.AuthClient(obj));
            
authState.Cryptographer = new Network.Cryptography.AuthCryptography();
            
Network.AuthPackets.PasswordCryptographySeed pcs = new PasswordCryptographySeed();
            
pcs.Seed Kernel.Random.Next();
            
authState.PasswordSeed pcs.Seed;
            
authState.Send(pcs);
        }
        
internal static Client.GameState FindClient(string name)
        {
            return 
GamePool.FirstOrDefault(=> p.Player.LoweredName == name);
        }
        
#endregion 

عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع