能力值:
( LV5,RANK:70 )
|
-
-
2 楼
神棍德~~~
试试exeScope和PE Explorer
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢谢了我试一下去,请问大家有什么更小白的工具或方法吗
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我也就用过这种方法 不同工具而已
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
替换文件的资源 提供个思路啊(替换ICO的,大同小异,你稍微修改下就行)
BOOL ReplaceICO(LPCTSTR lpszApp,LPCTSTR lpszICO)
{
if ((0 == lstrlenW(lpszApp)) || (0 == lstrlenW(lpszICO)))
{
return FALSE;
}
HANDLE hICO = ::CreateFile(lpszICO,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if ((NULL == hICO) || (INVALID_HANDLE_VALUE == hICO))
{
return FALSE;
}
CONST BYTE byGSize = 0x18; //RT_GROUP_ICON资源的大小,为常数。
//指向更新RT_GROUP_ICON的资源
LPVOID lpGIco = new BYTE[byGSize];
if (NULL == lpGIco)
{
::CloseHandle(hICO);
return FALSE;
}
memset(lpGIco,0,byGSize);//清零RT_GROUP_ICON资源内存
DWORD dwReadByte; //读取文件时实际读取大小,API强制要求。其实没用……
::ReadFile(hICO,lpGIco,0x06,&dwReadByte,NULL);//从文件中读取RT_GROUP_ICON资源头
::ReadFile(hICO,(LPVOID)((BYTE*)lpGIco + 0x08),0x0C,&dwReadByte,NULL);//从文件中读取RT_GROUP_ICON资源
//获取ICO资源的大小。
DWORD dwSize = 0;
memcpy((void*)&dwSize,(void*)((BYTE*)lpGIco + 0x10),sizeof(DWORD));
//获取ICO资源的偏移量,资源在文件中的偏移量
LONG lOffset;
::ReadFile(hICO,(void*)&lOffset,sizeof(LONG),&dwReadByte,NULL);
//分配ICO资源的内存,指向更新RT_ICON的资源
LPVOID lpRes = new BYTE[dwSize];
if (NULL == lpRes)
{
delete[] lpGIco;
::CloseHandle(hICO);
return FALSE;
}
//偏移文件指针
::SetFilePointer(hICO,lOffset,NULL,FILE_BEGIN);
//读取图标资源到内存。
::ReadFile(hICO,lpRes,dwSize,&dwReadByte,NULL);
::CloseHandle(hICO);
HANDLE hApp = ::BeginUpdateResource(lpszApp,NULL);
if ((NULL == hApp) || (INVALID_HANDLE_VALUE == hApp))
{
delete[] lpGIco;
delete[] lpRes;
return FALSE;
}
::UpdateResource(hApp,RT_GROUP_ICON,MAKEINTRESOURCE(1),0,lpGIco,byGSize);
::UpdateResource(hApp,RT_ICON,MAKEINTRESOURCE(1),0,lpRes,dwSize);
if (FALSE == ::EndUpdateResource(hApp,FALSE))
{
delete[] lpGIco;
delete[] lpRes;
return FALSE;
}
delete[] lpGIco;
delete[] lpRes;
return TRUE;
}
|