2008년 01월 17일
프로세서에서 열은 DLL과 DLL의 쓰레드 구하기
/*SysManager.dll
urlmain.dll
agent.exe*/
#define _WIN32_WINNT 0x0501
#include <windows.h>
#include <Psapi.h>
#include <iostream>
using namespace std;
int main()
{
HWND h_window;
HANDLE h_proc;
HMODULE h_buf[100];
DWORD size=0,pid;
unsigned int counter;
TCHAR buffer[512];
memset(buffer,0,sizeof(buffer));
h_window=FindWindow(NULL,TEXT("레지스트리 편집기"));
GetWindowThreadProcessId((HWND)h_window,&pid);
h_proc=OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE, pid);
EnumProcessModules(h_proc,h_buf,sizeof(h_buf),&size);
cout<<"핸들:"<<h_window<<"크기:"<<size<<"pid:"<<pid<<endl;
for(counter=0;counter<size/sizeof(HMODULE);counter++)
{
GetModuleFileName(h_buf[counter],buffer,sizeof(buffer));
cout<<TEXT("모듈이름:")<<buffer<<"모듈ID:"<<h_buf[counter]<<endl;
}
Sleep(40000);
return 0;
}
EnumProcessModules를 쓰면 한번에 쫙 버퍼로 옮겨준다. 프로세서의 HANDLE을 줘야해서 HWND를 쓰려면 프로세서id를 뽑은 다음에 거기서 또 핸들을 꺼내면 된다.
아리 죽이기를 위한 시험작
urlmain.dll
agent.exe*/
#define _WIN32_WINNT 0x0501
#include <windows.h>
#include <Psapi.h>
#include <iostream>
using namespace std;
int main()
{
HWND h_window;
HANDLE h_proc;
HMODULE h_buf[100];
DWORD size=0,pid;
unsigned int counter;
TCHAR buffer[512];
memset(buffer,0,sizeof(buffer));
h_window=FindWindow(NULL,TEXT("레지스트리 편집기"));
GetWindowThreadProcessId((HWND)h_window,&pid);
h_proc=OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE, pid);
EnumProcessModules(h_proc,h_buf,sizeof(h_buf),&size);
cout<<"핸들:"<<h_window<<"크기:"<<size<<"pid:"<<pid<<endl;
for(counter=0;counter<size/sizeof(HMODULE);counter++)
{
GetModuleFileName(h_buf[counter],buffer,sizeof(buffer));
cout<<TEXT("모듈이름:")<<buffer<<"모듈ID:"<<h_buf[counter]<<endl;
}
Sleep(40000);
return 0;
}
EnumProcessModules를 쓰면 한번에 쫙 버퍼로 옮겨준다. 프로세서의 HANDLE을 줘야해서 HWND를 쓰려면 프로세서id를 뽑은 다음에 거기서 또 핸들을 꺼내면 된다.
아리 죽이기를 위한 시험작
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- 그냥 적어본 것들. by 찜질
- define선언이 있는경우와 없는경우 컴파일되어 실행되는 부분 by 니케
- Pointer. by mcJunGun
# by | 2008/01/17 21:47 | 공대노트 | 트랙백 | 덧글(0)






☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]