윈도우 sys파일 리소스 파일에 추가하기
반응형
참고:http://www.Rootkit.com
출처:http://wezz.tistory.com/entry/Win32-드라이버-파일-Resource에-포함시키기
루트킷 같은 성격의 드라이버들은 배포시 아래와 같은 방법으로
실행 바이너리의 리소스에 드라이버를 포함시킨다.
리소스 추가 -> 가져오기( 드라이버 파일) -> 사용자 지정 리소스 탐색 (ex:Driver)
와 같이 추가를 하면 아래의 그림처럼 바이너리가 추가된다.
그 후 Build를 하면 내가 포함 시킨 드라이버 파일과 Resource.h 파일이 수정된다.
아래의 IDR_DRIVER1의 선언해준 "DRIVER"를 통해 리소스를 추출하면 된다.
[Source]
와 같이 추가를 하면 아래의 그림처럼 바이너리가 추가된다.
그 후 Build를 하면 내가 포함 시킨 드라이버 파일과 Resource.h 파일이 수정된다.
아래의 IDR_DRIVER1의 선언해준 "DRIVER"를 통해 리소스를 추출하면 된다.
[Source]
BOOL ExtractDriver(LPSTR Path)
{
HRSRC RsH;
HGLOBAL RsGH;
BYTE *FilePtr;
ULONG FileSize;
ULONG numWritten;
HANDLE hFile;
HGLOBAL RsGH;
BYTE *FilePtr;
ULONG FileSize;
ULONG numWritten;
HANDLE hFile;
RsH = FindResource(NULL, MAKEINTRESOURCE(IDR_DRIVER1), "DRIVER");
if(!RsH)
{
if(!RsH)
{
printf( "FindResource Error\n" );
return FALSE;
return FALSE;
}
RsGH = LoadResource(NULL, RsH);
if(!RsGH)
{
if(!RsGH)
{
printf( "LoadResource Error\n" );
return FALSE;
return FALSE;
}
FileSize = SizeofResource(NULL, RsH);
FilePtr = (unsigned char *)LockResource(RsGH);
if(!FilePtr)
{
FilePtr = (unsigned char *)LockResource(RsGH);
if(!FilePtr)
{
printf( "LockResource Error\n" );
return FALSE;
return FALSE;
}
hFile = CreateFile( Path ,FILE_ALL_ACCESS,0,NULL,CREATE_ALWAYS,0, NULL);
if(INVALID_HANDLE_VALUE == hFile)
{
{
return FALSE;
}
WriteFile(hFile, FilePtr, FileSize , &numWritten, NULL);
CloseHandle(hFile);
CloseHandle(hFile);
return TRUE;
}
BOOL CleanUp(LPSTR Path)
{
{
if(S_OK != DeleteFile(Path))
{
{
return FALSE;
}
return TRUE;
return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
{
if( ExtractDriver( "C:\\ABCD.SYS" ) )
{
//-------------------------------
//드라이버 로드
//-------------------------------
{
//-------------------------------
//드라이버 로드
//-------------------------------
CleanUp( "C:\\ABCD.SYS" );
}
return 0;
return 0;
}
'유용한 것들_etc' 카테고리의 다른 글
HEAP CORRUPTION DETECTED error (0) | 2010.05.01 |
---|---|
Run-Time Check Failure #0 (0) | 2010.04.17 |
msiexec를 이용한 프로그램 실행 (0) | 2010.04.13 |
VS2005 "디버깅 정보를 찾을 수 없거나 정보가 일치하지 않습니다." 에러 대처법 (0) | 2010.04.13 |
UDK Basics of SpeedTree (0) | 2010.04.11 |
TAGS.