خروجی فایل سیستم

اصولا فرمت خروجي جعبه شن پارسا سازگار با زبان C++ و کاملا منطبق با طريقه فراخواني اين توابع مي‌باشد. به عبارتي مي‌توان گفت اين جعبه شن قادر به نمايش کد سطح بالاي برنامه تحت تحليل مي‌باشد. در زير توابعي که در خروجي فايل‌سيستم نمايش داده مي‌شود، به همراه معنا و پارامتر‌هاي آن ارائه شده است. خواندن اين بخش براي کساني که آشنايي کافي با برنامه‌نويسي Win32 ندارند، الزامي است.

  1. فرمت خروجي تابع CreateFile: در سيستم عامل ويندوز براي کار با فايل‌ها، و پوشه‌ها (يا ساير ابزارهاي ورودي و خروجي) بايد از تابع CreateFile استفاده کرد. نمونه‌اي از فراخواني تابع CreateFile در زير نشان داده شده است. اين نمونه از خروجي تابع CreateFile جعبه شن پارسا گرفته شده است.

    //PID=7480,TID=7332,Time=133064384421
    CreateFile(L"C:\\Users\\User\\DESKTOP.INI",FILE_GENERIC_READ,FILE_SHARE_READ| FILE_SHARE_WRITE|FILE_SHARE_DELETE,?,OPEN_EXISTING,0,?);

    اين تابع 7 آرگومان از ورودي مي‌گيرد. آرگومان اول اين تابع مشخص مي کند که قصد کار با چه فايل، يا پوشه، يا ساير ابزارهاي ورودي و خروجي وجود دارد. در اينجا همانطور که مي‌بينيد آرگومان اول برابر فايل C:\Users\User\desktop.ini مي‌باشد. آرگومان دوم مشخص مي‌کند چه نوع دسترسي براي اين فايل بايد گرفته شود. آيا قرار است که اين فايل خوانده شود، يا نوشته شود؟ همانطور که مي‌بينيد در مثال بالا آرگومان دوم FILE_GENERIC_READ است، يعني قصد خوانده شدن فايل وجود دارد. آرگومان سوم مشخص مي‌کند که بعد از اجراي موفق اين تابع، برنامه‌هاي ديگر چه نوع دسترسي به اين فايل بايد داشته باشند. در مثال بالا آرگومان سوم برابر FILE_SHARE_READ| FILE_SHARE_WRITE | FILE_SHARE_DELETE مي‌باشد. اين به اين معناست که برنامه‌هاي ديگر در هنگامي که اين برنامه در حال کار با اين فايل است، مي‌توانند از اين فايل بخوانند، يا بنويسند، يا اينکه آن را حذف نمايند. آرگومان چهارم Security Attributes است، که نشان‌دهنده مجوزهاي ساخت اين فايل مي‌باشد. اين پارامتر معمولا برابر NULL‌ قرار مي‌گيرد، لذا ما از لاگ‌گيري فيلدهاي ساختمان داده شده به آرگومان چهارم خودداري کرده‌ايم. آرگومان پنجم مشخص مي‌کند که اين فايل در صورت وجود بايد باز شود، يا اينکه بايد محتواي قبلي آن حذف شود. آرگومان ششم خصوصيات فايل همانند مخفي بودن، يا نبودن، مي‌باشد. آرگومان آخر نيز دستگيره‌اي به فايل قالب مي‌باشد، که معمولا برابر NULL است. جهت کسب اطلاعات بيشتر راجع به اين تابع به لينک زير مراجعه کنيد:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858%28v=vs.85%29.aspx

  2. فرمت خروجي تابع ReadFile: براي خواندن محتواي يک فايل از تابع ReadFile استفاده مي‌شود. اين تابع پنج آرگومان از ورودي مي‌گيرد. نمونه‌اي از خروجي تابع ReadFile در جعبه شن پارسا نشان داده شده است.

    //PID=7480,TID=7332,Time=133065211089
    ReadFile(hFile,buffer,?,&dwBytesReaded,?); //dwBytesReaded=16 ,hFile Points to: C:\Windows\System32\stdole2.tlb ,Offset=512

    آرگومان اول دستگيره فايلي است که مي خواهيد محتواي آن را بخوانيد. اين دستگيره در واقع خروجي تابع CreateFile مي‌باشد. آرگومان دوم بافري است که خروجي تابع در آن قرار مي‌گيرد. آرگومان سوم تعداد بايت‌هايي که بايد از فايل خوانده شود. آرگومان چهارم تعداد بايت‌هايي است که واقعا از فايل خوانده شده است، آرگومان آخر نيز براي خواندن همزمان از فايل مورد استفاده قرار مي‌گيرد، و براي تحليل اهميت چنداني ندارد. همانطور که در نمونه خروجي بالا مي‌بينيد، برنامه تحت تحليل 16 بايت از فايل C:\Windows\Syste32\stdole2.tlb را با شروع از بايت 512 خوانده است، و در متغير buffer قرار داده است. جهت کسب اطلاعات بيشتر راجع به اين تابع به لينک زير مراجعه نماييد:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa365467%28v=vs.85%29.aspx

  3. فرمت خروجي تابع WriteFile: براي نوشتن در يک فايل از تابع WriteFile‌ استفاده مي‌شود. نمونه‌اي از خروجي تابع WriteFile در زير نشان داده شده است:

    //PID=5044,TID=2424,Time=146028876066
    BYTE buffer[]={0xe1,0xc7,0xc8,0xc7,0xc8,0xe1,0xc7};
    WriteFile(hFile,buffer,?,&dwBytesWriten,?); //dwBytesWriten=7 ,hFile Points to: C:\Users\User\Desktop\tagh.txt ,Offset=0

    همانطور که مي‌بينيد تابع WriteFile، 5 آرگومان ورودي مي‌گيرد. آرگومان اول دستگيره فايل باز شده، يا همان خروجي تابع CreateFile‌است. آرگومان دوم آدرس بافري مي‌باشد که بايد در فايل نوشته شود. آرگومان سوم تعداد بايت‌هايي که در فايل بايد نوشته شود، و آرگومان چهارم تعداد بايت‌هايي که واقعا در فايل نوشته شده است. آرگومان آخر نيز اهميتي ندارد. همانطور که در مثال بالا مي‌بينيد برنامه تحت تحليل به ميزان 7 بايت با شروع از بايت صفرم فايل، محتواي buffer را در فايل C:\Users\User\Desktop\tagh.txt قرار داده است. جهت آشنايي بيشتر با اين تابع مراجعه کنيد به:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa365747%28v=vs.85%29.aspx

  4. فرمت خروجي تابع DeleteFile: اين تابع مسير يک فايل را از ورودي مي‌گيرد، و آن را حذف مي‌کند. به عنوان مثال اگر در هنگام تحليل برنامه‌اي با خروجي زير مواجه شديد، يعني برنامه تحت تحليل فايل C:\Users\Amir\Desktop\j.txt را حذف کرده است.

    //PID=6468,TID=5316,Time=148328219843
    DeleteFile(L"C:\\Users\\User\\Desktop\\j.txt");

    اطلاعات بيشتر راجع به اين تابع در لينک زير موجود است:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa363915%28v=vs.85%29.aspx

  5. فرمت خروجي تابع FindFirstFile: اين تابع به همراه FindNextFile‌ براي جستجوي فايل در مسيري خاص مورد استفاده قرار مي‌گيرد. به عنوان مثال خروجي زير را مشاهده فرماييد:

    //PID=6356,TID=8272,Time=149328026613
    FindFirstFile(L"C:\\Users\\User\\Downloads\\Compressed\\*",&FindFileData); //FindFileData.cFileName=.

    اين خروجي نشان مي‌دهد که برنامه تحت تحليل ليست کليه فايل‌هاي موجود در مسير C:\Users\User\Downloads\Compressed را مورد جستجو قرار داده است. تابع FindFirstFile در خروجي فايلي با نام . برگردانده است. (همانطور که مي‌دانيد علامت نقطه به معناي خود پوشه مي‌باشد.) در لينک زير اطلاعات بيشتري به همراه مثالي از طريقه استفاده از اين تابع موجود است:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx

  6. فرمت خروجي تابع FindNextFile: اين تابع به همراه FindFirstFile براي جستجوي فايل در مسيري خاص مورد استفاده قرار مي‌گيرد. به عنوان مثال خروجي زير را مشاهده کنيد:

    //PID=6556,TID=6488,Time=4807662345
    FindNextFile(hFind,&FindFileData); //FindFileData.cFileName=zszpe.zip ,hFind Points to: C:\Users\Users\Downloads\Compressed

    اين خروجي نشان مي‌دهد که برنامه تحت تحليل در مسير C:\Users\Users\Downloads\Compressed به جستجو پرداخته، و فايلي با نام zszpe.zip‌ را در اين مسير يافته است. اطلاعات بيشتر راجع به اين تابع در لينک زير موجود است:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa364428%28v=vs.85%29.aspx

  7. فرمت خروجي تابع MoveFile: اين تابع براي تغيير نام يا انتقال يک فايل، مورد استفاده قرار مي‌گيرد. به عنوان مثال خروجي را نگاه کنيد:

    //PID=6692,TID=2060,Time=6049389464
    MoveFile(L"C:\\Users\\User\\Documents\\temp.txt",L"C:\\Users\\User\\Documents\\temp2.txt");

     

    آرگومان اول نشان‌دهنده مسير اوليه، و آرگومان دوم نشان دهنده مسير جديد فايل مي‌باشد. همانطور که مي‌بينيد فايل temp.txt به نام temp2.txt تغيير نام يافته است. جهت کسب اطلاعات بيشتر راجع به اين تابع مراجعه کنيد به:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa365239%28v=vs.85%29.aspx

  8. فرمت خروجي تابع CreateDirectory: همانطور که از نام تابع CreateDirectory مشخص است، از آن براي ساخت يک پوشه جديد استفاده مي‌شود. به عنوان مثال خروجي زير در جعبه شن پارسا نمايش داده شود، يعني برنامه تحت تحليل يک پوشه با نام New Folder در مسير C:\Users\User\Downloads ساخته است.

    //PID=6020,TID=3492,Time=6605188728
    CreateDirectory(L"C:\\Users\\User\\Downloads\\New folder",?);

    جهت آشنايي بيشتر با اين تابع مراجعه کنيد به:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa363855%28v=vs.85%29.aspx

  9. فرمت خروجي تابع RemoveDirectory: همانطور که از نام اين تابع مشخص است، براي حذف پوشه مورد استفاده قرار مي‌گيرد. به عنوان مثال خروجي زير در جعبه شن پارسا نشان‌دهنده حذف پوشه New Folder در مسير مي‌باشد.

    //PID=5180,TID=6620,Time=7464672621
    RemoveDirectory(L"C:\\Users\\Amir\\Downloads\\New folder");

    اطلاعات بيشتر راجع به اين تابع در مسير زير موجود است:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa365488%28v=vs.85%29.aspx

  10. فرمت خروجي تابع GetFileAttributes: اين تابع براي خواندن خصوصيات يک فايل همانند سيستمي بودن يا نبودن مورد استفاده قرار مي‌گيرد. به عنوان مثال خروجي زير در جعبه شن پارسا نشان مي‌دهد که برنامه تحت تحليل خصوصيات فايل C:\Windows\System32\winspool.drv را خوانده است، و خصوصيت FILE_ATTRIBUTE_ARCHIVE به برنامه تحت تحليل برگردانده شده است.

    //PID=5456,TID=4468,Time=7829906647
    DWORD dwAttrib=GetFileAttributes(L"C:\\Windows\\System32\\winspool.drv"); //dwAttrib=FILE_ATTRIBUTE_ARCHIVE

    جهت کسب اطلاعات بيشتر راجع به اين تابع، به آدرس زير مراجعه کنيد:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa364944%28v=vs.85%29.aspx

  11. فرمت خروجي تابع SetFileAttributes: اين تابع براي تغيير خصوصيات يک فايل همانند سيستمي بودن يا نبودن مورد استفاده قرار مي‌گيرد. به عنوان مثال خروجي زير در جعبه شن پارسا نشان مي‌دهد که برنامه تحت تحليل فايل C:\\Users\\User\\1.tlog را Read Only کرده است.

    //PID=364,TID=6932,Time=8740755485
    SetFileAttributes(L"C:\\Users\\User\\1.tlog",FILE_ATTRIBUTE_READONLY);

    اطلاعات بيشتر راجع به اين تابع، در لينک زير موجود است:

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa365535%28v=vs.85%29.aspx

  12. فرمت خروجي تابع CloseHandle: اين تابع در هنگام عدم اتمام کار با يک فايل، پوشه يا سخت‌افزار ورودي خروجي مورد استفاده قرار مي‌گيرد. در واقع براي شروع کار با يک فايل بايد از تابع CreateFile، و براي اتمام کار با آن فايل، بايد از تابع CloseHandle جهت بستن دستگيره باز شده استفاده کرد. در مثال زير دستگيره‌‌اي باز شده به فايل C:\Windows\system32\wow64.dll بسته شده است.

    //PID=5088,TID=8824,Time=53126281295
    CloseHandle(hFile); //hFile points to: C:\Windows\System32\wow64.dll

    براي اطلاعات بيشتر راجع به اين تابع مراجعه کنيد به:

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms724211%28v=vs.85%29.aspx

نمی‌توانید پاسخی پیدا کنید؟ آیا به دنبال مقاله خاصی هستید که در سؤالات عمومی قرار دارد؟ فقط پوشه ها و دسته بندی های مختلف مربوطه را مرور کنید و سپس مقاله مورد نظر خود را پیدا خواهید کرد.
تمامی حقوق مادی و معنوی این سایت متعلق به شرکت مهندسی دنیای فناوری امن ویرا می‌باشد.