无忧启动论坛

标题: 也许可以通过文件的相关性来确定哪些文件是必要的可能可以提高精简效率 [打印本页]

作者: 123    时间: 2007-1-7 09:21
标题: 也许可以通过文件的相关性来确定哪些文件是必要的可能可以提高精简效率
一个EXE或DLL文件往往要依靠其它DLL才能运行,所以我想如果能分析几个已知必要的文件需要哪些DLL文件,再分析这些DLL文件又需要哪些文件,最后得到一个文件列表,这个文件列表里的文件可以认为是不可以精简掉的,这样可以只对列表外的文件进行精简可以节省很多时间。

[ 本帖最后由 123 于 2007-1-7 09:22 AM 编辑 ]

1.JPG (23.01 KB, 下载次数: 72)

用EXESCOPE看到的这些文件是运行这个程序必需的

用EXESCOPE看到的这些文件是运行这个程序必需的

作者: strongchen    时间: 2007-1-7 11:31
不一定准确,因为必须的dll可能也需要其他dll才可以运行。

发一个工具,可以把当前使用中的dll文件列出来。

我就是用它确定,pppoe拨号有那些文件是必须内置的

服务驱动管理器.rar

66.06 KB, 下载次数: 73, 下载积分: 无忧币 -2


作者: strongchen    时间: 2007-1-7 11:34
运行后选择 “显示”-“模块”,就可以看见有多少个dll在运行。

我通过比较 支持pppoe拨号的xpe启动后运行的dll,和支持网络但不支持pppoe拨号的xpe启动后运行的dll,就知道了

那些dll是必须内置的
作者: 沙漠之子    时间: 2007-1-7 19:05
原帖由 123 于 2007-1-7 09:21 AM 发表
一个EXE或DLL文件往往要依靠其它DLL才能运行,所以我想如果能分析几个已知必要的文件需要哪些DLL文件,再分析这些DLL文件又需要哪些文件,最后得到一个文件列表,这个文件列表里的文件可以认为是不可以精简掉的, ...

这种方法我用过。

原帖由 strongchen 于 2007-1-7 11:31 AM 发表
不一定准确,因为必须的dll可能也需要其他dll才可以运行。

发一个工具,可以把当前使用中的dll文件列出来。

我就是用它确定,pppoe拨号有那些文件是必须内置的

这个工具其实不够好,不能显示哪个进程,使用该模块

任务管理器2003.rar

338.68 KB, 下载次数: 65, 下载积分: 无忧币 -2


作者: lxl1638    时间: 2007-1-7 19:22
1楼的图列出的DLL有大部分可以说是任何程序都要用到的:
SHELL32.DLL、USER32.DLL、KERNEL32.DLL、......,但凭这个不准确,因为不列出的也可能会用动,动态加载的DLL在导入列表中没有列出来。
很多程序都用到NTDLL.DLL,但极少程序的导入列表中有它的名字。
作者: strongchen    时间: 2007-1-7 20:03
原帖由 沙漠之子 于 2007-1-7 07:05 PM 发表

这种方法我用过。

这个工具其实不够好,不能显示哪个进程,使用该模块


要显示进程工具多的是,这个工具可以把现在运行的模块导出到xml文件。

通过对xml文件做编辑,可以很容易对比出不同的部分(非人手操作)

这才是最有用的。
作者: 123    时间: 2007-1-9 22:25
用pe explorer可以看到程序用到的DLL和这些DLL用到的DLL,还可以导出列表,这样应该可以用。

1.JPG (27.02 KB, 下载次数: 85)

1.JPG

作者: 123    时间: 2007-1-9 22:41
原帖由 faofwuyou 于 2007-1-9 10:31 PM 发表
如果是编程人员自己通过LoadLibraryA函数加载的DLL,这些程序能识别到吗.................

经测试好像不行,不过没关系,如果缺少文件他应该会提示加载某个文件失败(返回值为0),但程序的启动是没有问题的。我只需要保证程序能够启动,不保证不出错。

[ 本帖最后由 123 于 2007-1-9 10:46 PM 编辑 ]




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3