Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Create Process from Process service svchost.exe

    Mình thấy các chương trình diệt virus nó thường hay được process service tạo ra,làm thế nào để người lập trình có thể làm được như vậy nhỉ ????

    có phải người ta sử dụng hàm CreateProcessAsUser để làm chuyện đó khong ????
    còn hàm

    Mã:
    BOOL WINAPI CreateProcessWithLogonW(  __in         LPCWSTR lpUsername,  __in_opt     LPCWSTR lpDomain,  __in         LPCWSTR lpPassword,  __in         DWORD dwLogonFlags,  __in_opt     LPCWSTR lpApplicationName,  __inout_opt  LPWSTR lpCommandLine,  __in         DWORD dwCreationFlags,  __in_opt     LPVOID lpEnvironment,  __in_opt     LPCWSTR lpCurrentDirectory,  __in         LPSTARTUPINFOW lpStartupInfo,  __out        LPPROCESS_INFORMATION lpProcessInfo);

    Mã:
    #define UNICODE#define _WIN32_WINNT 0x0500 #include <windows.h>#include <stdio.h>#include <userenv.h>#pragma comment(lib,"Userenv.lib")void DisplayError(LPWSTR pszAPI){    LPVOID lpvMessageBuffer;     FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |         FORMAT_MESSAGE_FROM_SYSTEM,        NULL, GetLastError(),         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),         (LPWSTR)&lpvMessageBuffer, 0, NULL);     //    //... now display this string    //    wprintf(L"ERROR: API        = %s.
    ", pszAPI);    wprintf(L"       error code = %d.
    ", GetLastError());    wprintf(L"       message    = %s.
    ", (LPWSTR)lpvMessageBuffer);     //    // Free the buffer allocated by the system    //    LocalFree(lpvMessageBuffer);     ExitProcess(GetLastError());} int main(int argc, WCHAR *argv[]){    DWORD     dwSize;    HANDLE    hToken;    LPVOID    lpvEnv;    PROCESS_INFORMATION pi = {0};    STARTUPINFO         si = {0};    WCHAR               szUserProfile[256] = L"";     si.cb = sizeof(STARTUPINFO);     /*if (argc != 4)    {        wprintf(L"Usage: %s [user@domain] [password] [cmd]", argv[0]);        wprintf(L"
    
    ");        return 0;    } */     //    // TO DO: change NULL to '.' to use local account database    //    if (!LogonUser(L"TuyenS", NULL, L"", LOGON32_LOGON_INTERACTIVE,         LOGON32_PROVIDER_DEFAULT, &hToken))        DisplayError(L"LogonUser");     if (!CreateEnvironmentBlock(&lpvEnv, hToken, TRUE))        DisplayError(L"CreateEnvironmentBlock");     dwSize = sizeof(szUserProfile)/sizeof(WCHAR);     if (!GetUserProfileDirectory(hToken, szUserProfile, &dwSize))        DisplayError(L"GetUserProfileDirectory");     //    // TO DO: change NULL to '.' to use local account database    //    if (!CreateProcessWithLogonW(L"TuyenS", NULL, L"",         LOGON_WITH_PROFILE, NULL, L"C:\\1.exe",         CREATE_UNICODE_ENVIRONMENT, lpvEnv, szUserProfile,         &si, &pi))        DisplayError(L"CreateProcessWithLogonW");     if (!DestroyEnvironmentBlock(lpvEnv))        DisplayError(L"DestroyEnvironmentBlock");     CloseHandle(hToken);    CloseHandle(pi.hProcess);    CloseHandle(pi.hThread);}

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Process service tạo ra thường là chúng được chạy trước khi vào windows, phần lớn nó là một service chẳng hạn: chương trình là service, chương trình chạy ở service mode. Bạn cứ viết một service đơn giản rồi chạy bạn sẽ thấy ngay thôi.

    Ngoải ra còn có thể mượn processes service(hoặc bất kỳ process nào) để open process của bạn giống như bình thường nhằm tránh sự phát hiện của Antivirus và tăng quyền hạn của virus, tuy nhiên kỹ thuật này rất ít người public (mình cũng không ngoại lệ), và cũng ít xuất hiện.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •