找回密码
 加入
搜索
楼主: afan

[AU3基础] Au3 有整合脚本的工具或功能吗?

 火.. [复制链接]
 楼主| 发表于 2012-11-29 18:54:51 | 显示全部楼层
我经常是手工整合精简的,把常用的内容从头文件、udf中剥离出来,备份在一个文件中。同时也经常拆解函数,确 ...
vuivui 发表于 2012-11-29 07:20



    我现在整合已经实现了,现在有想法“精简整合”,暂时木头绪…… 如果实现了似乎可以取代“Obfuscator 代码迷惑”的精简脚本的功能。
发表于 2012-11-29 21:31:00 | 显示全部楼层
我现在整合已经实现了,现在有想法“精简整合”,暂时木头绪…… 如果实现了似乎可以取代“Obfus ...
afan 发表于 2012-11-29 18:54



    我觉得先整合不合适。不整合的话,根据引用函数名逐层在头文件寻找函数,把常量和变量同时提取出来,然后分别合并有用函数和变量就可以了。如果整合了,怎么去除多余内容呢?

函数提取出来后,判别有用变量是很方便的。

抽空我也做个试试。
发表于 2012-11-29 21:36:57 | 显示全部楼层
关键是整合了就不好判别函数是否用到,只能是从主脚本开始逐层找的。
 楼主| 发表于 2012-11-29 21:45:12 | 显示全部楼层
关键是整合了就不好判别函数是否用到,只能是从主脚本开始逐层找的。
vuivui 发表于 2012-11-29 21:36



    很多情况下,包含的文件不一定只有变量声明及函数定义的,也会有功能的执行。如果只在主脚本中找函数及变量,那就有可能漏掉那些脚本的执行。所以,我还是认为先要整合,当然,这只是我个人想法而已……
发表于 2012-11-29 22:44:06 | 显示全部楼层
本帖最后由 vuivui 于 2012-11-29 23:02 编辑
很多情况下,包含的文件不一定只有变量声明及函数定义的,也会有功能的执行。如果只在主脚本中找 ...
afan 发表于 2012-11-29 21:45



    如果除了变量声明和函数段外还有其他功能代码,那就不是标准的头文件,其实相当于把一个脚本拆成了两个文件,既然是这样肯定有拆开的理由,本身就没有整合的必要了,这种Include不是头文件,应该是纯粹的包含文件。

这种情况下有两个办法,一个是手工把那个纯包含文件合并,因为是功能脚本应该都是有用内容。另一种办法就是整合后,先把所有非函数内的引用函数名列出来,然后逐步在函数内找出引用函数名,同时把引用到的函数都做上标记,全找出来后,删除未做上标记的函数(也就是无用函数)即可。变量的话,把预处理后的头文件整合,把此脚本中只匹配到一次的声明变量删除。整合前无用的注释等东西有必要先预处理一下。
 楼主| 发表于 2012-11-29 22:53:16 | 显示全部楼层
如果除了变量声明和函数段外还有其他功能代码,那就不是标准的头文件,其实相当于把一个脚本拆成 ...
vuivui 发表于 2012-11-29 22:44



    精简函数我大致完成了,枚举使用的函数成列表,再一次性删除未在列表中的。
精简变量还在想办法,还木有头绪
发表于 2012-11-29 23:13:19 | 显示全部楼层
声明的变量,如果只出现一次,说明没被用到过,删除这个声明,刚才在编辑20#已讲到,想不到你那么快回复了。
 楼主| 发表于 2012-11-29 23:18:30 | 显示全部楼层
声明的变量,如果只出现一次,说明没被用到过,删除这个声明,刚才在编辑20#已讲到,想不到你那么快回复了 ...
vuivui 发表于 2012-11-29 23:13



    有些是函数内部的局部变量,可能会和全局变量同名,“把此脚本中只匹配到一次的声明变量删除”难以简单判读。另外,还有很多续行之类的,麻烦鸟。
Global Enum _
        $TestControlForceBilinear = 0, _
        $TestControlNoICM = 1, _
        $TestControlGetBuildNumber = 2
Global Enum _
        $HistogramFormatARGB, _
    $HistogramFormatPARGB, _
    $HistogramFormatRGB, _
    $HistogramFormatGray, _
    $HistogramFormatB, _
    $HistogramFormatG, _
    $HistogramFormatR, _
    $HistogramFormatA
 楼主| 发表于 2012-11-29 23:21:41 | 显示全部楼层
不该弄这个的,难度高,死脑细胞……

评分

参与人数 1金钱 +10 收起 理由
轩辕小妖 + 10 A版辛苦了~~

查看全部评分

发表于 2012-11-29 23:29:07 | 显示全部楼层
辛苦了,我已在被窝里了,早点休息吧。我再想想。
发表于 2012-11-29 23:32:03 | 显示全部楼层
猛按手机发不出去,等页面出来,已重复发n条了。
 楼主| 发表于 2012-11-29 23:33:18 | 显示全部楼层
猛按手机发不出去,等页面出来,已重复发n条了。
vuivui 发表于 2012-11-29 23:32



    没关系,一出来就已被我消灭……
发表于 2012-11-29 23:55:44 | 显示全部楼层

标题

有些是函数内部的局部变量,可能会和全局变量同名,“把此脚本中只匹配到一次的声明变量删除”难 ...
afan 发表于 2012-11-29 23:18



    第一点,有用函数本就不多,就算偶尔重复一条也没关系。
第二点,先把回车符续行符替换为特殊字符,比如造个特殊变量,删除单个声明变量后,再替换为回车符续行符。
 楼主| 发表于 2012-11-30 00:30:06 | 显示全部楼层
本帖最后由 afan 于 2012-11-30 19:22 编辑

回复 28# vuivui


    我在想先枚举所有的全局变量,再从枚举列表中删除有重复的,剩下的就是孤家寡人,清除之~ 关键是清除不好处理,形态比较多……
现在已能摘掉很多未使用变量了,但还没达到很精简的地步。变量的书写格式较为多样,还得处理“Assign、Eval、IsDeclared”的介入问题。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-18 09:30 , Processed in 0.069731 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表