본문 바로가기
프로그래밍/Windows

[Windows] hosts 파일 바꾸기 (Win32API)

by Hwan,. 2016. 8. 10.
728x90
반응형

1. 개요

 - hosts 파일 수정으로 특정 URL을 웹 브라우저에 입력 시 원하는 서버로 연결 가능.

ex) www.daum.net 입력 -> 결과는 www.google.com 로 이동

 - hosts 파일 경로 : C:\Windows\System32\drivers\etc\hosts

 - 리소스 드랍 활용

 - 관리자 권한 필요

 - hosts 파일 변경은 백신에서 탐지됨

 

2. 설정

 

3. 코드

#include<windows.h>
#include "resource.h" // 수정된 hosts 파일을 리소스로 등록 : IDR_FILE1

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE g_Inst;
LPCWSTR lpszClass = TEXT("WINDOW");

// WinMain 생략

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
    HMODULE hDll;
    HRSRC hResource;
    HGLOBAL hData;
    DWORD filesize, numWritten;
    LPVOID pResource;
    HANDLE hFile;

    switch(iMessage)
    {
    case WM_CREATE:
        // 리소스 가져옴
        hResource = FindResource(g_Inst, MAKEINTRESOURCE(IDR_FILE1), L"file");
        hData = LoadResource(g_Inst, hResource);
        pResource = LockResource(hData);
		filesize = SizeofResource(hDll, hResource);

        // 가져온 리소스를 hosts 경로에 써줌
        hFile = CreateFile(L"C:\\Windows\\System32\\drivers\\etc\\hosts", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
        if(hFile != INVALID_HANDLE_VALUE)
        {
            if(WriteFile(hFile, pResource, filesize, &numWritten, NULL))
            {
                MessageBox(0, L"write success", 0, 0);
            }
        }
	CloseHandle(hFile);
        return 0;

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hWnd, iMessage, wParam,lParam);
}
 
728x90
반응형

댓글