rescoure的更换
上次我们手工注入了dll,这次我们要更换的是calc.exe的 图标。我们的目的是替换这边的图标。桌面图标(32x32)
这是总的位置
现在我们开始分析
1.
资源表IMAGE_RESOURCE_DIRECTORY_ENTRY
calc对应的位置
可见有8个IMAGE_RESOURCE_DIRECTORY_ENTRY
再根据第一个联合体的最高为判断:
- 第一个联合体的最高位为0,也就是说NameIsString为0,此时代表已知的类型,也就说name会起作用
- 第一个联合体的最高位为1,也就是说NameIsString为1,如果资源是未知的,这种资源属于字符串作为资源标识, Name就不会起作用了,NameOffset会指向IMAGE_RESOUCE_DIR_STRING_U的位置。
该程序中为:
以第一个为例(偏移0x50),根据第二个联合体最高为1仍为IMAGE_RESOURCE_DIRECTORY_ENTRY结构
根据第七个偏移0x230继续索引
最后根据偏移0x470跳转到IMAGE_RESOURCE_DATA_ENTRY结构体
文件RVA为0x1AC28,对应roffset位置(0x18228),大小0x10A8
打开更换的icon图片,从0x16开始将文件到尾部全部写入到对应位置,因为之前的字节应该是描述该图片的格式
因为原先的图标就是32x32的,覆盖的图片也是必须是32x32的
成功!