首页
社区
课程
招聘
[旧帖] [求助]EXE文件如何可以修改软件中的图片等信息 0.00雪花
发表于: 2012-3-9 09:13 2058

[旧帖] [求助]EXE文件如何可以修改软件中的图片等信息 0.00雪花

2012-3-9 09:13
2058
本人有写小白,找了好几点也没找到方法,希望前辈们指点一下。
有款软件,我想把里面的一些信息修改掉,比如图片之类的东西。
重新美化一下,应该是DELPHI 写的程序无原代马,无壳。
请问什么方法才可以修改啊?谢谢了

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
神棍德~~~
试试exeScope和PE Explorer
2012-3-9 09:19
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢了我试一下去,请问大家有什么更小白的工具或方法吗
2012-3-9 09:37
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我也就用过这种方法  不同工具而已
2012-3-9 11:27
0
雪    币: 122
活跃值: (10)
能力值: ( 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;
}
2012-3-9 11:35
0
游客
登录 | 注册 方可回帖
返回
//