Hỏi về win api openprocess

lelelov3

W-------
11/03/2015
4
32 bài viết
Hỏi về win api openprocess
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
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
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
helo, ai giúp mình không
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
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
Comment
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
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
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
Comment
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
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
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
Comment
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
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 lần cuối:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
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
Comment
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
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.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
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
Comment
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.
Cám ơn bác nhé, em đang mày mò nên thấy cũng khó
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
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
Comment
Bên trên