如何保护和隐藏你的QT应用中的QML源代码?补天云全网独有技术和唯一实用工具:QT6框架QML源码保护工具应用 QML和JavaScript源码隐藏工具

简介

在通常的QT QML应用程序中,QML语言和JavaScript语言的源码可以在最终可执行文件中找到源码明文,本文将介绍一个QML源码保护工具,使得QML应用编译出来的可执行文件中不再包含QML和JavaScript源码明文数据,同时QML应用程序还可以正常运行。

目录

QT QML应用中QML源码在哪?

QT Quick Compiler能保护QML源码吗?

QT Tool Box保护QML源码

正文

QT QML应用中QML源码在哪?

QT QML应用程序将QT标记语言QML和JavaScript脚本语言,以及C++语言的源代码混合编排到一个应用程序中。其中C++语言代码会被编译为二进制指令数据,在最终可执行文件中是找不到C++源码的。而QML语言和JavaScript语言的源码则可以在最终可执行文件中找到源码明文。大家使用文本编辑器查看QML应用生成的EXE文件就可以找到QML源码的明文数据。下图是从某QML应用程序的可执行文件中找到JavaScript和QML源码明文。

在可执行文件中能找到QML源码明文

QT Quick Compiler能保护QML源码吗?

有的朋友可能会想到QT不是有QT Quick Compiler吗? 使用这个选项可以将QML源码编译之后的二进制字节码数据保存到可执行文件中,从而提升QT QML应用程序的性能。不过在使用QT Quick Compiler之后,在可执行文件中仍然包含QML和JavaScript源码明文数据。因此QT Quick Compiler可以起到提速的作用,但是无法保护QML源码。也就是使用文本编辑器查看QML应用生成的EXE文件仍然可以找到QML源码的明文数据。

QT Tool Box保护QML源码

在此向大家推荐一款工具软件 QT Tool Box。这个工具提供了根据QML和JavaScript文件生成编译之后的二进制字节码数据文件的功能,同时提供了QNK字节码加载器可供应用程序运行时加载QML字节码数据文件。

QT Tool Box保护QML和JavaScript源码
QT Tool Box生成了如下文件:

QT Tool Box生成的数据文件

怎么应用这些文件呢?

首先将生成的文件都拷贝到项目源代码目录中,然后将qmlc.qrc资源文件加入到项目目标中,并且将QML源码文件和JavaScript源码文件从项目目标中移除。注意只是从项目配置文件中移除,不是删除文件本身。如果是cmake项目则修改为类似如下所示即可。如果是qmake项目则做按照qmake规则来修改即可。

修改cmake项目文件
再重新执行cmake,项目结构如下所示:

修改之后的cmake项目结构

接下来就是在主程序中加入如下两行代码:

加载QML二进制数据的代码
libButianyunQMLCacheLoader.dll这个动态链接库是QT Tool Box提供的,负责加载QML字节码数据。

接着将QT Tool Box 生成的configuration.json配置文件拷贝到你的应用程序的EXE同样的目录,将libButianyunQMLCacheLoader.dll也拷贝到同样的目录。

QML应用运行所需文件
最后重新编译一遍应用程序,所得到的可执行文件中将不再包含QML和JavaScript源码的明文数据,从而实现了保护QML和JavaScript源码的目的。

QML应用程序正常运行

总结

本文介绍了如何通过QT Tool Box保护QT应用程序中的QML和JavaScript源码。 如果你正好也有这种需求,想获取QT Tool Box最新版本软件,可联系作者以便加入QQ群。

如果您认为看文章不足以了解补天云工具箱,可以看一下这个视频:

补天云全网独有技术和唯一实用工具:QT6框架QML源码保护工具应用 QML和JavaScript源码隐藏工具

下载链接:补天云QT工具箱:QML源码保护隐藏工具:可执行程序

推荐两篇介绍QT技术整体介绍的文章:
QT QML:快速全面了解QT软件界面开发技术
QT QML:如何学习C/C++/QT软件开发技术

如果您认为这篇文章对您有所帮助,请您一定立即点赞+喜欢+收藏,本文作者将能从您的点赞+喜欢+收藏中获取到创作新的好文章的动力。如果您认为作者写的文章还有一些参考价值,您也可以关注这篇文章的作者。

