说句实话,要想用普通的方法来替换图标,不是完全不可行,当然也不是完全可行。这个看似简单的问题并不是想象中那么容易解决,为什么有人修改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图标的方法的更多相关文章

  1. 替换应用程序exe图标,主要使用BeginUpdateResource,UpdateResource API函数

    替换应用程序exe图标,主要使用的API函数是BeginUpdateResource(),UpdateResource(),EndUpdateResource()来使用自定义的ico文件类替换exe程 ...

  2. matlab改变GUI和figure左上角图标的方法,并生成exe文件

    1. GUI左上角图标的更改,假设GUI的Tag为figure1,在其OpeningFcn里添加h = handles.figure1; %返回其句柄newIcon = javax.swing.Ima ...

  3. WPF获取外部EXE图标最简单的方法

    原文:WPF获取外部EXE图标最简单的方法 首先在工程添加对System.Drawing的引用 创建以下方法: public static ImageSource GetIcon(string fil ...

  4. MFC exe文件生成的图标更改方法

    MFC exe文件生成的图标更改方法 https://blog.csdn.net/txwtech/article/details/92980545

  5. VB高清图标制作方法

    我隆重介绍一个软件:ResHacker !!! 这个软件可以修改软件的很多东西包括图标和标题,下面看**作. 运行ResHacker打开要更改图标的exe文件, 图标组--1--右键0--替换资源-- ...

  6. 介绍一种很棒的wince 如何替换系统声音的方法

    Topic:介绍一种很棒的wince 如何替换系统声音的方法(作者:Baiduluckyboy) //------------------------------------------------- ...

  7. python制作exe可执行文件的方法---使用pyinstaller

    python制作exe可执行文件的方法---使用pyinstaller   python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinsta ...

  8. App劫持病毒剖析:你的应用是如何被替换的(病毒防范方法)

    App劫持病毒剖析:你的应用是如何被替换的(病毒防范方法) 一.App劫持病毒介绍 App劫持是指执行流程被重定向,又可分为Activity劫持.安装劫持.流量劫持.函数执行劫持等.本文将对近期利用A ...

  9. Java中替换HTML标签的方法代码

    这篇文章主要介绍了Java中替换HTML标签的方法代码,需要的朋友可以参考下 replaceAll("\\&[a-zA-Z]{0,9};", "").r ...

随机推荐

  1. C#:控制台程序调用中间库创建窗体

    1.类库项目引用System.Windows.Forms并添加引用后,才可创建窗体. 2.控制台应用程序调用中间库(DLL)中的方法创建窗体:中间类库使用反射下的Assembly加载包含窗体的类库及创 ...

  2. The C++ Standard Library --- A Tutorial Reference 读书笔记

    5.2 Smart Pointer(智能指针) shared_ptr的aliasing构造函数,接受一个shared pointer和一个raw pointer.它允许你掌握一个事实:某对象拥有另一个 ...

  3. MyCalView.php

    <html> <head> <title>我的计算器</title> <script language="javascript" ...

  4. 20150603_Andriod 多个窗体数据回调

    package com.example.test1; import android.support.v7.app.ActionBarActivity;import android.os.Bundle; ...

  5. hdu4914 Linear recursive sequence

    用矩阵求解线性递推式通项 用fft优化矩阵乘法 首先把递推式求解转化为矩阵求幂,再利用特征多项式f(λ)满足f(A) = 0,将矩阵求幂转化为多项式相乘, 最后利用傅里叶变换的高效算法(迭代取代递归) ...

  6. Java中的类加载器

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16102131 从java的动态性到类加载机制   我们知道,Java是一种动态语言.那么怎 ...

  7. 2016年11月29日 星期二 --出埃及记 Exodus 20:20

    2016年11月29日 星期二 --出埃及记 Exodus 20:20 Moses said to the people, "Do not be afraid. God has come t ...

  8. 工欲善其事必先利其器系列之:在VS里面折叠js代码

    之前用vs写js的时候经常因为js代码过长而且不能像cs文件里面的方法一样进行折叠而抓狂,直到在扩展库发现了这款插件有了它就可以把代码进行折叠了 插件地址

  9. BZOJ 3534 重建

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3534 题意:给定一个无向图,每条边有选择概率P:求选出的边恰是一棵生成树的概率. 思路: ...

  10. socket,TCP/IP的理解

    TCP/IP 要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间 ...