零基础逆向工程31_Win32_05_提取图标_修改标题

在程序中使用图标

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

转载于:https://www.cnblogs.com/flatcc/p/7786790.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值