제로 베이스 리버스 엔지니어링 31Win32_05_추출 아이콘제목 수정

1950 단어
프로그램에서 아이콘 사용
1. 아이콘 로드
HICON hIcon;

hIcon = LoadIcon (hAppInstance, MAKEINTRESOURCE (IDI_ICON));

hAppInstance
              

IDI_ICON
            
    
MAKEINTRESOURCE
                             ,      .              

2. 아이콘 설정
case WM_INITDIALOG :
        hIcon = LoadIcon (hAppInstance, MAKEINTRESOURCE (IDI_ICON));
        //    
        SendMessage(hDlg,WM_SETICON,ICON_BIG,(DWORD)hIcon);
        SendMessage(hDlg,WM_SETICON,ICON_SMALL,(DWORD)hIcon);
        // :WM_SETICON       
        return TRUE;

아이콘은 어디에 있습니까? ==>PE 구조 리소스 테이블
자원 디렉토리
typedef struct _IMAGE_RESOURCE_DIRECTORY {
    DWORD   Characteristics;                //         0
    DWORD   TimeDateStamp;                  //       
    WORD    MajorVersion;                   //          0
    WORD    MinorVersion;                   //          0
    WORD    NumberOfNamedEntries;           //          
    WORD    NumberOfIdEntries;              // ID       
//  IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];
} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;

자원 디렉토리 항목
typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
    union {                     //      、  ID
        struct {
            DWORD NameOffset:31;
            DWORD NameIsString:1;
        };
        DWORD   Name;
        WORD    Id;
    };
    union {
        DWORD   OffsetToData;       //     
        struct {
            DWORD   OffsetToDirectory:31;
            DWORD   DataIsDirectory:1;
        };
    };
} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY;

데이터 항목
typedef struct _IMAGE_DATA_DIRECTORY {
    DWORD   VirtualAddress;
    DWORD   Size;
} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;

참조 1:http://blog.sina.com.cn/s/blog_99fde17c0101717f.html참조 2:http://blog.csdn.net/obuyiseng/article/details/50260671

좋은 웹페이지 즐겨찾기