afan 发表于 2012-11-29 18:54:51

我经常是手工整合精简的,把常用的内容从头文件、udf中剥离出来,备份在一个文件中。同时也经常拆解函数,确 ...
vuivui 发表于 2012-11-29 07:20 http://www.autoitx.com/images/common/back.gif


    我现在整合已经实现了,现在有想法“精简整合”,暂时木头绪…… 如果实现了似乎可以取代“Obfuscator 代码迷惑”的精简脚本的功能。

vuivui 发表于 2012-11-29 21:31:00

我现在整合已经实现了,现在有想法“精简整合”,暂时木头绪…… 如果实现了似乎可以取代“Obfus ...
afan 发表于 2012-11-29 18:54 http://www.autoitx.com/images/common/back.gif


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

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

抽空我也做个试试。

vuivui 发表于 2012-11-29 21:36:57

关键是整合了就不好判别函数是否用到,只能是从主脚本开始逐层找的。

afan 发表于 2012-11-29 21:45:12

关键是整合了就不好判别函数是否用到,只能是从主脚本开始逐层找的。
vuivui 发表于 2012-11-29 21:36 http://www.autoitx.com/images/common/back.gif


    很多情况下,包含的文件不一定只有变量声明及函数定义的,也会有功能的执行。如果只在主脚本中找函数及变量,那就有可能漏掉那些脚本的执行。所以,我还是认为先要整合,当然,这只是我个人想法而已……

vuivui 发表于 2012-11-29 22:44:06

本帖最后由 vuivui 于 2012-11-29 23:02 编辑

很多情况下,包含的文件不一定只有变量声明及函数定义的,也会有功能的执行。如果只在主脚本中找 ...
afan 发表于 2012-11-29 21:45 http://www.autoitx.com/images/common/back.gif


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

这种情况下有两个办法,一个是手工把那个纯包含文件合并,因为是功能脚本应该都是有用内容。另一种办法就是整合后,先把所有非函数内的引用函数名列出来,然后逐步在函数内找出引用函数名,同时把引用到的函数都做上标记,全找出来后,删除未做上标记的函数(也就是无用函数)即可。变量的话,把预处理后的头文件整合,把此脚本中只匹配到一次的声明变量删除。整合前无用的注释等东西有必要先预处理一下。

afan 发表于 2012-11-29 22:53:16

如果除了变量声明和函数段外还有其他功能代码,那就不是标准的头文件,其实相当于把一个脚本拆成 ...
vuivui 发表于 2012-11-29 22:44 http://www.autoitx.com/images/common/back.gif


    精简函数我大致完成了,枚举使用的函数成列表,再一次性删除未在列表中的。
精简变量还在想办法,还木有头绪

vuivui 发表于 2012-11-29 23:13:19

声明的变量,如果只出现一次,说明没被用到过,删除这个声明,刚才在编辑20#已讲到,想不到你那么快回复了。

afan 发表于 2012-11-29 23:18:30

声明的变量,如果只出现一次,说明没被用到过,删除这个声明,刚才在编辑20#已讲到,想不到你那么快回复了 ...
vuivui 发表于 2012-11-29 23:13 http://www.autoitx.com/images/common/back.gif


    有些是函数内部的局部变量,可能会和全局变量同名,“把此脚本中只匹配到一次的声明变量删除”难以简单判读。另外,还有很多续行之类的,麻烦鸟。
Global Enum _
        $TestControlForceBilinear = 0, _
        $TestControlNoICM = 1, _
        $TestControlGetBuildNumber = 2
Global Enum _
        $HistogramFormatARGB, _
    $HistogramFormatPARGB, _
    $HistogramFormatRGB, _
    $HistogramFormatGray, _
    $HistogramFormatB, _
    $HistogramFormatG, _
    $HistogramFormatR, _
    $HistogramFormatA

afan 发表于 2012-11-29 23:21:41

不该弄这个的,难度高,死脑细胞……

vuivui 发表于 2012-11-29 23:29:07

辛苦了,我已在被窝里了,早点休息吧。我再想想。

vuivui 发表于 2012-11-29 23:32:03

猛按手机发不出去,等页面出来,已重复发n条了。

afan 发表于 2012-11-29 23:33:18

猛按手机发不出去,等页面出来,已重复发n条了。
vuivui 发表于 2012-11-29 23:32 http://www.autoitx.com/images/common/back.gif


    没关系,一出来就已被我消灭……

vuivui 发表于 2012-11-29 23:55:44

标题

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


    第一点,有用函数本就不多,就算偶尔重复一条也没关系。
第二点,先把回车符续行符替换为特殊字符,比如造个特殊变量,删除单个声明变量后,再替换为回车符续行符。

afan 发表于 2012-11-30 00:30:06

本帖最后由 afan 于 2012-11-30 19:22 编辑

回复 28# vuivui


    我在想先枚举所有的全局变量,再从枚举列表中删除有重复的,剩下的就是孤家寡人,清除之~ 关键是清除不好处理,形态比较多……
现在已能摘掉很多未使用变量了,但还没达到很精简的地步。变量的书写格式较为多样,还得处理“Assign、Eval、IsDeclared”的介入问题。
页: 1 [2]
查看完整版本: Au3 有整合脚本的工具或功能吗?