找回密码
 加入
搜索
楼主: C.L

[效率算法] 【已解决】AU3脚本编译后是否可以将运行时更改的如ini文件注入到自身exe中

 火... [复制链接]
发表于 2010-6-13 22:04:13 | 显示全部楼层
关于这方面也没有玩过,不过“Fileinstall()”,感觉原理类似自解压!!!这个函数源文件是以字符串存在,而不是二进制存在!!!写起来需要两者来回转换!
理解有误之处,请见谅!
 楼主| 发表于 2010-6-13 22:13:29 | 显示全部楼层
回复 16# lchl0588

不是的,fileinstall()可含的不单是文本文件,也可以包含二进制的可执行文件,所以应该是以二进制的形式存在,写起来不用转换,直接操作二进制即可
发表于 2010-6-13 22:19:11 | 显示全部楼层
楼主这个问题提得确实不错,很深奥的问题哦!
俺这样的菜鸟帮不上什么忙!只好围观学习喽!
发表于 2010-6-13 22:19:51 | 显示全部楼层
我只是针对“源文件”所说,没说可含的要求(这个包含的多了),但源文件参数只接受字符串,到底能不能接受二进制,这方面偶未测试过!再说原理类似WINRAR自解压!
发表于 2010-6-13 22:25:50 | 显示全部楼层
好像LS和C.L讨论的是两码事了,呵呵
发表于 2010-6-13 22:33:14 | 显示全部楼层
本帖最后由 lchl0588 于 2010-6-13 22:34 编辑

回复 20# afan
不错,他是从代码 中实现,而我从外部实现,但都往一个点走!
AU3用Fileinstall 包含的文件编译后,如:ini文件,不过目前的情况,并不能将脚本运行更改后的ini文件再注入到本身的exe中,每次运行都会重新释放原始的ini文件。
已编译的EXE文件,感觉不太可能再注入了,最好调用“Fileinstall()”第二次自解压!!不过要注意顺序!

大家是否可以讨论一下,是否有可能将脚本编译后,运行时产生的与原始ini不同的ini文件在脚本退出时,注入到已编译的exe中,以便可以使用更新后的ini文件?

既然问题是我提出来的,我先说一下我自已的看法:
1、AU3可以用二进制读取文件的方式,而可执行文件exe也是二进制的文件,从理论上来看,是可以对这个二进制文件进行读写,所以,也就有了重新注入的可能性。
2、Fileinstall()的原理我不懂,不知道AU3是如何处理这种注入的文件,而且以这种方式包含的文件可能在已编译好的exe中可能也有严格的字节数限制(这是我的猜测,不知道实际上是不是这样),所以对这部份的包含的二进制改写可能不大行得通。
3、如果第2点行不通,那么是否可以编写代码来以二进制的方式自已注入文件,然后,在脚本完成将结束时自已重新注入已更改后的配置文件?这里有个问题,因为脚本运行时,是不能操作自身文件的,或者可以参考删除自身的代码?

欢迎参加讨论,我认为这个问题可能会有实用的意义,脚本运行时总是带着个小尾巴,看着总是有点不爽,而且有时将脚本copy时,忘了将这小尾巴一起copy,引起出错(我就有过)

补充:后来想起来,下面这点似乎用处更大:这个方法不单是为了注入配置文件,也可以注入图标库文件、可执行程序、等等,而且可以在使用的时候才提取出来,不象fileinstall那样,一运行就会将所有的文件都释放出来。

最后说下自个的感受:这个很类似系统封装,前调什么,中间运行什么,最后再干什么!!!!   
说错之处,还是请谅解!
 楼主| 发表于 2010-6-13 22:48:20 | 显示全部楼层
回复 21# lchl0588

呵呵,没有关系啊,大家讨论嘛,有建议提出来,我很欢迎的。

已编译的EXE文件,感觉不太可能再注入了,最好调用“Fileinstall()”第二次自解压!!不过要注意顺序!


已编译的exe文件可以注入的,目前,我这里的代码已经可以实现单个文件的注入和提取,只是现在考虑的是,支持多文件,并且要记录文件名、文件字节数大小等信息,如果按我的思路,并且可以用AU3创建的GUI中显示并提取。现在还有一个考虑是:能否将用这种方法注入的ini配置文件,不用提取到文件,直接加载到内存里读取(这个想法只是想法,已有点思路,不知道能不能行得通)
发表于 2010-6-13 22:56:11 | 显示全部楼层
回复  lchl0588

呵呵,没有关系啊,大家讨论嘛,有建议提出来,我很欢迎的。



已编译的exe文件可 ...
C.L 发表于 2010-6-13 22:48

呵呵!有突破,不错不错,这样一来不是可以做个“文件保险箱”啦!
发表于 2010-6-14 10:17:35 | 显示全部楼层
水木子都来了!我也来围观一下!
 楼主| 发表于 2010-6-15 08:23:00 | 显示全部楼层
第一阶段,向自身已编泽的exe中注入文件,并在AU3的listview中显示,这一段代码已改造为WinAPI读写,已基本完成,我这里测试正常,现放到这里来,让大家测试一下。
代码说明:
现在只支持一个文件的注入和提取,这部份测试没有问题的话,下一步再加入多文件的注入:

现放上源码,有兴趣的可以自已写代码,增加新的功能,如果有朋友增加了新的功能的话,请放一份代码到这个贴,先谢谢了。

附件:(包含三个文件,BinfileInstall.au3,这文件属于UDF的,可include使用,test.au3,和一个已编译好的test.exe,这个exe中已注入有文件)

本帖子中包含更多资源

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

×

评分

参与人数 1金钱 +35 贡献 +5 收起 理由
lynfr8 + 35 + 5 忙着其他,但继续关注你的进展

查看全部评分

 楼主| 发表于 2010-6-15 08:26:45 | 显示全部楼层
本帖最后由 C.L 于 2010-6-15 08:34 编辑

照惯例,上个图,看得比较清楚一点
如果那位高手看了代码,有什么更好的思路,请指点一下,先谢谢了。

本帖子中包含更多资源

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

×
发表于 2010-6-15 09:38:59 | 显示全部楼层
现在是有点技术含量的代码 都要被当做毒杀掉
发表于 2010-6-15 09:41:43 | 显示全部楼层
超级强大。 小菜鸟。 不好发表什么意见 。先围观。
发表于 2010-6-15 14:44:24 | 显示全部楼层
呵呵,学习一下。。
发表于 2010-6-16 00:00:28 | 显示全部楼层
学习个了。。支持
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 14:58 , Processed in 0.067553 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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