补天云全网独有技术和唯一实用工具:QT6框架QML源码保护工具应用 QML和JavaScript源码隐藏工具的更多相关文章

  1. 在线公开课 | 5G时代的视频云服务关键技术与实践

    5G时代来临在即,视频技术将会如何发展呢?基于视频云服务的技术开发又有怎样的变化呢?为此,京东云视频云产品研发部高级总监魏伟为大家做出了详细解读. 魏伟拥有10多年视频行业研发经验,先后从事于AVS标 ...

  2. 云原生GIS技术

    云原生架构概述 - DockOne.io  http://dockone.io/article/2991 云原生GIS技术全解读 - SuperMap技术控 - CSDN博客  https://blo ...

  3. 为 “超级大脑”构建支撑能力,腾讯云聚焦AI技术落地

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 5月24日,以"无界数据.无限智能"为主题的2018腾讯"云+未来"峰会AI大数据分论坛在广州拉开帷 ...

  4. 腾讯 Techo 开发者大会首发来袭!云原生中间件技术实践等你来!

    腾讯 Techo 开发者大会是由腾讯云发起的面向全球开发者和技术爱好者的年度盛会,2019 年 11 月 6 日 - 7 日将在北京嘉里大酒店首次召开. 作为一个专注于前沿技术研讨的非商业大会,Tec ...

  5. 一文带你读懂!华为云在ACMUG技术沙龙上都透露了些啥?

    摘要:近日,华为云数据库业务总裁苏光牛在ACMUG中国MySQL用户组主办的 "华为云专场" 技术沙龙中分享了华为云数据库重磅新品GaussDB的核心能力与竞争优势.那么, Gau ...

  6. 【Hook技术】实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展

    [Hook技术]实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展 公司有个监控程序涉及到进程的保护问题,需要避免用户通过任务管理器结束掉监控进程,这里使用 ...

  7. 实用fork/join框架提升程序效率

    实用fork/join框架提成程序效率 原文地址:https://www.jianshu.com/p/9ce243796d4a 业务场景 最近再做一个接口,我是一个中央的消息接受方,当我接受到消息后要 ...

  8. Android酷炫实用的开源框架(UI框架)

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

  9. Android酷炫实用的开源框架——UI框架(转)

    转载别人整理好的文章,列出了很多炫酷的UI开源设计 原文地址:http://www.androidchina.net/1992.html 1.Side-Menu.Android分类侧滑菜单,Yalan ...

  10. Android酷炫实用的开源框架(UI框架) 转

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

随机推荐

  1. Less预处理器的使用

    练习页面: <body> <div class="div1"> <div class="div2"></div> ...

  2. iOS开发基础135-Core Data

    Objective-C (OC) 中使用 Core Data 是iOS应用开发中管理模型层对象的一种有效工具.Core Data 使用 ORM (对象关系映射) 技术来抽象化和管理数据.这不仅可以节省 ...

  3. mysql中的隐式转换导致全表扫描

    mysql中的隐式转换导致全表扫描 在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引.下面分析两种隐式转换的情况 看表结构 phone为 int类型,na ...

  4. Netty的源码分析和业务场景

    Netty 是一个高性能.异步事件驱动的网络应用框架,它基于 Java NIO 构建,广泛应用于互联网.大数据.游戏开发.通信行业等多个领域.以下是对 Netty 的源码分析.业务场景的详细介绍: 源 ...

  5. 11、SpringMVC之文件下载和上传

    创建名为spring_mvc_file的新module,过程参考9.1节和9.5节 11.1.文件下载 11.1.1.创建图片目录并放置图片 11.1.2.页面请求示例 <a th:href=& ...

  6. 【SpringMVC】10 对Ajax的应用

    编写一个AjaxController package cn.dai.controller; import org.springframework.web.bind.annotation.GetMapp ...

  7. Deepin20系统开机报错——You are in emergency mode ... Cannot open access to console, the root account is locked. emergency mode/“journalctl -xb”

    参考: https://knowledge.ipason.com/ipKnowledge/knowledgedetail.html/1286 https://blog.csdn.net/wenfei1 ...

  8. C#开发的全屏图片切换效果应用 - 开源研究系列文章 - 个人小作品

    这天无聊,想到上次开发的图片显示软件< PhotoNet看图软件 >,然后想到开发一个全屏图片切换效果的应用,类似于屏幕保护程序,于是就写了此博文.这个应用比较简单,主要是全屏切换换图片效 ...

  9. Apache DolphinScheduler 在奇富科技的首个调度异地部署实践

    奇富科技(原360数科)是人工智能驱动的信贷科技服务平台,致力于凭借智能服务.AI研究及应用.安全科技,赋能金融机构提质增效,助推普惠金融高质量发展,让更多人享受到安全便捷的金融科技服务.作为国内领先 ...

  10. LVGL btn组件

    /************************************************* * * file name:widget_line.c * author :momolyl@126 ...