ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی “ ورود به حساب” کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمیشود، اینجا را کلیک کنید.





نمایش نتایج: از 1 به 5 از 5
  1. #1
    sina
    sina
    Guest

    آموزش هاي مرتبط با windbg

    با سلام
    سعي ميكنيم در اين تاپيك تا اونجايي كه ميتونم و بلدم كار با ديباگر مايكروسافت رو آموزش بدم .




    اين ديباگر در هنگام آناليز كردن باگ ها خيلي ميتونه بهمون كمك كنه

    خوب ما يه برنامه آسيب پذير رو خودمون مينويسيم و در طول آموزش هاي اين تاپيك ازش استفاده ميكنيم

    کد:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    int main (int argc, char **argv){
        char buff[100];
        
        if(argc>1){
           strcpy(buff,argv[1]);
        }
        
        printf("%s", buff);
        
        _getch();
        return 0;
    
    }

    بسيار خوب ، ما ترتيب خاصي نداريم ! سعي ميكنم هر چي كه بدردميخوره رو اينجا بنويسم ، شما هم اگه خواستين ادامه بدين لطفا مثل من جلو برين ( با مثال !*)

    خوب هنگامي كه يك برنامه رو در اين ديباگر باز كردين ، براي شروع شدن ديباگينگ از كامند g استفاده كنيد :
    بطور مثال من برنامه خودمون رو باز ميكنم : ( موقع اجرا شدن در بخش Argument يه چند تا كاراكتر رو بعنوان ورودي ميدم )


    کد:
    Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    CommandLine: "C:\Documents and Settings\Dear-User\My Documents\d3c0der.exe" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAa
    Symbol search path is: *** Invalid ***
    ****************************************************************************
    * Symbol loading may be unreliable without a symbol search path.           *
    * Use .symfix to have the debugger choose a symbol path.                   *
    * After setting your symbol path, use .reload to refresh symbol locations. *
    ****************************************************************************
    Executable search path is: 
    ModLoad: 00400000 00406000   image00400000
    ModLoad: 7c900000 7c9af000   ntdll.dll
    ModLoad: 7c800000 7c8f6000   C:\WINDOWS\system32\kernel32.dll
    ModLoad: 77c10000 77c68000   C:\WINDOWS\system32\msvcrt.dll
    (244.a94): Break instruction exception - code 80000003 (first chance)
    eax=00341eb4 ebx=7ffde000 ecx=00000004 edx=00000010 esi=00341f48 edi=00341eb4
    eip=7c90120e esp=0022fb20 ebp=0022fc94 iopl=0         nv up ei pl nz na po nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll - 
    ntdll!DbgBreakPoint:
    7c90120e cc              int     3
    0:000> g
    (244.a94): Access violation - code c0000005 (first chance)
    First chance exceptions are reported before any exception handling.
    This exception may be expected and handled.
    eax=7efefefe ebx=00004000 ecx=003e25bc edx=41414141 esi=007e6ea8 edi=0022fffd
    eip=77c460c1 esp=0022fec8 ebp=0022ff78 iopl=0         nv up ei pl zr na pe nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\system32\msvcrt.dll - 
    msvcrt!strcat+0x81:
    77c460c1 8917            mov     dword ptr [edi],edx  ds:0023:0022fffd=41000000

    خوب حالا براي ديدن مقدار رجيستر ها ميتوني با دستور d اين كا رو انجام بديم ، مثلا اگه بزنيم d esp هر اطلاعاتي كه در Stack pointer هست رو به ما ميده :

    کد:
    0:000> d esp
    0022fec8  58 f5 3c 01 da 12 40 00-00 ff 22 00 bb 24 3e 00  X.<...@..."..$>.
    0022fed8  78 2a 3e 00 b8 12 40 00-20 ff 22 00 00 e9 01 00  x*>...@. .".....
    0022fee8  c0 01 91 7c 48 fe 22 00-bb 01 91 7c 3c ff 22 00  ...|H."....|<.".
    0022fef8  00 e9 90 7c 10 00 00 00-41 41 41 41 41 41 41 41  ...|....AAAAAAAA
    0022ff08  41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    0022ff18  41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    0022ff28  41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
    0022ff38  41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA 41


    41 همون هگزادسيمال حرف A هست كه ما بعنوان ورودي به برنامه داديم ! همون طور كه ميبينيد به پشته رفته . . .

    براي Disassemb كردن هم ميتونيم آدرس دهي داشته باشيم ، يا اين كه صرفا يك آدرس رو Disassemb كنيم يا يك رجيستر رو !
    واسه هر سه تا مثال ميزنم ، اول بين دو تا آدرس :



    کد:
    0:000> u 77c460c1 77c46131
    msvcrt!strcat+0x81:
    77c460c1 8917            mov     dword ptr [edi],edx
    77c460c3 83c704          add     edi,4
    77c460c6 bafffefe7e      mov     edx,7EFEFEFFh
    77c460cb 8b01            mov     eax,dword ptr [ecx]
    77c460cd 03d0            add     edx,eax
    77c460cf 83f0ff          xor     eax,0FFFFFFFFh
    77c460d2 33c2            xor     eax,edx
    77c460d4 8b11            mov     edx,dword ptr [ecx]
    77c460d6 83c104          add     ecx,4
    77c460d9 a900010181      test    eax,81010100h
    77c460de 74e1            je      msvcrt!strcat+0x81 (77c460c1)
    77c460e0 84d2            test    dl,dl
    77c460e2 7434            je      msvcrt!strcat+0xd8 (77c46118)
    77c460e4 84f6            test    dh,dh
    77c460e6 7427            je      msvcrt!strcat+0xcf (77c4610f)
    77c460e8 f7c20000ff00    test    edx,0FF0000h
    77c460ee 7412            je      msvcrt!strcat+0xc2 (77c46102)
    77c460f0 f7c2000000ff    test    edx,0FF000000h
    77c460f6 7402            je      msvcrt!strcat+0xba (77c460fa)
    77c460f8 ebc7            jmp     msvcrt!strcat+0x81 (77c460c1)
    77c460fa 8917            mov     dword ptr [edi],edx
    77c460fc 8b442408        mov     eax,dword ptr [esp+8]
    77c46100 5f              pop     edi
    77c46101 c3              ret
    77c46102 668917          mov     word ptr [edi],dx
    77c46105 8b442408        mov     eax,dword ptr [esp+8]
    77c46109 c6470200        mov     byte ptr [edi+2],0
    77c4610d 5f              pop     edi
    77c4610e c3              ret
    77c4610f 668917          mov     word ptr [edi],dx
    77c46112 8b442408        mov     eax,dword ptr [esp+8]
    77c46116 5f              pop     edi
    77c46117 c3              ret
    77c46118 8817            mov     byte ptr [edi],dl
    77c4611a 8b442408        mov     eax,dword ptr [esp+8]
    77c4611e 5f              pop     edi
    77c4611f c3              ret
    77c46120 cc              int     3
    77c46121 cc              int     3
    77c46122 cc              int     3
    77c46123 cc              int     3
    77c46124 cc              int     3
    msvcrt!strdup:
    77c46125 8bff            mov     edi,edi
    77c46127 55              push    ebp
    77c46128 8bec            mov     ebp,esp
    77c4612a 57              push    edi
    77c4612b 8b7d08          mov     edi,dword ptr [ebp+8]
    77c4612e 85ff            test    edi,edi
    77c46130 742e            je      msvcrt!strdup+0x3b (77c46160)
  2. 2
  3. #2
    sina
    sina
    Guest
    Disassemb كردن يك آدرس :

    0:000> u 0022fef8
    0022fef8 00e9 add cl,ch
    0022fefa 90 nop
    0022fefb 7c10 jl 0022ff0d
    0022fefd 0000 add byte ptr [eax],al
    0022feff 004141 add byte ptr [ecx+41h],al
    0022ff02 41 inc ecx
    0022ff03 41 inc ecx
    0022ff04 41 inc ecx


    Disassemb كردن يك رجيستر :

    0:000> u esp
    0022fec8 58 pop eax
    0022fec9 f5 cmc
    0022feca 3c01 cmp al,1
    0022fecc da12 ficom dword ptr [edx]
    0022fece 40 inc eax
    0022fecf 0000 add byte ptr [eax],al
    0022fed1 ff22 jmp dword ptr [edx]
    0022fed3 00bb243e0078 add byte ptr [ebx+78003E24h],bh



    خوب براي ديدن Modules هايي كه لود شدند ، از كامند lmf استفاده ميكنيم :


    0:000> lmf
    start end module name
    00400000 00406000 image00400000 image00400000
    77c10000 77c68000 msvcrt C:\WINDOWS\system32\msvcrt.dll
    7c800000 7c8f6000 kernel32 C:\WINDOWS\system32\kernel32.dll
    7c900000 7c9af000 ntdll ntdll.dll
  4. 1
  5. #3
    sina
    sina
    Guest
    خوب بريم پارت دوم
    يه پلاگين خيلي جالب رو ميخوام معرفي كنم
    خيلي وقتا هست كه ميخوايم بدونيم برنامه ايي كه توش آسيب پذيري پيدا كرديم قابل اكسپلويت شدن هست يا نه ؟!

    اين پلاگين موقع ديباگ ، وقتي كامند g ر وزدين ( يعني ران شد ) و Access violation گرفتيد ، اين كامند ها رو بزنيد :

    0:000> g
    (8c.ba8): Access violation - code c0000005 (first chance)
    First chance exceptions are reported before any exception handling.
    This exception may be expected and handled.
    eax=7efefefe ebx=00004000 ecx=003e25bc edx=41414141 esi=007eb30c edi=0022fffd
    eip=77c460c1 esp=0022fec8 ebp=0022ff78 iopl=0 nv up ei pl zr na pe nc
    cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246
    *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\system32\msvcrt.dll -
    msvcrt!strcat+0x81:
    77c460c1 8917 mov dword ptr [edi],edx ds:0023:0022fffd=41000000
    0:000> !load msec.dll
    0:000> !exploitable
    Exploitability Classification: EXPLOITABLE
    Recommended Bug Title: Exploitable - User Mode Write AV starting at msvcrt!strcat+0x0000000000000081 (Hash=0x397c3d57.0x7134571f)

    User mode write access violations that are not near NULL are exploitable.


    مقداري كه مقابل Exploitability Classification قرار گرفته ، وضعيت رو نشون ميده ، كه در مثال بالا به وضوح ميتونيد ببينيد !


    براي نمايش پشته از اين كامند ميتونيد استفاده كنيد :

    0:000> kd
    0022ff78 41414141
    0022ff7c 41414141
    0022ff80 41414141
    0022ff84 41414141
    0022ff88 41414141
    0022ff8c 41414141
    0022ff90 41414141
    0022ff94 41414141
    0022ff98 41414141
    0022ff9c 41414141
    0022ffa0 41414141
    0022ffa4 41414141
    0022ffa8 41414141
    0022ffac 41414141
    0022ffb0 41414141
    0022ffb4 41414141
    0022ffb8 41414141
    0022ffbc 41414141
    0022ffc0 41414141
    0022ffc4 41414141


    نمايش stack frame

    0:000> .frame
    00 0022ff78 41414141 msvcrt!strcat+0x81


    نمايش پشته براي همه thread ها


    0:000> !uniqstack
    Processing 1 threads, please wait

    . 0 Id: 8c.ba8 Suspend: 1 Teb: 7ffdf000 Unfrozen
    Start: *** ERROR: Module load completed but symbols could not be loaded for image00400000
    image00400000+0x1220 (00401220)
    Priority: 0 Priority class: 32 Affinity: 3
    ChildEBP RetAddr
    WARNING: Stack unwind information not available. Following frames may be wrong.
    0022ff78 41414141 msvcrt!strcat+0x81
    0022ff7c 41414141 0x41414141
    0022ff80 41414141 0x41414141
    0022ff84 41414141 0x41414141
    0022ff88 41414141 0x41414141
    0022ff8c 41414141 0x41414141
    0022ff90 41414141 0x41414141
    0022ff94 41414141 0x41414141
    0022ff98 41414141 0x41414141
    0022ff9c 41414141 0x41414141
    0022ffa0 41414141 0x41414141
    0022ffa4 41414141 0x41414141
    0022ffa8 41414141 0x41414141
    0022ffac 41414141 0x41414141
    0022ffb0 41414141 0x41414141
    0022ffb4 41414141 0x41414141
    0022ffb8 41414141 0x41414141
    0022ffbc 41414141 0x41414141
    0022ffc0 41414141 0x41414141
    0022ffc4 41414141 0x41414141
    0022ffc8 41414141 0x41414141
    0022ffcc 41414141 0x41414141
    0022ffd0 41414141 0x41414141
    0022ffd4 41414141 0x41414141
    0022ffd8 41414141 0x41414141
    0022ffdc 41414141 0x41414141
    0022ffe0 41414141 0x41414141
    0022ffe4 41414141 0x41414141
    0022ffe8 41414141 0x41414141
    0022ffec 41414141 0x41414141
    0022fff0 41414141 0x41414141
    0022fff4 41414141 0x41414141
    0022fff8 00000000 0x41414141

    Total threads: 1
  6. 2
  7. #4
    sina
    sina
    Guest
    نمايش همه ي رجيسترها

    0:000> .frame /r
    00 0022ff78 41414141 msvcrt!strcat+0x81
    eax=7efefefe ebx=00004000 ecx=003e25bc edx=41414141 esi=007eb30c edi=0022fffd
    eip=77c460c1 esp=0022fec8 ebp=0022ff78 iopl=0 nv up ei pl zr na pe nc
    cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246
    msvcrt!strcat+0x81:
    77c460c1 8917 mov dword ptr [edi],edx ds:0023:0022fffd=41000000


    كامند k هم call stack* رو نشون ميده


    0:000> k
    ChildEBP RetAddr
    WARNING: Stack unwind information not available. Following frames may be wrong.
    0022ff78 41414141 msvcrt!strcat+0x81
    0022ff7c 41414141 0x41414141
    0022ff80 41414141 0x41414141
    0022ff84 41414141 0x41414141
    0022ff88 41414141 0x41414141
    0022ff8c 41414141 0x41414141
    0022ff90 41414141 0x41414141
    0022ff94 41414141 0x41414141
    0022ff98 41414141 0x41414141
    0022ff9c 41414141 0x41414141
    0022ffa0 41414141 0x41414141
    0022ffa4 41414141 0x41414141
    0022ffa8 41414141 0x41414141
    0022ffac 41414141 0x41414141
    0022ffb0 41414141 0x41414141
    0022ffb4 41414141 0x41414141
    0022ffb8 41414141 0x41414141
    0022ffbc 41414141 0x41414141
    0022ffc0 41414141 0x41414141
    0022ffc4 41414141 0x41414141
  8. #5
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,588
    759
    419
    ممنون به خاطر مطالب زيباي شما ؟منتظر قسمت هاي بعدي نيز هستيم ؟
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  9. 1
نمایش نتایج: از 1 به 5 از 5

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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

Content Relevant URLs by vBSEO 3.6.0 RC 2