ازيكم يا شباب انا انهردا جلتلكم لورد من كونكر طبعا اللورد دا
مش من تكويدى انا جيبوا من تيم اكسور
اللورد دا من تكويد
CorrM
اللورد اسمو
CorrMLoader
التحميل اهو
اولا هتحمل ملفات اللوردر
و تحطه فى الـكلينت على طول و توافق على الاستبدال
البورت و الهوست فى نفس الملف الى هنشرحه تحت
[ ملاحظه ] احذف هذا الملف [ csv3config.ini ] لو موجود عندك و اترك [ CSV3Hook.dll ]
,,
ثانيا هنفتح ملف [ CorrMconf.ini ]
فى الملف يوجد قيمه بأسم [ Buf ] دى تحط فيها اى رقم من 1 الى 254 بس ابعد عن 144 لانها مش هتغير شئ لو بقت 144
و تحطه فى الـكلينت على طول و توافق على الاستبدال
البورت و الهوست فى نفس الملف الى هنشرحه تحت
[ ملاحظه ] احذف هذا الملف [ csv3config.ini ] لو موجود عندك و اترك [ CSV3Hook.dll ]
,,
ثانيا هنفتح ملف [ CorrMconf.ini ]
فى الملف يوجد قيمه بأسم [ Buf ] دى تحط فيها اى رقم من 1 الى 254 بس ابعد عن 144 لانها مش هتغير شئ لو بقت 144
فى الملف هتلافى القيمه [ AmountProg ] دى قيمتها هتغيرها على حسب الكلام الى هتقراه دلوقتى
تحت القيمه [ AmountProg ] هتحط القيم الى انتا عاوزها بنفس الشكل دا
Prog1=notepad.exe
Prog2=calc.exe
Prog3=cmc.exe
فى الحاله دى هنخلى قيمه [ AmountProg ] تبقى [ 3 ]
ننتقل للسورس بقى
فى السورسات الجديده الى شبه سورس اسلام رضا
هنعمل الاتى
الملف [ Server.cs ]
ابحث عن [ AuthServer_OnClientReceive ] و بدله كلو بدا
static void AuthServer_OnClientReceive(byte[] buffer, int length, ClientWrapper arg3)
{
// CorrMLoader
bool IsCorrM = false;
int CorrM_BUF = 50;
if (buffer[4] == CorrM_BUF)
IsCorrM = true;
else
IsCorrM = false;
buffer[4] = 144;
var player = arg3.Connector as Client.AuthClient;
player.Cryptographer.Decrypt(buffer, length);
player.Queue.Enqueue(buffer, length);
while (player.Queue.CanDequeue())
{
byte[] packet = player.Queue.Dequeue();
ushort len = BitConverter.ToUInt16(packet, 0);
ushort id = BitConverter.ToUInt16(packet, 2);
if (len == 312)
{
player.Info = new Authentication();
player.Info.Deserialize(packet);
player.Account = new AccountTable(player.Info.Username);
msvcrt.msvcrt.srand(player.PasswordSeed);
if (!LoginBruteForce.AcceptJoin(arg3.IP))
{
Console.WriteLine("Client -> ", player.Info.Username, " was bloked Adrres ", arg3.IP, "!");
arg3.Disconnect();
break;
}
Database.ServerInfo Server = null;
Forward Fw = new Forward();
if (ServerData.Servers.TryGetValue("Horror-Co", out Server))
{
// CorrMLoader
if (IsCorrM)
{
// It's Running With CorrMLoader !! :)
if (!player.Account.exists)
{
Fw.Type = Forward.ForwardType.WrongAccount;
player.Send(Fw);
}
if (player.Account.Password == player.Info.Password && player.Account.exists)
{
Fw.Type = Forward.ForwardType.Ready;
}
else
{
LoginBruteForce.ClientRegistred(arg3.IP);
Fw.Type = Forward.ForwardType.InvalidInfo;
}
if (IPBan.IsBanned(arg3.IP) || player.Account.Banned)
{
Fw.Type = Forward.ForwardType.Banned;
player.Send(Fw);
return;
}
if (Fw.Type == Network.AuthPackets.Forward.ForwardType.Ready)
{
Client.GameState aClient;
if (Kernel.GamePool.TryGetValue(Fw.Identifier, out aClient))
{
Fw.Type = Forward.ForwardType.InvalidInfo;
aClient.Disconnect();
player.Send(Fw);
return;
}
Fw.Identifier = player.Account.GenerateKey();
Kernel.AwaitingPool[Fw.Identifier] = player.Account;
Fw.IP = GameIP;
Fw.Port = GamePort;
Console.WriteLine("{0} has logged on Server: {1}! IP:[{2}] Country:[{3}]", player.Info.Username, player.Info.Server, player.IP, Kernel.Lookup.lookupCountryName(player.IP));
}
player.Send(Fw);
}
else
{
// It's Not Running With CorrMLoader !! :(
Fw.Type = Forward.ForwardType.WrongAccount;
player.Send(Fw);
}
}
}
}
}
السورسات العاديه
فى ملف [ Program.cs ]
هنبدل الفويد دا [ AuthServer_OnClientReceive ] بـ دا
static void AuthServer_OnClientReceive(byte[] buffer, int length, ClientWrapper arg3)
{
// CorrMLoader
bool IsCorrM = false;
int CorrM_BUF = 50;
if (buffer[4] == CorrM_BUF)
IsCorrM = true;
else
IsCorrM = false;
buffer[4] = 144;
var player = arg3.Connector as Client.AuthClient;
player.Cryptographer.Decrypt(buffer, length);
player.Queue.Enqueue(buffer, length);
while (player.Queue.CanDequeue())
{
byte[] packet = player.Queue.Dequeue();
ushort len = BitConverter.ToUInt16(packet, 0);
ushort id = BitConverter.ToUInt16(packet, 2);
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();
// CorrMLoader
if (IsCorrM)
{
// It's Running With CorrMLoader !! :)
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);
}
else
{
// It's Not Running With CorrMLoader !! :(
Fw.Type = Forward.ForwardType.InvalidInfo;
player.Send(Fw);
}
}
}
}
التغير هيكون فـ المتغير الى اسمه [ CorrM_BUF ] الرقم الى بيساويه لازم يكون هو نفس القيمه [ Buf ] الى فى ملف [ CorrMconf.ini ]
[ لازم يكونو شبه بعض و الا مش هيدخل الاكونت ابدا ]
,,
طبعا استخدام لوردر خاص بينا ليه فوايد بس طبعا كلنا عارفين انه مهما عملنا ممكن يتغير و بطرق كتير
طالما مش مرتبط بالسورس او بمعنى اصح السورس مش بيتحقق من اللوردر عشان كدا انا فكرت وبرمجته مخصوص للامر دا
,,
الشئ التانى :
( انا كاتب فى الكود تعليقات بدل على المكان الى فيه التحقق و اذا كان فعلا تم استخدام اللوردر بتاعنا ولا لا فـ بالتالى ممكن على اساس الشرط دا تبرمج حاجات كتير و افكار اكتر و مميزات ممكن تضيفها براحتك ]
,,
الشئ الثالث :
انا فعلا كنت ناوى احتفظ باللوردر دا لنفسى وللسيرفر الى ان شاء الله ناوى افتحه بس الصراحه انا استفدت منكم كتير و قولت انزل حاجه
كويسه تليق بالمنتدى و الرجاله الجميله الى فيه.
,,
علشان خطرى الى عنده كلمه حلوه يكتبها اكيد هتشجعنى, غير كدا ابوس ايدك مش تحبطنى
مواضيع ذات صلة
ليست هناك تعليقات:
إرسال تعليق