说句实话,要想用普通的方法来替换图标,不是完全不可行,当然也不是完全可行。这个看似简单的问题并不是想象中那么容易解决,为什么有人修改exe的图标总是失败,其实他忽视了exe和图标的复杂性,用简单的方法根本无法解决这个问题,我们大多数人都低估了exe和图标这两个名词了。
对于可执行文件,图标的扩展名为ico,网络上很多图标软件都可以做到把jpg,bmp,gif,png等格式的图像文件转换成图标格式,此外也有很多软件可以直接提取exe或者dll文件里面附带的图标文件,甚至我们可以自己制作图标。不过图标也有它自己的参数,比如说尺寸、分辨率、位深度以及帧数这些。很多程序的图标是经过压缩过的,如果你要想用没有压缩过的图标进行替换,结果通常只有两个:要么就根本没有让原程序的图标发生任何变化,要么图标改变了,不过这个程序就别想再正常运行了,呵呵!当然也有非常倒霉的情况,那就是不仅图标没有任何变化,而且程序也被破坏了……所以我们修改图标前通常都要做好程序的备份。
对于Windows的系统图标,比如文本文档,注册表文件或者mp3音频这些文件的图标,我们可以通过“我的电脑-工具-文件夹选项-文件类型(选定要修改图标的文件类型)-高级-更改图标”就可以实现图标修改;再者就是快捷方式的图标修改,这就更简单了,右击此快捷方式,再选择属性,然后我们就可以直接看到更改图标的选项。然而对于非系统的exe文件,如果exe的原图标的参数值较大,我们可以用小于或者等于这个参数的图标进行替换,但是大于原图标参数的图标文件就无法替换掉原来的图标。一言以蔽之,要想真正做到图标更改成功,必须满足新图标的参数不大于原图标的参数。如果在这个前提之下,我们就可以放心大胆地改图标了,常用的exe图标替换工具有IcoSprite,ResHacker,eXeScope,以及典型的国产小工具exe伪装器和爱图标精灵,这些工具我没有认真比较过,不过它们的操作都很简单。
但是我们也许会遇到这样的情况,一个软件的图标很丑陋,而且尺寸和分辨率又很小,用上面的方法根本不顶用,该怎么办呢?接下来的才是我这篇文章想要表达的重点。既然由于程序结构使然我们已经无法改变其图标,不过我们可以用一种“欺骗”的方式实现图标替换,基本思想不外乎就是为原程序加个壳,然后把壳的图标设置为理想中的图标,而这个理想中的图标参数可以是任意的,其实我们这样做根本就没替换原程序的图标,原程序的图标依然没变,不过它被一个壳包装起来了,而这个壳的图标却被我们设成了我们想看到的图标。从外表上看,这种“欺骗”方式可以骗过绝大多数不知情的人,即使有人知道是这样做的,但从效果上看,我们看不出什么区别。说了这么多,可能很多朋友对上面我说的都晕头转向了,老说那个什么壳的。要把这个问题解释清楚,用通俗的说法来说,这个方法就像是植皮手术,呵呵,这下心里应该明白三分了吧!
不过现在很多加壳软件都属黑客工具类型的,所以杀毒软件通常都会报毒,其余的一些加壳器往往不能再次设置图标,还有的工具与其说是exe加壳器,还不如说是exe破坏器,经我测试,它处理的工具,不能再次使用的几率接近100%!呵呵,这样的工具谁还敢用?
我这里将要介绍的方法根本不需要用什么加壳器,只要你有Winrar(废话!现在谁没有啊?),我们就可以做。如果你会用Winrar做单文件程序,那你就大可不必再往下看那些详细的教程了,此方法就是把原程序打包成一个新的单文件程序,然后再把新的自解压程序的图标设置成目标图标就搞定。如果你不会做,那么就请接着往下看,虽然网上应该也有一定数量的Winrar制作单文件程序的教程,不过我还是费费口舌吧:
确保你的电脑安装了Winrar,我建议安装最新版的,比如现在我要演示的就是目前最新版本的Winrar 3.8的正式版,由于是共享软件,所以可以有三个出路可以选择,一是通过正规渠道花费290元人名币注册购买;二是继续使用共享版,反正它有40天的评估试用期;三是在不花钱的前提下,寻找一个注册破解版,或者百度里搜索Winrar注册机,反正我这倒是有个注册机,网上淘来的,可以用任意的名字注册,注册时用中文名可能有乱码现象,不过注册过后在Winrar显示出的注册名就是正确的了。
我们以“图标提取”这个小工具来做示范。
首先右击它,选择“添加到压缩文件”。
在弹出来的一个“压缩文件名和参数”框中设置压缩文件格式为“ZIP”,压缩方式为“存储”,压缩选项为“创建自解压格式压缩文件”。
随后选择“高级”选项卡。选择了“高级”选项卡以后直接点击“自解压选项”。
这时候又弹出一个“高级自解压选项”框,在安装程序中设置解压后运行“图标提取.exe”。
然后选择“模式”选项卡,在临时模式中勾选“解包到临时文件夹”,安静模式中选择“全部隐藏”。
随后再选择“更新”选项卡,再覆盖方式中选择“覆盖所有文件”。
最后选择“文本和图标”选项卡,在自定义自解压文件徽标和图标中选择“从文件加载自解压文件图标”,点击“浏览”,找到自己想要加载的图标文件后并打开。
然后就点击确定(两次)就可以生成一个新的exe程序了。看看!图标已经改变了,再运行测试一下,是不是能够正常运行?答案是肯定的。
用这种方法可以应用于任何exe文件,没有改不了的图标,100%适用。由于为了保证解压速度,我们采用的压缩方式是ZIP存储模式,再加上加载了外部的图标,所以生成的文件会大于原文件。不过也存在有这样的问题:由于有一个隐藏解压的过程,所以启动程序所用的时间要稍稍长于原程序,启动新程序后,系统自动隐藏解压原程序到临时文件夹,当你关闭或者退出程序后,系统会自动删除临时文件夹里面的原程序,呵呵,这一切都是悄悄完成的。
2009年5月2日续记:一晃快半年了,我也看到网上不少朋友转载了我这篇教程性质的博文,大家觉得这个方法不错,我心里也挺高兴的,不过我觉得自己还是忽略了一点点东西,就是替换图标(加图标壳)工具和Winrar注册机的下载。这里给出下载地址,如果有什么问题可以留言或联系QQ:273095824以及Email:273095824@qq.com,我会尽快解决的。
网盘地址:http://zhuweixiao.ys168.com/ (注:这两个工具都在“系统工具”这个文件夹里)
强行替换exe图标的方法的更多相关文章
-
替换应用程序exe图标,主要使用BeginUpdateResource,UpdateResource API函数
替换应用程序exe图标,主要使用的API函数是BeginUpdateResource(),UpdateResource(),EndUpdateResource()来使用自定义的ico文件类替换exe程 ...
-
matlab改变GUI和figure左上角图标的方法,并生成exe文件
1. GUI左上角图标的更改,假设GUI的Tag为figure1,在其OpeningFcn里添加h = handles.figure1; %返回其句柄newIcon = javax.swing.Ima ...
-
WPF获取外部EXE图标最简单的方法
原文:WPF获取外部EXE图标最简单的方法 首先在工程添加对System.Drawing的引用 创建以下方法: public static ImageSource GetIcon(string fil ...
-
MFC exe文件生成的图标更改方法
MFC exe文件生成的图标更改方法 https://blog.csdn.net/txwtech/article/details/92980545
-
VB高清图标制作方法
我隆重介绍一个软件:ResHacker !!! 这个软件可以修改软件的很多东西包括图标和标题,下面看**作. 运行ResHacker打开要更改图标的exe文件, 图标组--1--右键0--替换资源-- ...
-
介绍一种很棒的wince 如何替换系统声音的方法
Topic:介绍一种很棒的wince 如何替换系统声音的方法(作者:Baiduluckyboy) //------------------------------------------------- ...
-
python制作exe可执行文件的方法---使用pyinstaller
python制作exe可执行文件的方法---使用pyinstaller python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinsta ...
-
App劫持病毒剖析:你的应用是如何被替换的(病毒防范方法)
App劫持病毒剖析:你的应用是如何被替换的(病毒防范方法) 一.App劫持病毒介绍 App劫持是指执行流程被重定向,又可分为Activity劫持.安装劫持.流量劫持.函数执行劫持等.本文将对近期利用A ...
-
Java中替换HTML标签的方法代码
这篇文章主要介绍了Java中替换HTML标签的方法代码,需要的朋友可以参考下 replaceAll("\\&[a-zA-Z]{0,9};", "").r ...
随机推荐
-
Apache 80无法启动
netstat -abno后查看,经过查找为pid=4的system进程,因为是系统进程,也无法结束它,经查SQL Server ReportingServices (SQLEXPRESS) 服务占用 ...
-
BZOJ3807 : Neerc2011 Lanes
左右与右左是两个独立的问题 设f[i]表示i时刻左右车道减少一条的答案 g[i]表示i时刻右左车道增加一条的答案 ans=min(f[i]+g[i+r]) 计算f[i]: 首先暴力计算出f[m+1], ...
-
【转】oracle job相关内容
每天凌晨2点执行是这样的 dbms_job.submit(v_job,'lv;',TRUNC(sysdate+1)+2/24,'TRUNC(sysdate+1)+2/24'); 还有定义JOB最好是这 ...
-
学习资料 数据查询语言DQL
数据查询语言DQL介绍及其应用: 查询是SQL语言的核心,SQL语言只提供唯一一个用于数据库查询的语句,即SELECT语句.用于表达SQL查询的SELECT语句是功能最强也是最复杂的SQL语句,它提供 ...
-
李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView
李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView 11111222
-
团队作业4——第一次项目冲刺(Alpha版本)2017.4.22
昨天来不及编写,这是4月22日的日志,现在补上. 1.开完站立式会议后的合照 2.任务分解图 3.开会讨论的结果,任务分派 队员 今日进展 明日安排 陈鑫龙 原型设计图分析,设计登陆界面原稿 实现登陆 ...
-
[CVPR2017] Deep Self-Taught Learning for Weakly Supervised Object Localization 论文笔记
http://openaccess.thecvf.com/content_cvpr_2017/papers/Jie_Deep_Self-Taught_Learning_CVPR_2017_paper. ...
-
Python基础(生成器)
二.生成器(可以看做是一种数据类型) 描述: 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我 ...
-
pandas 使用panel 报错 Panel is deprecated and will be removed in a future version.
Panel is deprecated and will be removed in a future version.The recommended way to represent these t ...
-
Ardunio led呼吸灯
#include <Adafruit_NeoPixel.h> #define PIN 9#define LED_NUM 16Adafruit_NeoPixel strip = Adafru ...