تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[تمرين] حللني ان استطعت
#5
بعد فك الضغط وإصلاح عناوين الدوال المستوردة، البرنامج يبدأ من 0x0042006A. بتتبع أوامر التجميع (الأسملبي) يبدو أن البرنامج يقوم بالتالي
 
    char text[6] = "AT4RE";
    char textToPrint[6] = "";
    int a = 5;
    int i;
    for (i = 0; i <= a; i++) {
        textToPrint[i] = (char) (text[i] ^ a);
    }

    for (i = 0; i < a; i++) {
        text[i] = (char) (textToPrint[i] ^ a);
    }

    printf("%s", text);
    getchar();

البرنامج يقوم بعمل xor مع العدد 5 لكل حرف من حروف مصفوفة الحروف text ويخزنه في مصفوفة حروف ولنسمها textForPrint، ومن ثم يقوم بعمل  xor مع العدد 5 لكل حرف من حروف مصفوفة الحروف textForPrint ويتكب النتيجة في text. قيمة text لن تتغير لأن عملية xor مرتين مع نفس العدد لا تغير النتيجة أي
(x xor c) xor c = x

إذا كان البرنامج أكبر، فسنحتاج إلى كتابة decompressor عام.


ملاحظة: عند تتبع البرنامج ضع hardware break point عند 0x0042006A، لأن وضع software break point يغير من التعليمات المكتوبة في المنطقة التي سيقوم البرنامج بفك ضغطها.
أعضاء أعجبوا بهذه المشاركة : Cyperior , rce3033


الردود في هذا الموضوع
[تمرين] حللني ان استطعت - بواسطة overlap - 27-03-2021, 01:04 PM
RE: [تمرين] حللني ان استطعت - بواسطة siddigss - 28-03-2021, 02:42 PM
RE: [تمرين] حللني ان استطعت - بواسطة overlap - 27-04-2021, 02:34 PM
RE: [تمرين] حللني ان استطعت - بواسطة siddigss - 05-09-2021, 02:35 PM
RE: [تمرين] حللني ان استطعت - بواسطة overlap - 05-09-2021, 04:45 PM

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم