الفريق العربي للهندسة العكسية
anti-debug using job objects - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات البرمجة - Programming Forums (https://www.at4re.net/f/forum-5.html)
+--- قسم : البرمجة بلغة السى و السى بلس بلس ++C & C (https://www.at4re.net/f/forum-17.html)
+--- الموضوع : anti-debug using job objects (/thread-2666.html)



anti-debug using job objects - overlap - 26-03-2021

طريقة جميلة كمحاولة منع التنقيح عن طريق خيار Attach.
الطريقة المعتمدة هي انشاء job object للعملية الحالية و اعطائها ذاكرة محدودة...

رابط المقالة:
https://secret.club/2021/01/20/diet-process.html

اوامر المثال كاملة:
#include <ntdll.h>
#include <stdio.h>

int main() {
    HANDLE job = nullptr;
    NtCreateJobObject(&job,
                      MAXIMUM_ALLOWED,
                      nullptr);

    NtAssignProcessToJobObject(job,
                               NtCurrentProcess());

    JOBOBJECT_EXTENDED_LIMIT_INFORMATION limits;
    limits.ProcessMemoryLimit  = 0x1000;
    limits.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_PROCESS_MEMORY;

    NtSetInformationJobObject(job,
                              JobObjectExtendedLimitInformation,
                              &limits,
                              sizeof(limits));
    printf("Try to Attach me !\n");
    getchar();
    return 0;
}

المرفقات تحتوي على الملفات التنفيذية للنواتين 32 بت و 64 بت للتجربة...


RE: anti-debug using job objects - siddigss - 26-03-2021

حقا طريقة جميلة.
وبالطبع يمكننا تفاديها بالوقوف عند دالة NtSetInformationJobObject والتعديل على المدخل أو بالأحرى ما يؤشر إليه المؤشر (pointer).
في المثال المرفق (32 بت) بتعديل البايت رقم 0x26A من 01 إلى 00 (وهي جزء من قيمة limits.BasicLimitInformation.LimitFlags) يمكننا تفادي هذه الطريقة.