خروجی تزریق کتابخانه

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

  1. فرمت خروجي تابع NtSetSystemInformation: اين تابع براي تغيير تنظيمات سيستم مورد استفاده قرار مي‌گيرد. به عنوان نمونه خروجي زير نشان مي‌دهد که برنامه تحت تحليل تنظيمات SystemBasicInformation سيستم را تغيير داده است.

    //PID=8244,TID=5064,Time=103015935894
    NtSetSystemInformation (SystemBasicInformation, pSystem, 12);

  2. فرمت خروجي تابع NtRequestWaitReplyPort: اين تابع داده‌اي به سمت سرور LPC ارسال کرده، و منتظر پاسخ مي‌ماند. معمولا سرور LPC هسته سيستم عامل ويندوز، يا پردازش‌هاي اصلي آن مي‌باشد.

    به عنوان مثال خروجي زير نشان مي‌دهد که برنامه تحت تحليل يک درخواست به هسته سيستم عامل ويندوز ارسال داشته است.

    //PID=4020,TID=3300,Time=103909123251
    NtRequestWaitReplyPort(PortHandle,Request,IncomingReply); //Request->DataLength=72 ,Request->Length=112 ,Request->MessageType=0 ,Request->DataInfoOffset=0 ,Request->hProcess=0 ,Request->hThead=0 ,Request->MessageId=0 ,Request->CallbackId=0

    براي کسب اطلاعات راجع به Local Procedure Calls يا به طور خلاصه LPC، مراجعه کنيد به:

    http://www.zezula.net/en/prog/lpc.html

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

    //PID=4776,TID=4380,Time=104833344892
    ExitWindowsEx(EWX_REBOOT,SHTDN_REASON_MINOR_MMC);

    نکته‌اي که در اينجا وجود دارد اين است که با استفاده از قابليت محدودسازي توابع خطرناک مي‌توان از ريست شدن، يا خاموش شدن سيستم در هنگام فراخواني تابع بالا جلوگيري کرد. جهت کسب اطلاعات بيشتر راجع به اين تابع مراجعه کنيد به:

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

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

    به عنوان نمونه، خروجي زير نشان مي‌دهد که برنامه تحت تحليل قصد خاموش کردن سيستم را داشته است.

    //PID=9200,TID=6920,Time=107934251804
    InitiateShutdownW(0x1436620, L"", 0, SHUTDOWN_FORCE_OTHERS, SHTDN_REASON_MAJOR_OTHER | SHTDN_REASON_MINOR_OTHER);

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

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

  5. فرمت خروجي تابع LockWorkStation: اين تابع براي Lock کردن سيستم استفاده مي‌شود. در واقع فراخواني اين تابع معادل با فشردن کليدهاي Windows + L از صفحه کليد مي‌باشد. به عنوان نمونه، خروجي زير نشان مي‌دهد که برنامه تحت تحليل سيستم را Lock کرده است.

    //PID=2064,TID=5576,Time=108297372814
    LockWorkStation();

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

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

  6. فرمت خروجي تابع CreateToolhelp32Snapshot: از اين تابع براي دريافت ليست پردازش‌ها، ماژول‌ها، نخ‌ها، يا هيپ‌هاي سيستم استفاده مي‌شود. به عنوان مثال خروجي زير نشان مي‌دهد که برنامه تحت تحليل درخواست خواندن ليست کتابخانه‌هاي چسبيده به پردازش شماره 5060 را داشته است.

    //PID=5060,TID=8924,Time=108843320308
    CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,5060);

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

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

  7. فرمت خروجي تابع AdjustTokenPrivileges: برخي توابع خطرناک براي اينکه در سيستم عامل ويندوز اجرا گردند، نياز به داشتن يک سري مجوز دارند. از اين تابع براي دريافت اين مجوزهاي دسترسي استفاده مي‌شود. به عنوان نمونه خروجي زير نشان مي‌دهد که برنامه تحت تحليل درخواست مجوزهاي SeShutdownPrivilege، و SeAuditPrivilege را داشته است.

    //PID=7488,TID=8460,Time=109227994277
    AdjustTokenPrivileges(hToken,FALSE,NewState,0,PreviousState,0); //SeShutdownPrivilege SeAuditPrivilege

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

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

  8. فرمت خروجي تابع OpenSCManager: اين تابع براي شروع ارتباط با Service Manager ويندوز استفاده مي‌شود. همانطور که مي‌دانيد سرويس در ويندوز، پردازش يا درايوري است که در پس زمينه، و بدون توجه به لاگين بودن کاربر اجرا مي‌گردد. خروجي زير نشان مي‌دهد که برنامه تحت تحليل ارتباط با Service Manager ويندوز را با دسترسي SC_MANAGER_ALL_ACCESS آغاز کرده است.

    //PID=5984,TID=4904,Time=110895871659
    OpenSCManagerA(NULL,NULL,SC_MANAGER_ALL_ACCESS);

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

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

  9. فرمت خروجي تابع CreateService: از اين تابع براي ساخت يک سرويس جديد استفاده مي‌شود. به عنوان مثال خروجي زير نشان مي‌دهد برنامه تحت تحليل درايور موجود در مسير C:\MyDriver1.sys را به عنوان يک سرويس جديد در سيستم ثبت کرده است.

    //PID=5984,TID=4904,Time=111239137142
    CreateServiceA(1589272, "MyDriver1", "MyDriver1", SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, "C:\MyDriver1.sys", "", lpdwTagId, NULL, NULL, NULL);

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

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

  10. فرمت خروجي تابع DeleteService: از اين تابع براي حذف يک سرويس استفاده مي‌شود. به عنوان مثال خروجي زير نشان مي‌دهد که برنامه تحت تحليل سرويسي با دستگيره 55561664 را از سيستم حذف کرده است.

    //PID=5984,TID=4904,Time=111243181787
    DeleteService(55561664);

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

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

  11. فرمت خروجي تابع StartService: با فراخواني اين تابع، سرويس درخواست شده شروع به فعاليت مي‌کند. به عنوان نمونه، خروجي زير نشان مي‌دهد که برنامه تحت تحليل سرويسي با دستگيره 55561384 را در سيستم راه‌اندازي کرده است.

    //PID=5984,TID=4904,Time=111871500952
    StartServiceA(55561384,0,NULL);

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

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

  12. فرمت خروجي تابع OpenService: از اين تابع براي گرفتن دستگيره‌اي به يک سرويس استفاده مي‌شود. به عنوان مثال خروجي زير نشان مي‌دهد که برنامه تحت تحليل دستگيره‌اي به سرويس MyDriver1 گرفته است. اين دستگيره با شماره 55561344 مشخص شده است.

    //PID=5984,TID=4904,Time=111874656139
    OpenServiceA(1589272,"MyDriver1",SERVICE_ALL_ACCESS); //RetValue=55561344

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

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

  13. فرمت خروجي تابع ControlServiceEx: از اين تابع براي کنترل وضعيت يک سرويس، يا ارسال يک کد کنترلي دلخواه به يک سرويس استفاده مي‌شود. به عنوان مثال، خروجي زير نشان مي‌دهد که برنامه تحت تحليل درخواست توقف سرويسي با دستگيره 55561344 را داده است.

    //PID=5984,TID=4904,Time=111874656369
    ControlService(55561344,SERVICE_CONTROL_STOP,lpServiceStatus);

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

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

  14. فرمت خروجي تابع CloseServiceHandle: از اين تابع براي پايان دادن به کار مرتبط با سرويس‌ها استفاده مي‌شود. در واقع اين تابع عکس تابع OpenSCManager مي‌باشد. يک نمونه از خروجي اين تابع در زير نشان داده شده است.

    //PID=5984,TID=4904,Time=111874711739
    CloseServiceHandle(848620);

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

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

  15. فرمت خروجي تابع CreateWindowEx: از اين تابع براي ساخت يک پنجره استفاده مي‌شود. همانطور که مي‌دانيد در سيستم عامل ويندوز هر چيزي که قابل نمايش باشد، همانند labelها، TextBoxها، ListBoxها، همگي يک پنجره هستند، و براي ساخت آن‌ها نياز به فراخواني تابع CreateWindowEx وجود دارد. به عنوان نمونه، خروجي زير نشان مي‌دهد که برنامه تحت تحليل يک پنجره با کلاس ComboBox ساخته است.

    //PID=9472,TID=4836,Time=115111335127
    CreateWindowEx(WS_EX_TOOLWINDOW,L"ComboBox",NULL,WS_BORDER | WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE | WS_VSCROLL,0,24,293,116,0x31086a,0x3e8,0x1000000,0);

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

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

  16. فرمت خروجي تابع SendInput: از اين تابع براي ارسال ورودي موس و صفحه کليد به طور مجازي استفاده مي‌شود. به عنوان مثال خروجي زير نشان مي‌دهد که برنامه تحت تحليل يک ورودي صفحه کليد يا موس ارسال کرده است.

    //PID=8308,TID=1372,Time=115698525333
    SendInput(1,pInputs,28);

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

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

  17. فرمت خروجي تابع BlockInput: از اين تابع براي توقف دريافت ورودي صفحه کليد و موس استفاده مي‌شود. به عنوان مثال خروجي زير نشان مي‌دهد که برنامه تحت تحليل ورودي صفحه کليد و موس را از کار انداخته است. (اگر آرگومان اول TRUE باشد، يعني ورودي صفحه کليد و موس از کار انداخته شده است، و اگر FALSE باشد، يعني ورودي صفحه کليد و موس فعال شده است.)

    //PID=10008,TID=4900,Time=116240646476
    BlockInput(TRUE);

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

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

  18. فرمت خروجي تابع SetWindowsHookEx: اين تابع براي تعريف يک روال هوک استفاده مي‌شود. همچنين اين تابع براي تزريق کتابخانه نيز مي‌تواند مورد استفاده قرار مي‌گيرد. به عنوان نمونه خروجي زير نشان مي‌دهد که برنامه تحت تحليل يک DLL براي شنود کليدهاي فشرده شده از صفحه کليد به کليه پردازش‌ها تزريق کرده است.

    //PID=6168,TID=10928,Time=121006727166
    SetWindowsHookEx(WH_KEYBOARD, lpfn, hMod, dwThreadId); //lpfn=252841989 ,hMod=252772352 ,dwThreadId=0

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

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

  19. فرمت خروجي تابع SetWinEventHook: اين تابع براي يک تعريف تابع Hook در هنگام رخداد محدوده‌اي از وقايع استفاده مي‌شود. به عنوان مثال خروجي زير نشان مي‌دهد که برنامه تحت تحليل قصد شنود واقعه EVENT_OBJECT_DESTROY را دارد. با فراخواني اين تابع، هر بار که واقعه EVENT_OBJECT_DESTROY‌ رخ مي‌دهد، تابع موجود در آدرس lpfnWinEventProc فراخواني مي‌گردد.

    //PID=6784,TID=6476,Time=540199086
    SetWinEventHook(EVENT_OBJECT_DESTROY, EVENT_OBJECT_DESTROY, hModule, lpfnWinEventProc, idProcess, idThread, WINEVENT_OUTOFCONTEXT | WINEVENT_INCONTEXT); //hModule=1938161664 ,idProcess=6784 ,idThread=0

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

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

  20. فرمت خروجي تابع SendMessage: از اين تابع براي ارسال پيغام به يک پنجره ديگر استفاده مي‌شود. به عنوان مثال خروجي زير نشان مي‌دهد که برنامه تحت تحليل، پيغام شماره 15 را به پنجره شماره  67278 که پنجره‌اي از کلاس TSkinPanel است، ارسال مي‌کند.

    //PID=6168,TID=3620,Time=1937351597
    SendMessage(hWnd,Msg,wParam,lParam); //hWnd=67278 ,hWndClass=TSkinPanel ,Msg=15 ,wParam=134288494 ,lParam=0

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

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

  21. فرمت خروجي تابع RegisterHotKey: از اين تابع براي تعريف يک کليد ميانبر استفاده مي‌شود. به عنوان مثال خروجي زير نشان مي‌دهد که برنامه تحت تحليل يک کليد ميانبر ALT + b تعريف کرده است. (کد اسکي کاراکتر b برابر 66 است.)

    //PID=6824,TID=2092,Time=2439308567
    RegisterHotKey(hWnd,1,MOD_ALT|MOD_NOREPEAT,66); //hwnd=0

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

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

  22. فرمت خروجي تابع GetKeyState: اين تابع وضعيت يک کليد از صفحه کليد را برمي‌گرداند. به عنوان مثال، اگر خروجي زير را در برنامه تحت تحليل ديديد، به اين معناست که برنامه تحت تحليل قصد تعيين وضعيت کليد Num Lock را دارد. (اينکه آيا روشن هست، يا خير.)

    //PID=7092,TID=6444,Time=3548004930
    GetKeyState(VK_NUMLOCK);

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

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

  23. فرمت خروجي تابع GetKeyboardState: اين تابع وضعيت 256 کليد صفحه کليد را در يک بافر قرار مي‌دهد. نمونه‌اي از فراخواني اين تابع در زير ارائه شده است.

    //PID=2780,TID=6960,Time=4224870880
    GetKeyboardState(pBuffer);

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

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

  24. فرمت خروجي تابع GetAsyncKeyState: اين تابع وضعيت لحظه‌اي يک کليد از صفحه را برمي‌گرداند. به عنوان مثال خروجي زير بررسي مي‌کند که وضعيت کليد NumPad 4 چگونه است؟ آيا فشرده است، يا خير؟

    //PID=7132,TID=1068,Time=4975615371
    GetAsyncKeyState(VK_NUMPAD4);

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

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

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

    //PID=6104,TID=6948,Time=5277754960
    GetRawInputData(hRawInput,RID_INPUT,pData,pcbSize,16); //pData->header.dwType=keyboard

    اين خروجي نشان مي‌دهد که برنامه از صفحه کليد ورودي خام دريافت کرده است. (معمولا اين کار توسط Keyloggerها انجام مي‌گيرد.) جهت کسب اطلاعات بيشتر راجع به اين تابع مراجعه کنيد به:

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

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