找回密码  加入

AUTOIT CN

搜索
楼主: tubaba

[原创] ,Au3Encode-代码整合迷惑- 20190507

[复制链接]
 楼主| 发表于 2017-4-8 13:49:01 | 显示全部楼层
本帖最后由 tubaba 于 2017-4-8 14:03 编辑

回复 89# 131738


    对哦,这个注册表路径是由afan的AuVerManage_1.3添加的,可能是因为我用过此工具的关系.

83楼那个不是操作英文版哦,整个编译环境采用了你的汉化版本,第一次编译迷惑后的AutoIt3Wrapper_OBF.au3是用自带的AutoIt3Wrapper,所以控制台信息是中文的
然后用编译好的AutoIt3Wrapper_OBF.exe替换原版AutoIt3Wrapper.exe进行编译其它脚本.因为原始的AutoIt3Wrapper.au3是英文,所以控件台也显示英文了.
测试没有出现你提出的错误,所以我也不明白,能不能抓图给我看看


这并不能说明汉化脚本有问题,具体原因具体分析,检查脚本是否有不适合处理的地方
  1. 4、  在已经勾选函数迷惑进阶和变量迷惑进阶的情况下一般不需要进行函数和变量名称的排除,但排除以下情况:

  2. 函数或变量名称是由字符串链接而成,比如"aa" & "bb",此时,需要将"aabb"加入忽略列表;

  3. 函数或变量名称是含文本字符串表达式运算后的结果,比如StringTrimLeft('aabb',1)此时,需要将"abb"加入忽略列表;

  4. 请尽量使文本字符串包含完整的变量名或函数名,这样就不需进行函数和变量名称的排除;
  5. 为什么要这样做?
  6. 举例:脚本已声明$Form变量,如果要使用Eval函数返回$Form的值,普通脚本可以eval("Form"),但是如果进行迷惑处理后会导致脚本错误[$Form已被替换成随机名称,而字符串"Form"不会改变],这种情况要修改脚本Eval(StringTrimLeft("$Form", 1));

  7. 5、  关于迷惑进阶

  8. 如果勾选变量迷惑进阶,本程序会对字符串中包含完整变量名称的字符串进行处理,如字符串包含"$button1,$button2,...",而实际又存在$button1,$button2这二个变量,那么字符串中的$button1,$button2会被替换成迷惑后的随机字符串,但形如"button1,button2,..."的字符串不会被处理;

  9. 如果勾选函数迷惑进阶,本程序会把包含且仅包含函数名称的字符串字面量作为函数处理,如GUIRegisterMsg($WM_COMMAND,"WM_COMMAND"),而脚本中又存在名称为"WM_COMMAND"的自定义函数,那么"WM_COMMAND"会随函数一起进行迷惑处理,但形如" WM_COMMAND"的字符串不会被处理,因为字符串多了一个空格;
复制代码
发表于 2017-4-8 14:09:44 | 显示全部楼层
回复  131738


    对哦,这个注册表路径是由afan的AuVerManage_1.3添加的,可能是因为我用过此工具的关 ...
tubaba 发表于 2017-4-8 13:49


谢谢提示,我完全不懂............容我慢慢体会吧........
 楼主| 发表于 2017-4-8 15:26:04 | 显示全部楼层
修正一下91楼的说法,关于autoit官方原版安装路径在注册表中是有的,这个路径区分系统

在X86系统上,这个路径是HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt
在X64系统上,这个路径是HKEY_LOCAL_MACHINE64\SOFTWARE\WOW6432Node\AutoIt v3\AutoIt

如果使用了AuVerManage_1.3,之后,这个路径没有系统之分,统一为HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt
发表于 2017-4-8 16:09:00 | 显示全部楼层
修正一下91楼的说法,关于autoit官方原版安装路径在注册表中是有的,这个路径区分系统

在X86系统上,这个路 ...
tubaba 发表于 2017-4-8 15:26



    显然不是你说的那么简单。AuVerManage 不仅必须区分x86、x64系统,还对论坛出现过的诸多民间版本做了兼容处理
 楼主| 发表于 2017-4-8 16:31:46 | 显示全部楼层
本帖最后由 tubaba 于 2017-4-8 16:33 编辑

回复 94# afan

您可能误会我的意思了,我只是指InstallDir在注册表位置,并不涉及其它写注册表操作

我已经测试过三台电脑,XP,win10,win7,都是写在HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt

首先测试的是win10_x64,官方安装程序,这个位置写在HKEY_LOCAL_MACHINE64\SOFTWARE\WOW6432Node\AutoIt v3\AutoIt
经由AuVerManage切换其它版本再切换回来,HKEY_LOCAL_MACHINE64\SOFTWARE\WOW6432Node\AutoIt v3\AutoIt被删除,改到
HKEY_LOCAL_MACHINE64\SOFTWARE\AutoIt v3\AutoIt

在32位系统上,此位置AuVerManage与官方的一致,为HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt
发表于 2017-4-8 17:10:52 | 显示全部楼层
回复  afan

您可能误会我的意思了,我只是指InstallDir在注册表位置,并不涉及其它写注册表操作

