[教程]如何制作绿⾊软件
没有固定⽅法,基本是猜测加试验,不同类别绿⾊软件分别有不同制作策略。
拿到⼀个新的软件,想要制成绿⾊软件的话,我⼀般遵循如下步骤:
⼀、判断猜测该软能不能制成绿软,从功能,从对它的了解,如果觉得和系统关系⾮常紧密,就不要继续了,还是⽤原始安装程序最保险最⽅便,这样例⼦有directx9 ,IE6,Norton反病毒等。这样判断可节省时间,当然可忽略这⼀步,尝试制作。
⼆、绿化对于不同软件有不同⽅法,没有⼀定规则,但是总的来说,就是理解软件安装过程,转换为绿⾊安装,在这个过程中,可能需要尝试多个⽅法,也可能最后由于软件复杂性或某些特性,⽆法绿化。要有失败思想准备,具体绿化⽅法随后讲述
代码编辑器怎么下载 三、
三、测试 "绿化"后的测试最好到全新安装操作系统中测试,且如果要在多个操作系统中使⽤该软,还要在其他操作系统中测试,有的软件的⽂件随操作系统不同⽽不同,这个时候需要在不同操作系统中进⾏"绿化"过程,最后综合为⼀个完整适应多个操作平台绿软。 "绿化"⽅法,需要根据经验选择不同"绿化"⽅法,也可能需要不断尝试不同⽅法,直到成功为⽌。
按照先易后难的次序,具体的⽅法包括:
1 解压缩。指尝试⽤Winzip和Winrar能不能直接打开压缩的安装⽂件,如不能打开,就换⽅法。如可以,那么该软多半属绿⾊安装软件(有个别例外,如EmEditor),把压缩包中的⽂件直接解压到⽬标路径,然后测试软件功能是否正常,如正常,那么"绿化"就成功了,如使⽤不正常,就换⽅法。这⼀类软件特点是安装程序的⼯作完全可以由软件⾃⾝来完成。
2安装然后卸载。指直接安装该软,然后把程序复制出来,最后卸载安装程序。如该软件安装程序的作⽤仅仅是复制⽂件和⽣成快捷键等,那就属绿⾊安装,可使⽤这个⽅法。最后测试软件功能是否正常,如正常,"绿化"就成功了,如使⽤不正常,换⽅法。
3 反编译安装程序。动脑筋,就是根据安装程序所⽤的制作⼯具,选择相应反编译程序,然后阅读反编译出的安装脚本,来绿化。软件⼤多使⽤专门安装⼯具制作,如
InstallShield,Wise,Inno Setup,Windows Installer,NSIS(Nullsoft),Installer VISE,其中WindowsInstaller格式的安装⽂件(就是MSI,MST为后缀的⽂件)可通过微软免费⼯具Orca打开看,InstallShield格式的安装⽂件也有很多免费⼯具可解压缩和查看脚本。当然专门安装⼯具很多,有许多安装程序没有相应反编译程序,这时,就⽆法使⽤该法。
4 观察反安装程序和log⽂件。现在的软件安装完成后绝⼤多数都带有卸载⽅法。卸载是安装的逆过程,如果知道怎么卸载,那么也可以推测出如何安装。由专门的安装⼯具制作的反安装程序,⼀般都是根据某⼀个⽂件中的信息来卸载的,可以⽤⼀个纯⽂本的编辑器打开这个⽂件。个别情况下这个⽂件完全不包含可读信息,就只好换法。具体过程就是先采⽤⽅法2,然后理解反安装过程,最后根据反安装的信息制作绿⾊软件。
5 ⽐较系统快照。当前⾯的⽅法都失败的时候,可以试⼀试这个⽅法。具体思路就是⾸先在安装软件之前,把系统的状态记录下来,主要包括注册表和系统⽬录的所有的⽂件状态。然后就是安装软件。安装完成后,再⼀次记录系统状态。最后就是⽐较前后两个系统状态的不同,⽽得知安装程序所做的⼯作。这个⼯作⼀般由专门的软件完成,如免费⼯具Regshot(帖⼦最后有下载),免费⼯具inctrl5(帖⼦最后有下载),微软公司的sysdiff⼯具(帖⼦最后有下载),或者WinInstall LE(在Windows 2000 Sever 光盘的⽬录
VALUEADD\3RDPARTY\MGMT\WINSTLE\中)。在多数时候,仅仅需要对⽐安装前后注册表的不同,这时候还有⼤量的注册表⼯具可以选⽤。在得出系统差异后,把差异分解为两个部分:⽂件部分和注册表部分。⽂件部分指的是向系统⽬录拷贝的⽂件,以及作为COM组件注册的⽂件,还有与这些⽂件相关的注册表部分。注册表部分单单指其余的注册表的变化。对于⽂件部分,可以进⼀步区分出必须要往系统⽬录拷贝的⽂件(这种情况是少数)和可以放在软件的安装⽬录的⽂件。对于注册表部分,区分出由
这个软件的安装程序本⾝所作出的注册表操作和注册COM组件时候的注册表操作,抛弃其他程序(如资源管理器Explorer)的操作。根据所有这些,写⼀个拷贝⽂件,注册COM组件和导⼊注册表的批处理⽂件,就可以完成绿⾊软件的制作了。当注册表⽂件中含有路径信息的时候,可以⼿⼯修改注册表⽂件或者把注册表⽂件转化为INF⽂件从⽽实现全⾃动的路径处理。
6 直接导出注册表,寻⾃注册的COM组件。这个⽅法是上⾯的⽅法5的简化版,现在软件的配置⼤多写在注册表中的"HKEY_LOCLAL_MACHINE\SOFTWARE\软件公司名
字"和"HKEY_CURRENT_USER\SOFTWARE\软件公司名字"这2个键下⾯,直接对把这2个注册表键导出到REG⽂件中。⾃注册的COM组件都需要导出如下4个函数:
DllCanUnloadNow,DllGetClassObject,DllRegisterServer, DllUnregisterServer,可以⽤vc⾃带的出哪⼀个动态链接库是⾃注册的COM组件。最后写⼀个批处理⽂件⽤
<注册COM组件和⽤导⼊注册表。通过上⾯分析安装程序的动作,把安装程序的⼯作分解为复制⽂件,注册COM组件,安装服务驱动,注册表配置等⼏个部分,虽然注册表配置可以覆盖注册COM组件,安装服务驱动等操作步骤,但是把这些明显分割出来有助于制作绿⾊安装的软件。对于需要更复杂的步骤来安装的软件,还是使⽤原来的安装程序⽐较保险。
具体事例:
winrar3.30 和Winzip9.0
1,解压缩。下载和后,在⼀个安装了Winrar的系统上,⽤⿏标右键选择下载的⽂件,运⾏右键菜单中的⽤Winrar打开命令,然后把⽂件解压到⽬标路径,如E:\tools⽬录,就可以了。然后分别对Winzip9和Winrar进⾏设置就可以了。运⾏winzip9⽬录中的,进⾏winzip设置。Winrar也⼀样,运⾏,打开菜单选项-〉设置,弹出⼀个对话框,选择标签--集成,逐项对Winrar设置。当拷贝到U盘⽽到新的机器上运⾏时,需要重复这些设置过程。
这⼀类软件特点是安装程序⼯作完全可以由软件⾃⾝来完成,从⽽完全抛开安装程序,或者说安装程序的⼯作也就是解压缩。类似的软件还有⼀些,最简单的测试办法就是看看Winrar能否直接打开压缩的安装程序。也可以采⽤⽅法2,过程基本上和⽅法1⼀样。⽅法2就不具体说明了,仅仅指出有许多程序属于这个类别,如Myie2,GreenBrowser,qq,BPFTP
Server,IDA_Pro_Standard_4.5.1.770,FinalData,EASYRECOVERY 6.03,腾逊公司的TM等。 flashget是⼤家⽤得⽐较多的⼀个软件,可以多线程下载并且下载管理的功能也很⽅便,下载flashget1.60a国际版,运⾏下,然后取消安装。从上可看出flashget1.60a国际版是使⽤Wise制作安装程序,下载wungui程序,⾮常容易的把安装程序解压缩到⼀个⽬录中,观察Maindir⽬录,其中有两个DLL⽂件Jccatch.dll和fgiebar.dll,进⼀步察看这两个动态库⽂件导出函数,可以知道这两个⽂件都是⾃注册
COM组件,写⼀个批处理⽂件install.bat来注册这两个DLL:REGSVR32 JCCATCH.DLL /s REGSVR32 fgiebar.dll /s 经过测试,功能正常,且可从浏览器IE中⽤⿏标右键菜单激活flashget,功能完全,下⾯考虑卸载过程:
运⾏,发现flashget在注册表中路径是
[HKEY_CURRENT_USER\\Software\\JetCar\\JetCar],写⼀个注册表⽂件删除这个路径,如下:
REGEDIT4 ; flashget [-HKEY_CURRENT_USER\\Software\\JetCar\\JetCar] 同时写⼀个批处理⽂件uninstall.bat来卸载这两个DLL⽂件并导⼊: /s REGSVR32 JCCATCH.DLL /s /U REGSVR32 fgiebar.dll /s /U 随后就是删除⼀些⽤不到的⽂件,⽐如language⽬录的绝⼤多数欧洲语⾔⽂件,这时候这个绿⾊版本就做好了。
把作好的绿⾊的flashget拷贝到U盘上,需要⽤的时候,直接执⾏⾥⾯的install.bat⽂件就可以了(注意,要在flashget的⽬录运⾏批处理⽂件),不需要任何⽂件拷贝。我看到有⼈提到⽤优化⼤师提取falshget的注册表,然后直接导⼊注册表来制作绿⾊的flashget,是不⾏的,从我前⾯的步骤来看,注册2个DLL⽂件必然在注册表中引⼊了绝对路径,那如果直接提取注册表话,就必须根据当前路径来修改注册表中路径,否则制作的绿⾊版flashget只能在固定⽬录运⾏。在制作flashget绿⾊版时,我同时使⽤了⽅法3
和⽅法6,使⽤⽅法3⽬的就是避免安装程序对系统作修改,这样可直接在当前系统进⾏测试,⽽不需到另外⼀个没有安装过flashget的系统测试。
Editor是⽅法1的⼀个反例。Emeditor可以从开发商主页urasoft/下载,是⼀个简单好⽤的⽂本编辑器,⽀持多种配置,⾃定义颜⾊、字体、⼯具栏、快捷键设置,可以调整⾏距,避免中⽂排列过于紧密,具有选择⽂本列块的功能(按ALT 键拖动⿏标),并允许⽆限撤消、重做,总之功能多多,使⽤⽅便,是替代记事本的最佳编辑器。下载后,发现⽤Winrar可打开,解压后,运⾏Emeditor,发现丢失了预定义的多种⽂本格式的语法配置,看来这样做不⾏,只好采⽤⽅法5了。请随我⼀步步进⾏,步骤如下:
1 扫描系统,制订系统快照。这⾥我仅仅记录当前系统的注册表(因为我认为Emeditor不会向系统⽬录拷贝⽂件,如果判断错误,就会导致"绿化"失败),运⾏ART(Advanced Registery Tracer),扫描⼀遍注册表。不要关闭ART。
2 安装Emeditor。随便安装到哪⾥,反正⼀会就卸载。安装好后,如果需要的话,更改配
置,或者配置新的⽂件类型,例如我就增加了NFO⽂件类型,设定和NFO⽂件相关联的字符集,这样可以⽤Emeditor直接察看NFO⽂件,不需要专门的察看⼯具了。
3记录系统变化。再⼀次扫描系统,给系统作快照,从ART⾥⾯再⼀次扫描注册表,然后选择菜单命令Registry-〉compare here或者直接⽤键盘F10,点击那个save to redo file的按钮,存储为⽂件,关闭ART。
4 复制并卸载。复制安装好的Emeditor⽬录到其他路径,然后卸载Emeditor程序。
5 分析。打开刚刚导出的⽂件,这是⼀个巨⼤的reg⽂件,单单是REG⽂件就有1兆多,不过不⽤担⼼。阅读注册表后,删除和emeditor⽆关的注册表项后,如仅仅和资源管理器相关的注册表部分,发现剩下的注册表⽂件可以分成3个部分。⼀部分在位于注册表的这个路径[HKEY_LOCAL_MACHINE\\SOFTWARE\\EmSoft],⾥⾯⼤部分不涉及路径,只有⼀项记录了Emeditor的路径,就是\"ModulePath\"=\"h:\\\\EmEditor4\\\\\";还有⼀⼤部分在注册表的这个路径下⾯[HKEY_CURRENT_USER\\Software\\EmSoft\\EmEditor v3],⾥⾯有很多项都涉及了Emeditor的路径,如\"Tmpl\"=\"h:\\\\EmEditor4\\\\l\";还有就是和Emeditor和txt⽂件后缀向关联的注册表设置,把Emeditor设置为IE中缺省的源代码察看⼯具的注册表设置以及注册COM组件EMEDSHL.DLL的注册表部分(和InProcServer32相关的就是)。
6 "绿化"。
1) 把位于注册表路径路径[HKEY_LOCAL_MACHINE\\SOFTWARE\\EmSoft]的内容存储到emeditor_H
<⽂件中,把位于注册表路径
[HKEY_CURRENT_USER\\Software\\EmSoft\\EmEditor v3]的内容存储到⽂件中,把剩下的内容⾸先除掉COM组件EMEDSHL.DLL的相关部分,然后存储到
⽂件中。
2) 把⽂件和⽂件中涉及到路径的注册表内容抽取出来,存储到⽂件。
3) 把⽂件和⽂件⽤INF的语法转换为INF⽂件,或者⽤⼀个免费⼩⼯具⾃动转换,然后把转换得到的emeditor_assoc.inf⽂件和emeditorConf.inf⽂件中的路径h:\\EmEditor4全部⽤%01%代替。下⾯是emeditorConf.inf⽂件的内容:
[Version] Signature=\"CHICAGO\"
[DefaultInstall] AddReg=EmeditorConf_AddReg
hklm,\"SOFTWARE\\EmSoft\\EmEditor v3\\Common\",\"ModulePath\",,\"%01%\\\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\C++\",\"Tmpl\",,\"%01%\\template.cpp\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\CSS\",\"Tmpl\",,\"%01%\\template.css\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\HTML\",\"Tmpl\",,\"%01%\\template.htm\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\Java\",\"Tmpl\",,\"%01%\\template.java\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\javascript\",\"Tmpl\",,\"%01%\\template.js\" hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\JSP\",\"Tmpl\",,\"%01%\\template.jsp\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\Perl\",\"Tmpl\",,\"%01%\\template.pl\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\PHP\",\"Tmpl\",,\"%01%\\template.php\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\Python\",\"Tmpl\",,\"%01%\\template.py\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\Ruby\",\"Tmpl\",,\"%01%\\template.rb\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\TeX\",\"Tmpl\",,\"%01%\\\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\VBScript\",\"Tmpl\",,\"%01%\\template.vbs\" hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\VBScript for
EmEditor\",\"Tmpl\",,\"%01%\\template.vbee\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\Windows
Script\",\"Tmpl\",,\"%01%\\template.wsf\"
hkcu,\"Software\\EmSoft\\EmEditor v3\\Config\\XML\",\"Tmpl\",,\"%01%\\l\"
** 写⼀个批处理⽂件install.bat,内容如下:
regedit
regedit
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 .\\emeditorConf.inf
regsvr32 EMEDSHL.DLL
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 .\\emeditor_assoc.inf ‘
4) 把
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论