Hỏi về win api openprocess

Thảo luận trong 'Hỏi đáp' bắt đầu bởi lelelov3, 13/02/18, 02:02 AM.

  1. lelelov3

    lelelov3 W-------

    Tham gia: 11/03/15, 05:03 AM
    Bài viết: 25
    Đã được thích: 3
    Điểm thành tích:
    8
    Cho mình hỏi về win api openprocess.
    Trong định nghĩa của https://msdn.microsoft.com, viết:
    "OpenProcess function

    Opens an existing local process object.

    Syntax
    C++

    HANDLE WINAPI OpenProcess(
    _In_ DWORD dwDesiredAccess,
    _In_ BOOL bInheritHandle,
    _In_ DWORD dwProcessId
    );


    Parameters
    dwDesiredAccess [in]
    The access to the process object. This access right is checked against the security descriptor for the process. This parameter can be one or more of the process access rights.

    If the caller has enabled the SeDebugPrivilege privilege, the requested access is granted regardless of the contents of the security descriptor.

    bInheritHandle [in]
    If this value is TRUE, processes created by this process will inherit the handle. Otherwise, the processes do not inherit this handle.

    dwProcessId [in]
    The identifier of the local process to be opened.

    If the specified process is the System Process (0x00000000), the function fails and the last error code is ERROR_INVALID_PARAMETER. If the specified process is the Idle process or one of the CSRSS processes, this function fails and the last error code is ERROR_ACCESS_DENIED because their access restrictions prevent user-level code from opening them.

    If you are using GetCurrentProcessId as an argument to this function, consider using GetCurrentProcess instead of OpenProcess, for improved performance.

    Return value
    If the function succeeds, the return value is an open handle to the specified process.

    If the function fails, the return value is NULL. To get extended error information, call GetLastError.

    Remarks
    To open a handle to another local process and obtain full access rights, you must enable the SeDebugPrivilege privilege. For more information, see Changing Privileges in a Token.

    The handle returned by the OpenProcess function can be used in any function that requires a handle to a process, such as the wait functions, provided the appropriate access rights were requested.

    When you are finished with the handle, be sure to close it using the CloseHandle function."

    Vậy thì hàm này mở một process mới với handle cùng với process đang tôn tại, hay chỉ là giành quyền truy cập vào process đang tồn tại
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  2. lelelov3

    lelelov3 W-------

    Tham gia: 11/03/15, 05:03 AM
    Bài viết: 25
    Đã được thích: 3
    Điểm thành tích:
    8
    helo, ai giúp mình không
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  3. lelelov3

    lelelov3 W-------

    Tham gia: 11/03/15, 05:03 AM
    Bài viết: 25
    Đã được thích: 3
    Điểm thành tích:
    8
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  4. hainhc

    hainhc W-------

    Tham gia: 25/01/16, 03:01 PM
    Bài viết: 12
    Đã được thích: 11
    Điểm thành tích:
    3
    Hàm này truyền vào processid của tiến trình đang chạy, trả về handle của process đó, hoặc có thể hiểu là giành quyền truy cập process như bạn nói :| Tham số truyền vào như vậy sao lại hỏi mở process mới nhỉ :v
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  5. HustReMw

    HustReMw Moderator Thành viên BQT

    Tham gia: 20/12/16, 05:12 PM
    Bài viết: 184
    Đã được thích: 120
    Điểm thành tích:
    43
    Hàm này mở process đang tồn tại nhé bạn. Nếu cần tạo một process mới thì bạn đọc hàm CreateProcess
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  6. lelelov3

    lelelov3 W-------

    Tham gia: 11/03/15, 05:03 AM
    Bài viết: 25
    Đã được thích: 3
    Điểm thành tích:
    8
    Thật ra đọc nó hướng dẫn, thì mình cũng hiểu nó liên quan đến process đang tồn tại, nhưng cái câu 'mở một process đang tồn tại' hơi khó hiểu, OS cho phép chạy nhiều phiên bản của cùng 1 process cùng một lúc hả bạn. Mình đang học về DLL injection, nên đang định hướng là nó giành quyền truy cập vào process đang tồn tại
     
    Chỉnh sửa cuối: 19/02/18, 04:02 AM
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  7. hainhc

    hainhc W-------

    Tham gia: 25/01/16, 03:01 PM
    Bài viết: 12
    Đã được thích: 11
    Điểm thành tích:
    3
    tùy vào tham số dwDesiredAccess để hàm OpenProcess lấy quyền tác động đến process đang chạy như tạo thêm thread, đọc ghi vùng memory được cấp cho process hoặc resume, suspend...
    Kĩ thuật Dll inject đơn giản nhất là đầu tiên OpenProcess để lấy quyền truy cập tiến trình, sau đó WriteProcessMemory để ghi đoạn code load dll cần inject lên vùng mem của tiến trình cần inject. Cuối cùng là CreateRemoteThread để ép tiến trình đó chạy đoạn code load dll vừa ghi.
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  8. lelelov3

    lelelov3 W-------

    Tham gia: 11/03/15, 05:03 AM
    Bài viết: 25
    Đã được thích: 3
    Điểm thành tích:
    8
    Cám ơn bác nhé, em đang mày mò nên thấy cũng khó
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan