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

الردود
1

المشاهدات
2694
 
Osama
( :: عضو متقدم :: )

Osama is on a distinguished road

    غير متواجد

المشاركات
94

+التقييم
0.02

تاريخ التسجيل
Mar 2013

الاقامة

نظام التشغيل

رقم العضوية
2549
09-03-2018, 09:13 AM
المشاركة 1 
#1  
Thumbs up حماية للسيرفر من برامج الغش وبرامج الهكر
حماية كونكر

حماية للسيرفر برامج الغش وبرامج p_976ap5ig1.png

أليوم بإذن الله حنشرح اهم حاجة على ألإطلاق المفروض تكون موجوده
في سورسك وسيرفرك بشكل عام وهي " ألحماية ".


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

حنروح على الورلد ونستخدم فويد


كود:
void CharactersCallback

ونفتح ريجيون جديد ونحط فيه الشرط بتاعنا


كود:
if (client.Entity.NobilityRank == NobilityRank.King && client.Entity.BattlePower 405

ونضيف تحت الأمر الي هيتنفذ لو الشرط اتحقق


كود:
ConquerItem[] inventory = new ConquerItem[client.Inventory.Objects.Length]; 
                    
client.Inventory.Objects.CopyTo(inventory0); 

                    foreach (
ConquerItem item in inventory
                    { 
                        
client.Inventory.Remove(itemGame.Enums.ItemUse.Remove); 
                    } 
                      
                    
client.Equipment.Remove(1); 
                    
client.Equipment.Remove(2); 
                    
client.Equipment.Remove(3); 
                    
client.Equipment.Remove(4); 
                    
client.Equipment.Remove(5); 
                    
client.Equipment.Remove(6); 
                    
client.Equipment.Remove(7); 
                    
client.Equipment.Remove(8); 
                    
client.Equipment.Remove(9); 
                    
client.Equipment.Remove(10); 
                    
client.Equipment.Remove(11); 
                    
client.Equipment.Remove(12); 
                    
client.Equipment.Remove(18); 
                    
client.Equipment.Remove(19); 
                    
client.Disconnect(); 


دا مثال بسيط والمعظم عارفه طيب دلوقتي أنا عاوز ان الأتاك ميزيدش عن 60 الف مثلآ هنضيف الشرط


كود:
if (client.Entity.MaxAttack >= 60000 || client.Entity.MinAttack >= 60000
                { 

ونضيف الأمر الي هيتنفذ تحته



كود:
client.Disconnect(); 
                } 

شرطنا هنا أن لو الماكس أتاك او الميني زاد عن 60 الف الأيميل يقفل طبعآ تقدر تضيف أي أمر انت عاوز تعمله زي البان او الحظر مثلآ نفس النظام مع الدفنس او الأتش بي وكل القيم بتاعت الشخصيه تقدر تحددهم .
دلوقتي الجزء المتعلق بالأيتيم يعني ازاي نخلي الأيتيم مياخدش غير القيمه بتاعته هنضيف دي في Entity أو Player عشان نستخدمها


كود:
public ConquerItem item

وهنضيف في الورلد الكود دا



كود:
tem.Bless || client.Entity.item.Plus 12 || client.Entity.item.Enchant 255
                { 
                    
client.Disconnect(); 
                } 

الكود بيمنع ان الدامج يزيد عن 7 و البلاص عن 12 والاتش بي عن 255 ملحوظه : أنا لسه عامل الأكواد دي حالآ مجربتهاش .. يعني لو احتاجت تعديل سيبه في تعلق
دلوقتي الـسبيد هاك طبعآ تقدر تمنعه لو عرفت أقصي عدد نطات للأكونت في الثانيه وأقل عدد كمان لازم الأتجاهات والنظام القديم دا لكن هديك النظام القديم والجديد القديم .. هتعمل كلاس جديد وتحط فيه الأكواد دي


كود:
using System

namespace 
TroZena 

    public 
unsafe class AntiSpeedHack 
    

        static 
bool UnInAttack(Client.GameState clientint Value
        { 
            if (
Time32.Now <= client.Entity.AttackStamp.AddMilliseconds(1650)) 
            { 
                return 
false
            } 
            return 
true
        } 
        static 
bool UsingSH(int ValueGame.Enums.ConquerAngle Facing
        { 
            switch (
Facing
            { 
                case 
Game.Enums.ConquerAngle.North
                    { 
                        if (
Value 640
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.NorthEast
                    { 
                        if (
Value 630
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.NorthWest
                    { 
                        if (
Value 625
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.South
                    { 
                        if (
Value 620
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.East
                    { 
                        if (
Value 640
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.West
                    { 
                        if (
Value 635
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.SouthWest
                    { 
                        if (
Value 645
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.SouthEast
                    { 
                        if (
Value 645
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                default: 
                    { 
                        
Console.WriteLine("UnKnow Facing [Speed Hack]!" Facing.ToString()); return true
                    } 
            } 
            return 
false
        } 
        public static 
void Process(Client.GameState clientTime32 Now
        { 
            if (!
client.FTbode
            { 
                
client.FTbode true
                
client.bodeSHStamp Time32.Now
            } 
            else 
            { 
                var 
Value = (Time32.Now.Value client.bodeSHStamp.Value); 
                if (
UsingSH(Valueclient.Entity.Facing)) 
                { 
                    if (
UnInAttack(clientValue)) 
                    { 
                        
Console.WriteLine("SpeedHack Detected : " client.Entity.Name " | Info | Value : " Value " Facing : " client.Entity.Facing); 
                        
client.Disconnect(); 
                    } 
                } 
                
client.bodeSHStamp Time32.Now
            } 
        } 
    } 


دا شكل الكود القديم نشرح . الكود الأول


كود:
static bool UnInAttack(Client.GameState clientint Value
        { 
            if (
Time32.Now <= client.Entity.AttackStamp.AddMilliseconds(1650)) 
            { 
                return 
false
            } 
            return 
true
        } 


دا خاص بالأتاك .. ومضمون الكود انه يقفل الأكونت لو كان أخر وقت ضرب فيه وحش أو شخصيه أقل من ثانيه و نص تقريبآ الكود دا


كود:
AddMilliseconds(1650)) 

دا بيدي مهله قيمتها 1650 ميلي ثانيه بعد أخر مره الأكونت قتل او هاجم وحش او شخصيه الثانيه = 1000 ميلي ثانيه تقدر تزود أو تنقص القيمه وتظبطها علي الوضع المناسب لسيرفرك
الكود التاني


كود:
static bool UsingSH(int ValueGame.Enums.ConquerAngle Facing
        { 
            switch (
Facing
            { 
                case 
Game.Enums.ConquerAngle.North
                    { 
                        if (
Value 640
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.NorthEast
                    { 
                        if (
Value 630
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.NorthWest
                    { 
                        if (
Value 625
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.South
                    { 
                        if (
Value 620
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.East
                    { 
                        if (
Value 640
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.West
                    { 
                        if (
Value 635
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.SouthWest
                    { 
                        if (
Value 645
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                case 
Game.Enums.ConquerAngle.SouthEast
                    { 
                        if (
Value 645
                        { 
                            return 
true
                        } 
                        break; 
                    } 
                default: 
                    { 
                        
Console.WriteLine("UnKnow Facing [Speed Hack]!" Facing.ToString()); return true
                    } 
            } 
            return 
false
        } 

دا خاص بالأتجاهات شمال جنوب شرق غرب يستحسن أنك تستغني عن الكود دا الا لو عارف الأتجاهات بالظبط ونبدله بأخر حركه للشخصيه هنعيد تكويده تاني عشان يبقا بالشكل دا وهنستخدم في Entity الأكواد دي


كود:
public Time32 LastClientJump
        public 
Time32 LastMove

و كمان دول لو مش موجودين عندك في GameClient Or GameState


كود:
public Time32 bodeSHStamp
        public 
bool FTbode false

هيبقا عندنا الكود او الكلاس بالشكل الجديد كدا


كود:
using System

namespace 
TroZenA 

    public 
unsafe class AntiSpeedHack 
    

        static 
bool UnInAttack(Client.GameClient clientint Value
        { 
            if (
Time32.Now <= client.Entity.AttackStamp.AddMilliseconds(1650)) 
            { 
                return 
false
            } 
            return 
true
        } 
        static 
bool UsingSH(Client.GameClient clientint Value
        { 
            if (
Time32.Now <= client.Entity.LastClientJump.AddMilliseconds(client.LastJumpTime) || Time32.Now <= client.Entity.LastMove.AddMilliseconds(client.LastJumpTime)) 
            { 
                return 
false
            } 
            return 
true;  
        } 
        public static 
void Process(Client.GameClient clientTime32 Now
        { 
            if (!
client.FTbode
            { 
                
client.FTbode true
                
client.bodeSHStamp Time32.Now
            } 
            else 
            { 
                var 
Value = (Time32.Now.Value client.bodeSHStamp.Value); 
                if (
UsingSH(clientValue)) 
                { 
                    if (
UnInAttack(clientValue)) 
                    { 
                        
Console.WriteLine("SpeedHack Detected : " client.Entity.Name " | Info | Value : " Value " Facing : " client.Entity.Facing); 
                        
client.Disconnect(); 
                    } 
                } 
                
client.bodeSHStamp Time32.Now
            } 
        } 
    } 



طيب هو كدا مجرد كلاس موجود بس مش شغال لأنه غير مرتبط بأي ملف تنفيذي في السورس زي الورلد او البروجرام أو الباكتات طيب احنا نقدر نشغله بطريقتين الأولي : ممكن تختلف عن ناس لأنها من الباكت هاندلر الأختلاف في اسم الفويد سورس زي تروزينا هتلاقي الأسم بتاع الفويد مثلآ



كود:
void PlayerJump(Data generalDataClient.GameClient client


هتضيف تحته الأمر دا



كود:
.DragonCyclone) && !client.Entity.OnSuperCyclone() && !client.Entity.Transformed
            { 
                
AntiSpeedHack.Process(clientNow);            
            } 


والكود بيقول لو الأكونت مش في حالة السرعه زي الاكس بي بتاع التروجان او اي اكس بي اسكل لأنها بتخلي الأكونت سريع يبقا ينفذ الأمر



كود:
AntiSpeedHack.Process(clientNow); 


والي بيروح يشوف معدل الحركه بتاع الكلنت لو لقاها أكبر من الي محددينه هيكتب في الكونصول أسم الاكونت الي استخدم الهاك وهيقفل الأكونت



كود:
Console.WriteLine("SpeedHack Detected : " client.Entity.Name " | Info | Value : " Value " Facing : " client.Entity.Facing); 
                        
client.Disconnect(); 


لو عاوز طريقه تانيه لتشغيل الكود يبقا هتروح الورلد زي أكود التشيك تحت الفويد الي حددناه قبل كدا وتضيف الكود دا برضو



كود:
                if (!client.Entity.OnCyclone() && !client.Entity.ContainsFlag(Update.Flags.Ride) && !client.Entity.OnOblivion() && !client.Entity.OnSuperman() && !client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone) && !client.Entity.OnSuperCyclone() && !client.Entity.Transformed
                { 
                    
AntiSpeedHack.Process(clientNow); 
                } 
                
#endregion 


دي كانت مجرد فكره لمنع الهاك وتقدروا تطوروها وتستخدموها عشان تقفل أي هاك يقابلك كل الي هتعمله هتفهم شغل الهاك ويقدر يعمل ايه بالظبط وتقفل عليه الطريق وتسد الثغرات الي في السورس لو في أي أقتراح أو طلب سيبه في مشاركه فى الموضوع


الرجاء التقييم لقد بذلت اقصى جهدى فى هذا الموضوع

حماية للسيرفر برامج الغش وبرامج p_9767qo3t1.png



plhdm ggsdvtv lk fvhl[ hgya ,fvhl[ hgi;v plhdm ;,k;v