منتدي اكواد

منتدي اكواد (https://code.vpscairo.com/index.php)
-   البرامج والودرات (https://code.vpscairo.com/forumdisplay.php?f=39)
-   -   لودر لتشغيل سورسات ال 3d قبل البروتوا (https://code.vpscairo.com/showthread.php?t=76)

محمد ياسر 2019-04-20 11:27 AM

لودر لتشغيل سورسات ال 3d قبل البروتوا
 

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

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

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





افتح ملف Authentication.cs

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

كود PHP:

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

وبدله بده



كود PHP:

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

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

كود PHP:

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

وابحث عن

كود PHP:

#region GameServer|AuthServer 

اقفله من السالب وبدله بده
كود PHP:

        #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 

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

Amr Khalid 2019-04-30 10:39 PM

رد: لودر لتشغيل سورسات ال 3d قبل البروتوا
 
تسلم ي صحبي

etetoo2015 2019-05-19 06:22 AM

رد: لودر لتشغيل سورسات ال 3d قبل البروتوا
 
تسلم يا صاحبي

ابو حمزه9 2019-07-09 10:51 AM

رد: لودر لتشغيل سورسات ال 3d قبل البروتوا
 


شكراً ياحزم تسلم إيديك :)


anwer1 2019-07-09 12:21 PM

رد: لودر لتشغيل سورسات ال 3d قبل البروتوا
 
عاش يا حازم

MohamedModyAdel 2019-07-12 01:34 AM

رد: لودر لتشغيل سورسات ال 3d قبل البروتوا
 
عاش ي ستاز

بشيغلاشمغ 2019-07-13 02:47 PM

رد: لودر لتشغيل سورسات ال 3d قبل البروتوا
 
جميل

youssefabdelmanam 2019-07-14 06:30 AM

رد: لودر لتشغيل سورسات ال 3d قبل البروتوا
 
thanks

HBESA 2019-09-26 06:35 PM

رد: لودر لتشغيل سورسات ال 3d قبل البروتوا
 
تسلم

Diego 2019-10-06 04:23 AM

رد: لودر لتشغيل سورسات ال 3d قبل البروتوا
 
عاااش


الساعة الآن 12:05 AM

مرحبا بكم في منتدي اكواد لتطوير الالعاب