掌桥专利:专业的专利平台
掌桥专利
首页

一种程序预装且屏蔽操作系统入口的应用软件加密技术

文献发布时间:2023-06-19 09:27:35



技术领域

软件加密领域。

背景技术

软件业的历史要追溯到 71 年前。第一代:早期专业软件公司,1949—1959。第二代:早期软件产品公司,1959—1969 。第三代:强大的企业解决方案提供商的出现,1969—1981 。IBM 给软件与硬件分别定价的决定再次证实了软件业的独立性。第四代:客户大众市场软件,1981—1994 。个人计算机的出现建立了一种基于个人计算机的大众市场开发通用软件产品。IBM 个人电脑、微软和苹果公司都在这段时间发展壮大。第五代:互联网软件,1996—现在。随着以太网、TCP/IP 网络技术的普及以及智能手机的发明,网站、手机 App和云计算软件席卷全球。软件(英文:Software)是一系列按照特定顺序组织的计算机数据、指令和文档的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。软件特点:1、无形的,只能通过运行状况来了解功能和质量;2、软件是脑力劳动密集型;3、软件不会老化磨损,但需要维护和更新;4、软件运行对于硬件有依赖性,追求可移植性;5、软件很容易被复制,从而形成多个副本。软件的可复制性造成了“盗版软件泛滥”,严重损害了软件开发者的利益。软件加密一直是软件开发者孜孜追求的保护技术,一般有“软加密”和“硬加密”两种技术,比如:windows 操作系统的密匙加密属于软加密,国内的 CAD 软件和 ERP 管理软件往往采用“加密狗或 U 盘加密”的硬加密,无论是软加密,还是硬加密,只要执行程序暴露给盗版者,在汇编语言层面都是明码,被破解只是时间问题。软件加密经过几十年的发展遇到瓶颈,迫切需要一种全新的加密思路,本发明提出一种程序预装且屏蔽操作系统入口的应用软件加密技术。

发明内容

应用软件的特点是用户无需二次开发,因此暴露操作系统桌面是多此一举,给盗版者以可乘之机。本发明提出“一种程序预装且屏蔽操作系统入口的应用软件加密技术”,旨在不让盗版者接触执行程序,大大提高软件的保护效果。Linux 操作系统和应用软件预装在开发者提供的固态硬盘上,通过USB 3.x 端口与客户电脑连接,如图1或者打开机箱安装在1号硬盘接口,确保优先启动,用户无法缩放主窗口,关闭主窗口就关机。因为 99%的超级计算机采用更高效的 Linux 操作系统,所以这种软件加密技术以Linux 操作系统做平台,基于最流行的 Linux 发行版本 CentOS 7.7,通过配置、Shell 脚本编程和 Python 语言来实现。选择 Python 编程语言的理由是因为它有最庞大的第三方软件生态圈。

附图说明

图1. Linux 操作系统和应用软件预装在开发者提供的固态硬盘的示意图.

图2. 左上角热点图标窗口示意图

图3. 调用 Linux CentOS 7.7 系统 startup applications 软件设置应用软件自启动。

具体实施方式

分为八个步骤,前7个步骤以root用户登录.

步骤 1: 关闭屏幕左上角热点图标窗口

当鼠标移到左上角时,Linux 会弹出热点图标子窗口,如图 2,用户可以运行几乎任何程序并进行文件复制和发送,严重影响到软件的安全性,因此必须关闭,指令如下:终端窗口中输入 yum -y install gnome-shell-extension-no-hot-corner

安装完毕后,reboot 重启系统.

步骤 2: 关闭屏幕顶部的功能菜单和底部任务栏功能

1、去除顶部panel

(1)、编辑 /usr/share/gnome-shell/modes/classic.json 修改 panel 的左中右都为空

"panel":{ "left": [],

"center": [],

"right": []

}

其中右边可以保留日历,如: "right": ["dateMenu"],不会影响软件保密性.

(2)、编辑 /usr/share/gnome-shell/theme/gnome-classic.css 中,修改

#panel {

background-color: #e9e9e9;

color: transparent; /*增加*/

}

2、隐藏或删除底部(任务栏) panel

(1)、删除文件夹

/usr/share/gnome-shell/extensions/window-list@gnome-shell-extensions.gcampax.github.com

建议使用 mv 命令, 万一后悔后可以恢复, 如下:

mv /usr/share/gnome-shell/extensions/window-list@gnome-shell-extensions.gcampax.github.com

/usr/share/gnome-shell/extensions/window-list@gnome-shell-extensions.gcampax.github.com.back

然后重启查看效果.

步骤 3: 隐藏执行程序、应用程序所在目录和相关 shell 脚本文件

Linux 系统支持在文件名前面加个‘.’把文件隐藏起来,如:执行程序 Hahayaya_Rjdlb 改

成 .Hahayaya_Rjdlb,不影响程序运行,这样起到加密作用;这种方法也适用于文件夹隐藏和shell 脚本文件的隐藏,这是一种最简单而有效的加密方法.

步骤 4: 删除鼠标右键打开终端功能

命令: yum -y remove nautilus-open-terminal

在终端状态下,可以查看隐藏文件,故应该屏蔽掉;reboot重新启动可以看到效果.

步骤 5: 在应用软件中使主窗口保持最大化,取消最小化和主窗口缩放,仅提供主窗口关闭功能,关闭主窗口启动关机脚本

重写主窗口类

class myQMainWindow(QMainWindow):

def __init__(self, parent=None):

super(myQMainWindow, self).__init__(parent)

def closeEvent(self, QCloseEvent):

QCloseEvent.ignore()

button = QMessageBox.question(self, "关机提醒", "您真的想关机吗",

QMessageBox.Yes | QMessageBox.No)

if button == QMessageBox.Yes:

Popen(["img/power_off.sh"])

exit(-1)

关机脚本 power_off.sh 内容如下:

#!/bin/sh

echo '正在关机......'

virsh shutdown win10 #关闭虚拟机 win10, 如没有安装虚拟机, 则省略.

virsh shutdown Android_9 #关闭虚拟机 Android_9, 如没有安装虚拟机, 则省略.

sleep 6s

poweroff -h

-------------------------------------------------------------------------

主窗口类实例化时,设置只有‘关闭按钮’属性的主窗口,如下:

self.setWindowFlags(Qt.WindowCloseButtonHint)

以下是创建主窗口的自定义方法, 最大化显示主窗口:

def create_main_window():

main_win = MainWindow()

main_windows.append(main_win)

avail_geometry = app.desktop().availableGeometry(main_win)

main_win.resize(avail_geometry.width() * 7 / 8, available_geometry.height() * 7 /8)

main_win.showMaximized()

main_win.show()

return main_win

步骤 6: 运行“设置”功能,在“privacy”关闭“锁屏”功能,避免锁屏时需要输入密码

步骤 7: 修改 /etc/gdm/custom.conf 文件

设置非 root 用户免密登录, 如:Hahayaya_Rjdlb

在[daemon]下增加

AutomaticLoginEnable=True

AutomaticLogin=Hahayaya_Rjdlb

保存文件,然后重启查看效果.

步骤 8: 以步骤7设定的非root用户免密登录, 调用 startup applications 软件设置指定的应用软件自启动,如图3,并确保是唯一自启动应用软件,避免给盗版者入侵。

相关技术
  • 一种程序预装且屏蔽操作系统入口的应用软件加密技术
  • 一种基于加密技术的JAVA应用软件版权保护方法
技术分类

06120112177764