因项目需要,要把文件夹下的安装程序剔除出来,个人曾经尝试的方法:
1、查壳器查打包软件。结果:失败。打包软件打出来的不一定是安装程序,安装程序也不一定由打包软件打成。
2、分解EXE内部是否含多个资源文件,这个方法还没有研究出来,应该是类似杀毒软件一样,扫描至文件内部,看否由多个文件组成,也不能确认。
3、名称判断:如一般含SETUP名称的为安装程序。这个基本比较准确,但是应对面太窄。大家帮忙想下思路,实在是无法下手。郁闷了好多天。
1、查壳器查打包软件。结果:失败。打包软件打出来的不一定是安装程序,安装程序也不一定由打包软件打成。
2、分解EXE内部是否含多个资源文件,这个方法还没有研究出来,应该是类似杀毒软件一样,扫描至文件内部,看否由多个文件组成,也不能确认。
3、名称判断:如一般含SETUP名称的为安装程序。这个基本比较准确,但是应对面太窄。大家帮忙想下思路,实在是无法下手。郁闷了好多天。
解决方案 »
- 用ADO连接 sql2000出现的列名“xxx”无效 的问题,在线等。。。谢谢
- 如何获取U盘的硬件信息
- 怎样在DELPHI程序里操作WORD文档,谢谢
- 再开新贴,老问题,在线等。。。
- outlookbar问题(高分求助)
- 高难度问题,想把一个对像保存到数据,然后还能读出来!见者有分!!!!
- 如何用Delphi 写程序,给Windows添加计划任务,比如说定时做数据备份,在98、NT、2K下各怎么样来实现?
- 为什么Oracle中不需要设置主键?
- 救命!!!!!!!!!!!!!!!!!!!!大虾
- 一个问题:关于DLL的!请高手看看。
- 如何用SQL语句合并两张表
- 我想实现对200台机器的监控,该怎么做呢?
可以再判断一下程序头
2. 安装包与应用程序的尾部一般不同,应用程序的尾部很多空字节,安装包的尾部一般不是空字节(使用UE看一下)
3. 常见的打包软件不清楚有没有写打包软件信息
4. 一些安装软件的属性页中有Setup的字符串综合起来进行判断,应该可以提高识别的准确性。
;
; UniExtract uses four methods of detection (in order):
; 1. File extensions for special cases
; 2. Binary file analysis of files using TrID
; 3. Binary file analysis of PE (executable) files using PEiD
; 4. File extensions
;
; If detection fails, extraction is always attempted 7-Zip and InfoZip
感觉从PE上来分析更加可靠些。
如果是运行后能判断,也可以试下。运行后,当然能程序判断,这个估计也有点困难。查运行后窗体的名称??
谢谢大家,希望再多提些思路。
1. 判定一下文件大小,一般安装包会比较大
2. 判定文件名称,名称包含'install' 'setup'字符串这两个判定都不太准类似这样的处理,将每种判定设置一个合理的权值,将所有判定执行一下,获得权值和,权值和在达到一定的分数,就认为是安装包或应用程序
function getShellInfo(const Filename: string; const SmallIcon: Boolean = false):
TSHFILEINFO;
var
Flags: Integer;
begin
Flags := SHGFI_DISPLAYNAME or SHGFI_TYPENAME or SHGFI_ICON or
SHGFI_ATTRIBUTES;
if SmallIcon then
Flags := Flags or SHGFI_SMALLICON
else
Flags := Flags or SHGFI_LARGEICON;
FillChar(Result, SizeOf(TSHFILEINFO), 0);
SHGetFileInfo(Pchar(Filename), 0, Result, Sizeof(Result), Flags);
end;
基于图标,读取图标信息来判断准确度更低了。
比如用ZIP/RAR制作的自解压程序算不算安装程序2、要做一点类似模式识别的研究工作,类似杀毒软件识别病毒木马
找到各种安装程序样本,找出它们的共同点,提取特征码3、简单一点,可从制作安装程序的方法入手
把常见的打包软件和安装包格式查一下,如MSI、InstallShield、Wise
这里面各种五花八门的自定义“安装程序”要自动判断有难度
2、弹出对话框问操作人员:请问这是一个安装程序吗?【是】【否】
3、获取返回值,进行下一步操作……