#include <windows.h> 
#include <stdio.h> 
void main() 

HMODULE hInstance = LoadLibrary("c:\\netbox.exe");//被截取图标资源的程序 
HRSRC hRsrcBig=FindResource(hInstance,(LPCTSTR)1,RT_ICON); 
//第二个参数说是资源的名字,但是我的确不知道咋个表示,看别人是直接从偏移地址1开始读取 
HGLOBAL b =LoadResource(hInstance,hRsrcBig); 
LPVOID lpResBig=LockResource(b); HANDLE hUpdateRes=BeginUpdateResource("c:\\magicdog.exe",0);//被替换的 
UpdateResource(hUpdateRes, 
RT_ICON, 
(LPCTSTR)1, //这里也是,虽然我可以自己写截取图标的程序,也知道了资源名字,但是不知道怎么表示 
MAKELANGID(LANG_CHINESE, SUBLANG_DEFAULT), 
lpResBig,SizeofResource(hInstance,hRsrcBig)); 
EndUpdateResource(hUpdateRes,FALSE); 
} 问题:图标能替换成功,但是所有大于20kb的程序被替换图标后,统统会变成20kb,且不能正常运行,小于的则可以。16进制方式查看被替换的exe,发现程序尾部被很多“PADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDING 
PADDINGXXPADDINGPADDINGXXPADDING 
PADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDIN.....”字符填充。 
    程序变小的原因,个人估计是破坏了pe文件解构,所以开始考虑在拷贝资源时是不是复制过头了,但是UpdateResource()最后一个参数我设置得再小,程序被执行替换操作后都会变成20KB