向自身exe文件注入UDF,经过一段时间的研究,终于有点结果了,现在基本功能已经完成,可以发一个测试版了
在此先谢谢参与回贴讨论的所有朋友,谢谢你们的热心回贴。
代码已发在UDF区,有兴趣的朋友可以到下面的链接下载代码:
http://www.autoitx.com/forum.php ... id=16292&extra=
附上完成后的UDF的简单介绍,详细情况请到上面的链接查看; =======================================================================
; 名称: 已编译后程序文件注入UDF
; 描述 : 可对已编译后的程序进行文件的注入
; (程序正在运行时,是对临时文件进行模似操作,程序退出时,会自动更新到本程序中)
;运行环境:必须是脚本代码编译成exe文件后,才能正常运行
;AutoIt Version : AutoIt v3 ++
;感谢: 此 UDF 两个Hex读写函数根据本论坛 my788521整理的代码改写,在此特别表示感谢
; 此 UDF 两个内置 InI 读取根据本论坛 Afan 提供的代码改写,在此特别表示感谢
; 另外,对本论坛提供源码的所有朋友,感谢你们无私的贡献
; 作者 : C.l ---- www.autoitx.com
; =======================================================================
;========================================================================
;已编译后程序文件注入UDF使用说明:
;
;下面的 “文件名”,均为要本程序的临时文件,也可以是其他没有在运行中的二进制文件(即可实现外部读写)
;此代码考虑到内含文件的特性,好象没有必要支持太多的文件,所以文件表($TableSize)预设为一个扇区大小
; 默认支持最多为15个文件注入,
; 注入文件名使用24个字节保存,如果文件名长度大于24个字节(每个汉字占两个字节),将不注入
;
;添加内含文件:_AddNewHexFile($BackupFilePath, $TagNewFile = "")
; _AddNewHexFile(文件名,要注入的文件名)
;
;删除内含文件:_DeleteHexFile($BackupFilePath, $delfileName)
; _DeleteHexFile(文件名, 要删除的内含文件名)
;
;清空碎片:_DelEmptyBlock($BackupFilePath, $TableSize = 512)
; _DelEmptyBlock(文件名, 内含文件表大小(默认512字节,一个扇区))
; 本函数作用:将刷新文件、删除文件后产生的碎片清空,释放空间,文件操作过多后运行,
; 文件大小将会减少很多。
; 此操作如果内含文件太多和太大,可能比较占用CPU.注意使用
;
;读取文件列表:_ReadFileInfo($BackupFilePath, $TableSize = 512)
; _ReadFileInfo(文件名, 文件表大小(默认512字节))
; 函数运行后,如果有内含文件,返回一个内含文件的信息的一维数组
; 数组内字符串信息如下:文件名|文件大小|文件开始偏移量
;
;文件保存: _HexFileSaveas($OutputFileName, $Offset, $FileSize):
; _HexFileSaveas(输出文件名, 内含文件偏移量, 内含文件大小)
; 内含文件偏移量和内含文件大小,这两个参数,可调用_ReadFileInfo()得到
;
;内含INI文件字段名读取: _memoryIniReadSectionNames($MemoryIniFile, $Offset, $FileSize, $mode = 0, $flag = 1)
; _memoryIniReadSectionNames(内含文件名,文件偏移量,文件大小,读取模式,标志)
; 内含文件偏移量和内含文件大小等参数,可调用_ReadFileInfo()得到
; 此函数可直接读取内含的InI文件,而不必将INI文件提取后读取 (由Afan代码改写而成)
; 些函数返回一个由字段名组成的一维数组
;内含INI文件值读取:_MemoryIniReadSection($MemoryIniFile, $Offset, $FileSize, $Section, $mode = 0)
; _MemoryIniReadSection(内含文件名, 偏移量, 文件大小, 字段名, 读取模式)
; 此函数返回由字段内的数据组成的二维数组
;
;回写函数:_Selfcopy($iDelay = 3)
; _Selfcopy(延时)
|