نمایش نتایج 1 تا 40 از 78

نام تاپیک: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #2
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326

    محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    یه چند وقتی دنبال روشهایی بودم که بتونه کار کرکرها را سخت تر کنه
    یه چندتاییش را با توضیحات و کارایی مربوطه اینجا مینویسم
    امیدوارم دوستان برنامه نویس از این سورس ها استفاده مربوطه را ببرن

    این 3-4تا برای شناسایی وجود دیباگر SoftIce هستن

    function IsDebuggerPresent: BOOL; stdcall; external 'kernel32.dll';

    function BoundsCheckerDetected: Boolean;
    begin
    try
    asm
    push ebp
    mov ebp, 'BCHK'
    mov ax, 4
    int 3
    cmp ax, 4
    jne @@softice_detected
    mov ax, 0
    jmp @@exit
    @@softice_detected:
    mov ax, 1
    @@exit:
    pop ebp
    end;
    except
    on E: EExternalException do
    begin
    result:=False;
    end else begin
    result:=true;
    end;
    end;
    end;


    function SoftIceVXDDetected: Boolean;
    begin
    try
    asm
    push esi
    push edi
    mov ax, $1684
    mov bx, $0202 // VXD ID for SoftIce
    xor di, di
    mov es, di
    int $2F
    mov ax, es
    add di,ax
    cmp di, 0
    jne @@softice_detected
    mov ax, 0
    jmp @@exit
    @@softice_detected:
    mov ax, 1
    @@exit:
    pop edi
    pop esi
    end;
    except
    // Not hooked
    result:=False;
    end;
    end;
    //------------
    function WinIceDetected: Boolean;
    begin
    try
    asm
    mov ah, $43
    int $68
    cmp ax, $F386
    jz @@winice_detected
    mov ax, 0
    jmp @@exit
    @@winice_detected:
    mov ax, 1
    @@exit:
    end;
    except
    // Not hooked
    result:=False;
    end;
    end;



    ///////////
    function MeltIceDetected: Boolean;
    var hIce: THandle;
    dwCount: Integer;
    const
    ICE_FILES: Array [0..3] of PChar = ('\\.\SICE', '\\.\NTICE', '\\.\SIWVID', '\\.\FROGICE');
    begin

    // Description: Detect the presence of SoftIce and many other memory resident
    // tools by attempting to load SoftIce related devices such its display
    // driver, or its access driver. Devices such as SICE, NTICE, SIWVID, FROGICE.
    result:=False;
    for dwCount:=0 to High(ICE_FILES) do
    begin
    hIce:=CreateFile(ICE_FILES[dwCount], GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, 0);
    if (hIce <> INVALID_HANDLE_VALUE) then
    begin
    CloseHandle(hIce);
    result:=True;
    break;
    end;
    end;
    end;
    ///////////
    اینطوری هم استفاده میشن :

    if SoftIceVXDDetected then Application.Terminate;
    if WinIceDetected then Application.Terminate;
    if BoundsCheckerDetected then Application.Terminate;
    if MeltIceDetected then Application.Terminate;
    if IsDebuggerPresent then Application.Terminate;
    البته میتونید بعد از تشخیص دیباگر کارهایی بدتری غیر از بستن برنامه هم بکنید....;)

    آنتی دامپ:
    کد زیر کارش تغییر ایمج بیس برنامه هست که از Dump گرفتن برنامه جلوگیری میکنه


    procedure FOLL();
    begin
    asm
    mov eax, fs:[$30]
    mov eax, [eax+$C]
    mov eax, [eax+$C]
    add dword ptr [eax+$20], $2000
    end;
    end;
    البته به این نکته توجه داشته باشین که جهت خنثی کردن این کد با نرم افزار LoredPe در قسمت CorectImageBase قابل انجام هست بنابراین توی یک تایمر در نرم افزار میتونید هر 1 میلی ثانیه یکبار این پروسه را اجرا کنید و شاهد سرویس شدن کرکر محترم در گرفتن دامپ باشید .( این مرحله را از خودم در ورکردم ) یکی از راههای دور زدنش از کار انداختن تایمر با thread هست که توی برنامه داره این کار را انجام میده ! ( تقریبا روش مطمئنیه )

    AntiOlly
    :
    برای مقابله با نرم افزار دیباگرOlyDbg از روشهایی مثل FindWindow استفاده کنید چنانچه یکی از پنجره ها اسم olly توش بود برنامه را خاتمه بدین ( برای این روش توی olly دیباگر یکسری پلاگین هست ، که از تغییر عنوان پنجره تا هوک کردن این تابع استفاده میشه )
    یا از نرم افزار آنتی olly که به همین پست ضمیمه میکنم استفاده کنید که کمی به امنیت برنامه ها در مقابل این دیباگر خوش دست کمک میکنه.
    استفاده از توابع IsDebugerPereset هم توضیح ندم سنگین تر هست.

    در عین حال میتونید از باگی که در Olly در موقع صدا زدن تابع OutputDebugString هست هم برای آورفلو و نهایتن کرش کردن این دیباگر موقع باز کردن برنامه تان استفاده کنید.
    تمامی موارد فوق قابل دور زدن میباشد ، فقط جنبه تقویت قفل میباشد.
    حسش بود یه چندتایی روش دیگه را هم مینویسم....
    نکته : این کدها را در آخر سر به برنامه تان اضافه کنید چون موقع اجرای مستقیم ممکنه خودIde قاط بزنه ...
    بعد از اضافه کردن این توابع برنامه را فقط کامپایل کنید ، و مستقل از ide اون را به راحتی اجرا کنید ( دیباگر داخلی ide فعال میشه )
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله joker : یک شنبه 06 آذر 1390 در 20:37 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •