본문 바로가기
반응형

Programming/System Programming12

VirtualQueryEx를 이용한 할당된 Memory Listing 프로젝트를 진행하며 특정 프로세스에 할당된 메모리 리스트를 뽑고 싶었다. 근데, 이게 웬일(?) 편의성 좋은 api로 분명 지원할 거라 생각했는데 없었다. 그래서 이래저래 방법을 찾아본 결과 해답은 VirtualQueryEx였다. 원래 알고 있던 api지만 메모리 리스팅을 하는데 사용될 줄은 몰랐다. VirtualQueryEx는 원하는 프로세스의 원하는 메모리 영역에 대한 정보를 가져오는 함수인데 나의 목적인 MSDN 검색 결과 메모리 리스팅에 대한 정보는 없었다. (msdn : https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtualqueryex ) 검색해 본 결과 Process Hacker에서 아래와 방법으로 메.. 2020. 5. 28.
NtQueryInformationProcess가 프로세스 정보 가져오는 법 오랜만에 글을 올려봅니다. 개인적인 프로젝트때문에 회사일때문에 못했네요. 오늘 다룰 내용은 Nt/ZwQueryInformationProcess(이하 NtQueryInformationProcess)가 프로세스 정보를 어떻게 가져오는지에 대해 기재합니다. 어떻게 이글을 진행하게 됐냐면~ 나중에 다루겠지만 프로세스가 생성될 때 초기화를 거치지 않고 일반적으로 모듈주소들을 가져오려고 CreateToolhelp32Snapshot를 호출할 때 ERROR_PARTIAL_COPY이런 에러가 뜹니다. MSDN확인해보니 64비트 TH32CS_SNAPMODULE32를 사용하고 32비트는 TH32CS_SNAPMODULE사용할 경우, 이 에러가 나온다고 하는데 이부분은 다른 글에서 자세히 다루겠습니다. 본론으로 가서 다른 방법.. 2019. 4. 4.
Processor Affinity사용하기 이번에는 Processor Affinity에 대해 알아보고 간단한 예제를 통하여 Processor Affinity를 사용해보겠다.먼저, ※ Processor Affinity란?- Process나 Thread에서 사용하는 작업을 지정된 CPU에서만 실행되도록 함. 예를들어, 쿼드코어를 가진 PC에서 계산기를 실행시킬때 Processor Affinity를 설정하여 원하는 CPU에서 프로그램이 동작하도록 할 수 있다는 말이다.Windows는 해당 기능 사용하도록 다음과 같은 API들을 제공한다. ※ SetProcessAffinityMask : 대상 Process를 특정 CPU에서 실행되도록 설정. BOOL SetProcessAffinityMask( HANDLE hProcess, DWORD_PTR dwProce.. 2018. 8. 6.
DeviceIoControl을 이용한 Kernel / User 통신 프로그램 개인적인 프로젝트를 진행하며 DeviceIoControl를 이용한 통신방법에 프로그래밍 한 것에 대해 정리해보았습니다. 우선, 유저레벨 코드를 보겠습니다. ※ 코드 흐름 설명 - CreateFile(g_lpSymbolName,GENERIC_ALL,0,NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL) : 통신할 디바이스에 접근합니다.- DeviceIoControl(hDev,IOCTL_TEST, g_TestStr, wcslen(g_TestStr), &result, sizeof(result), &dwSize, 0) : 제가 정의한 컨트롤 코드인 IOCTL_TEST와 디바이스에 전달할 g_TestStr를 전달합니다. 디바이스는 잘 전달받았을 때 &result로 결과값을 받습니.. 2018. 7. 24.
반응형