본문 바로가기

프로그래밍

커널메모리 누수 확인 툴 - Poolmon.exe 커널 메모리를 할당 하고서 해제를 안하면 언제 어디서 블루스크린이 뜰지 모른다. 블루스크린이라도 뜨면 감사. 이런 문제를 해결하는 방법은 일일이 할당된 메모리를 해제 했는지 확인해야 하는데 이를 쉽게 할 Poolmon.exe이라는 툴을 소개하고자 한다. 일단 DDK나 WDK를 설치하면 알아서 따라온다. 해당 응용프로그램은 ExAllocatePoolWithTag( .........., 'WSS' )ExFreePoolWithTag( .......... , 'WSS' )이런식으로 메모리 할당하고 해제 하였다면 SSW 이라고 해서첫번째 할당한 메모리두번째 헤제한 메모리세번째 사용한 메모리 확인할 수 있다 더보기
프로세스 리스트 가져오기 - Process32First 중요한건 PROCESSENTRY32 구조체이며 MSDN에는 typedef struct tagPROCESSENTRY32 { DWORD dwSize; DWORD cntUsage; DWORD th32ProcessID; ULONG_PTR th32DefaultHeapID; DWORD th32ModuleID; DWORD cntThreads; DWORD th32ParentProcessID; LONG pcPriClassBase; DWORD dwFlags; TCHAR szExeFile[MAX_PATH]; } PROCESSENTRY32, *PPROCESSENTRY32; Members dwSize The size of the structure, in bytes. Before calling the Process32First .. 더보기
Thread 정보 얻어오기 CreateToolhelp32Snapshot( ); Thread32First( ); Thread32Next( ); Thread 목록을 가져오려면 위의 3개의 함수를 이용하여 가져올 수 있다. 더보기
Detour 를 이용한 사용자 레벨에서의 후킹 DetourCreateProcessWithDllA("C:\\Windows\\notepad.exe", NULL, NULL, NULL, TRUE, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &_StartupInfo, &_Information, "C:\\notepad_dll.dll", NULL) 해당 API는 첫번째 인자 "C:\\Windows\\notepad.exe" 를 실행 할 때11번쨰 인자 "C:\\notepad_dll.dll" 의 Dll을 인젝션 할 것이다.인젝션 된 DLL의 내용은::DetourAttach((PVOID*)&pfTrueCreateFile, HookingCreateFile)를 이용하여 등록하면 될 것이고HookingCreateFile 함수를 어떠한 방식으로 후.. 더보기