我已经 ...
tubaba 发表于 2017-4-8 16:31



    写在 HKEY_LOCAL_MACHINE64 这个位置就是个错误
 楼主| 发表于 2017-4-8 17:16:11 | 显示全部楼层
本帖最后由 tubaba 于 2017-4-8 17:24 编辑

回复 96# afan


    备注
键名必须以以下几种根键开头(也可用括号内的缩写):
"HKEY_LOCAL_MACHINE" ("HKLM")
或 "HKEY_USERS" ("HKU")
或 "HKEY_CURRENT_USER" ("HKCU")
或 "HKEY_CLASSES_ROOT" ("HKCR")
或 "HKEY_CURRENT_CONFIG" ("HKCC").

运行于 64-位 Windows 操作系统, 如果读键或值, 必须在 HK... 后面添加后缀 64, 如: HKLM64.

所以在某种意义上来说,HKLM64与HKLM是等价的,在64位系统上指的都是同一位置

  1. Local $AutoitExePath = RegRead('HKEY_LOCAL_MACHINE64\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir')
  2. MsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @CRLF & '$AutoitExePath' & @CRLF & @CRLF & 'Return:' & @CRLF & $AutoitExePath) ;### Debug MSGBOX
  3. Local $AutoitExePath = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir')
  4. MsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @CRLF & '$AutoitExePath' & @CRLF & @CRLF & 'Return:' & @CRLF & $AutoitExePath) ;### Debug MSGBOX
复制代码


这二个读出来的都是一样的,只是我也不明白,这个"必须在 HK... 后面添加后缀 64, 如: HKLM64.",好象并不是必须的
发表于 2017-4-8 17:34:19 | 显示全部楼层
回复  afan


    备注
键名必须以以下几种根键开头(也可用括号内的缩写):
"HKEY_LOCAL_MACHINE" ("H ...
tubaba 发表于 2017-4-8 17:16



    64位读写注册表 根键后面加64是必须的,但这只是给解释器解析,以转换到实际的注册表位置,而非实际写入到  HKEY_LOCAL_MACHINE64 这个位置
 楼主| 发表于 2017-4-8 17:35:10 | 显示全部楼层
为了测试,我又安装了一次官网下载的安装程序



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入

x
 楼主| 发表于 2017-4-8 17:35:47 | 显示全部楼层
本帖最后由 tubaba 于 2017-4-8 17:43 编辑

回复 98# afan


    你既然知道,那又说HKEY_LOCAL_MACHINE64\SOFTWARE\AutoIt v3\AutoIt是个错误,在代码这样写不对?我那样写肯定是以编译器的角度出发.我想您也应该看得明白吧,不会去咬文嚼字
发表于 2017-4-8 17:39:44 | 显示全部楼层
为了测试,我又安装了一次官网下载的安装程序
tubaba 发表于 2017-4-8 17:35



    这几个贴图有问题吗? 没有看到 HKEY_LOCAL_MACHINE64 这个位置…
发表于 2017-4-8 17:41:09 | 显示全部楼层
本帖最后由 afan 于 2017-4-8 17:48 编辑
回复  afan


    你既然知道,那又说HKEY_LOCAL_MACHINE64\SOFTWARE\AutoIt v3\AutoIt是个错误,在代码这 ...
tubaba 发表于 2017-4-8 17:35



    跟你说不清…… 结合我上面说的,你再看看。HKEY_LOCAL_MACHINE64 这个不是注册表有的,而是au3语法中的,实际不会也不应该写到 HKEY_LOCAL_MACHINE64 这个位置。
 楼主| 发表于 2017-4-8 17:47:36 | 显示全部楼层
本帖最后由 tubaba 于 2017-4-8 17:57 编辑

好吧,你对,四个贴图
第一个安装官方版之前
第二个安装官方版之后HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\AutoIt v3\AutoIt是存在的
第三个用AuVerManage删除后,HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\AutoIt v3\AutoIt被删除
第四个,再用AuVerManage切回来HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\AutoIt 没有这个键值,路径变成HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt,看明白了吗?

好了,是我表达有误,你说的我当然明白,我的本意不是指这个,而是指路径发生了变化.

那几个路径是我懒得打字,直接从编辑器里复制出来的,哎...没想到还争起这个了,我当然知道实际路径是不带64这二个字的
发表于 2017-4-8 17:57:04 | 显示全部楼层
好吧,你对,四个贴图
第一个安装官方版之前
第二个安装官方版之后HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Nod ...
tubaba 发表于 2017-4-8 17:47



    这样是对的。WOW6432Node 这个路径是给 32位主程序执行脚本使用的。如果AuVerManage没有这种双版本运行菜单的备份,那肯定只会以当前系统为准,64位的话就不需要 WOW6432Node 这块
 楼主| 发表于 2017-4-8 18:04:01 | 显示全部楼层
好了,结束这个话题.说了半天,我也没说错,AuVerManage会把这个路径写到HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt,不管是在x64还是在x86上
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2019-6-19 22:10 , Processed in 0.062501 second(s), 13 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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