131738
发表于 2018-6-10 19:38:55
本帖最后由 131738 于 2018-6-10 19:44 编辑
首先声明我不懂迷惑原理, 以下仅供参考 !
用你的这个工具,我处理了AutoIt 自带的 AutoIt3Wrapper.au3, SciteConfig.au3, CodeWizard.au3 共 3 个脚本,
目前看效果(只能看表象)还可以!
但在处理 SciteConfig.au3 时, 苦恼, 耗时我 3 天时间,
在 SciteConfig.au3 中,我添加了下面一句代码:
Global $Console_font = Select_Font($Console_font_Name, $Console_font_Size) ; 设置控制台字体
无论怎么设置迷惑选项, 处理后始终不能设置控制台字体(不能出现字体选择对话框),
最后仅让你的工具只整合, 不迷惑, 整合脚本与源脚本对照, 才发现整合后的脚本将这句代码精简了!!!
估计你的工具将变量 $Console_font 作为未使用变量处理了(因为此变量仅在这句代码中出现一次)
以前我整合 SciteConfig.au3 脚本用的是 AutoIt 自带的 AU3Stripper.exe 处理的, 一直没有问题!
问题(完全是我的主观臆断, 仅供你参考):
因为看似这个变量在整个脚本中只出现一次, 但 AU3Stripper.exe 能正确处理, 可见你的工具处理这个情况有不周到之处.
我认为仅只有
Global $Console_font
或
Local $Console_font
这样的定义行, 没有任何引用行, 才能看作未使用变量而整合掉,
而我的定义:
Global $Console_font = Select_Font($Console_font_Name, $Console_font_Size) ; 设置控制台字体
看似在脚本中只出现一次, 但与 Global $Console_font纯定义完全不是一回事, 你认为呢?
tubaba
发表于 2018-6-10 21:53:43
无聊躺床上玩手机,随便点了一下论坛URL,居然打开了~.焕然一新.养眼,感谢发哥的辛勤付出
首先,对于瘦身脚本对您带来的困扰,表示歉意.花了三天时间....不好意思.其实 这个问题.我早就发现了.精减部分的代码是在16年完成的.当时我的追求就是把代码瘦身不能再瘦身的地步.
确实有不少需要改进的地方,在自己的使用过程中,也发生过您这样的情况.把以变量声明方式进行的某一函数操作给精减掉了.花了不少精力去除错,结果发现关键语句被卡擦了.只有苦笑.虽然在程序的使用说明中,我特别强调了这一点.但从实际情况来看,很容易把这个给忽略掉.必竟不是所有代码都是自己码出来的,不少UDF中可能也有这种声明的方式.
这个问题解决起来还是有些烧脑的.您说的我认为仅只有
Global $Console_font
或
Local $Console_font
这样的定义行, 没有任何引用行, 才能看作未使用变量而整合掉其实 还是考虑不周的.如果仅以" Global $Console_font "这种类型的变量做为判定的标准.那么整合后的脚本将会留下大量无用的变量声明.比如
"Global Const $BS_ICON = 0x0040
Global Const $BS_BITMAP = 0x0080
Global Const $BS_AUTORADIOBUTTON = 0x0009
Global Const $BM_GETIMAGE = 0xF6
Global Const $BM_SETIMAGE = 0xF7
Global Const $DEFAULT_CHARSET = 1
Global Const $OUT_DEFAULT_PRECIS = 0...."
UDF中大量的存在着这种形式的变量.
关于如何解决,我已有想法,只是一直懒得去实现.~
仅凭自己的爱好.写了这么一个工具.有的时候实在是懒得再去修改.有100%的付出.却没有1%的回报.既然还有人在使用,那么这几天我会认真的考虑一下,解决这个问题.
131738
发表于 2018-6-11 10:52:37
tubaba 发表于 2018-6-10 21:53
无聊躺床上玩手机,随便点了一下论坛URL,居然打开了~.焕然一新.养眼,感谢发哥的辛勤付出
首先,对于瘦身脚本 ...
16年前就写成瘦身代码, 那么就不是 au3 写的了, 应该是编程高手了, 失敬了!
回头细想, 我这个添加代码书写格式也不正规, 既然变量 $Console_font 只在定义行出现一次,
而脚本能正常运行, 说明这个变量完全可以不需要, 只要调用函数,传递参数, 函数会自动设置的.
也怪我只会饶头苦恼,没有仔细看使用说明, 抱歉 !
131738
发表于 2018-6-11 11:07:38
tubaba 发表于 2018-6-10 21:53
无聊躺床上玩手机,随便点了一下论坛URL,居然打开了~.焕然一新.养眼,感谢发哥的辛勤付出
首先,对于瘦身脚本 ...
我已在我的置顶贴设置了你这个帖子的链接, 等同这个帖子也" 置顶 "了, 呵呵...........
tubaba
发表于 2018-6-11 11:39:42
本帖最后由 tubaba 于 2018-6-11 12:03 编辑
131738 发表于 2018-6-11 11:07
我已在我的置顶贴设置了你这个帖子的链接, 等同这个帖子也" 置顶 "了, 呵呵...........
針對這個問題已解決.但還未做大量測試.效果还有待观察.更新版本已放出.
已更改变量精减规则.凡是以声明变量形式进行的函数操作都不会被精减.因此,您的那个问题应该能解决.另.不是16年前写的....是2016年.脸红.
131738
发表于 2018-6-11 12:24:28
tubaba 发表于 2018-6-11 11:39
針對這個問題已解決.但還未做大量測試.效果还有待观察.更新版本已放出.
已更改变量精减规则.凡是以声明 ...
OK , 辛苦了.......
zpmc123
发表于 2018-6-12 21:21:20
也许这就是做软件的苦恼,百分之百的付出,到最后还还没到百分之一的回报,要不你把注册机制改一下,做个试用期15天然后注册才能使用全功能!支持楼主辛苦付出!
llztt
发表于 2018-6-13 09:20:48
正要学习这个呢
llztt
发表于 2018-6-13 09:20:48
正要学习这个呢
pyj521
发表于 2018-6-13 09:22:24
感谢分享 测试效果
悟雨
发表于 2018-6-19 16:07:47
感谢分享,下载试试
chishingchan
发表于 2018-6-21 07:18:34
看了38楼的代码,其实是将变量变成一个固定长度的字符串。在反编译程序成源码时就是这个样子的。
kkkpep
发表于 2018-6-21 14:41:53
本帖最后由 kkkpep 于 2018-6-21 14:45 编辑
原始:
#AccAu3Wrapper_Outfile=C:\Users\Administrator\Desktop\install.exe
#AccAu3Wrapper_Outfile_x64=C:\Users\Administrator\Desktop\install_x64.exe
#AccAu3Wrapper_Compile_Both=y
#AccAu3Wrapper_UseX64=n
MsgBox(0, 0, install())
Func install()
MsgBox(0, 0, 1)
EndFunc ;==>install
迷惑后:
;**** 脚本使用 Au3Encode 迷惑并创建****
#AccAu3Wrapper_Outfile=C:\Users\Administrator\Desktop\J6INDF91K812.exe
#AccAu3Wrapper_Outfile_x64=C:\Users\Administrator\Desktop\install_x64.exe
#AccAu3Wrapper_Compile_Both=y
#AccAu3Wrapper_UseX64=n
MsgBox(0, 0, J6INDF91K812())
Func J6INDF91K812()
MsgBox(0, 0, 1)
EndFunc
第一行install.exe变成了J6INDF91K812.exe
tubaba
发表于 2018-6-22 17:32:44
kkkpep 发表于 2018-6-21 14:41
原始:
#AccAu3Wrapper_Outfile=C:%users\Administrator\Desktop\install.exe
#AccAu3Wrappe ...
已更新.感谢回馈
llztt
发表于 2018-6-26 23:25:27
又更新了呢,辛苦
请教楼主,主AU3里inlude一个副AU3,而该副AU3里的函数和变量都不想或不能被迷惑(譬如迷惑后容易BUG),可否加上一个这样的不迷惑某包含文件的选项呢?? 如果实现了的话,用户可以自行把不迷惑的函数或变量集中于特定AU3里(一般是程序代码的一个组件),而不用在用贵工具迷惑时再去指定排除一个个的变量和一个个的函数