通过一篇文章带你解决如何加密代码任然可以运行

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 在实际生活中,作为程序员偶尔会因为资金不够用了选择去兼职写代码,当我们写完一个代码,将他发给某个公司的时候,我们经常会想到如何让目标公司看不见你写的源代码(源代码是你好不容易想出来的,难免不有些心疼嘛),但目标公司却可以运行他所需要的代码,下面我将讲解一种静态库的使用方法,来实现这个方法。

VS使用小技巧


前言

在实际生活中,作为程序员偶尔会因为资金不够用了选择去兼职写代码,当我们写完一个代码,将他发给某个公司的时候,我们经常会想到如何让目标公司看不见你写的源代码(源代码是你好不容易想出来的,难免不有些心疼嘛),但目标公司却可以运行他所需要的代码,下面我将讲解一种静态库的使用方法,来实现这个方法。


方法

在Visual Studio 2022中,存在许多方法来是你的代码不被别人看到,却可以使用你的代码。

  • 将代码打包成可执行文件
    您可以通过编译您的代码并将其打包成一个可执行文件或库来让别人能够运行您的代码,但是让别人看不到您的代码是不可能的。
  • 使用加密算法保护代码
    如果您不想让别人看到您的代码,可以考虑使用加密算法保护您的代码。您可以使用第三方加密软件或库来加密您的代码,然后将加密后的代码交给别人运行,但是这样做可能会有一些法律风险,因为加密代码可能会被视为反盗版技术。
  • 将代码部署到云端
    您也可以将您的代码作为服务部署在云端,让别人通过访问您的服务来使用您的代码,但这需要您有一定的技术和经济能力。
  • 编译
    将代码编译为二进制文件,这样别人只能看到二进制文件,而无法查看原始代码。在这种情况下,你需要确保你的目标平台支持编译后的二进制文件运行。
  • 解释器或虚拟机:将代码运行在一个特定的解释器或虚拟机环境中,这样别人只能通过运行解释器或虚拟机来执行你的代码,而无法直接访问其原始内容。常见的例子包括 JavaScript、Python 和 Java。

除了这些例子外当然还有很多方法来让别人看不到你写的代码,下面我将通过使用静态库的方法,给你们讲解一下。

使用静态库的示例

静态库(Static Library)是一种将一组可重用的二进制代码打包在一起的方法,它们是编译时链接的。静态库的主要作用是提供了一种代码复用的方式,使得程序员不必重复写一些常用的功能。在使用静态库时,将其链接到目标程序中。这样,程序就可以调用静态库中函数的实现,提高了程序的效率和维护性。相比动态库,静态库的优势是它们更加稳定,因为它们不依赖于其他库,所以可以避免一些运行时问题。但也存在一些缺点,例如静态库的尺寸较大,不便于分发和更新。

如何创建静态库

首先我们先创建三个文件

text.h

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
void _scanf();//自己定义的输入函数

text.c 书写函数的源文件 ,这里我用一个打印正方形的函数代码

#include "text.h"
    void _scanf()
    {
        int a;
        while (scanf("%d", &a) != EOF) { // 注意 while 处理多个 case
            // 64 位输出请用 printf("%lld") to 
            int i, j;
            for (i = 0; i < a; i++)
            {
                for (j = 0; j < a; j++)
                {
                    if (i == 0 || i == a - 1) printf("*");
                    else if ((j == 0 || j == a - 1) && (i != 0 || i != a - 1))printf("*");
                    else printf(" ");
                }
                printf("\n");
            }
        }
    }

main.c

#include "text.h"
int main() {
    _scanf();
    return 0;
}

将这三个文件联合使用便可得到下列结果

  1. 我们不想让别人看到我们书写的源代码,主要是屏蔽text.c的源代码,所以我们要先取出text.c文件,我们可以直接创建一个新的空项目,直接导入text.c这个源文件

  1. 导入完成后,我们直接右键项目名称,选择属性

  2. 接下来,我们将配置类型改成静态库

  3. 直接点击生成解决方案

  4. 接下来,我们按下图所示可以看到.lib文件,这就是生成的静态库文件

我们可以使用记事本打开这个静态库文件,显然显示的是乱码

如果我们想把软件卖给目标公司,我们可以直接把这个静态库直接卖给他,并且将刚才书写的头文件一并打包,在头文件里书写这写函数的使用方法,便可做到让别人看不到你写的代码,却能够运行你的代码。

在Linux或MacOS上,可使用以下步骤创建静态库:

1.编写源代码文件,并编译成目标文件(.o文件):

gcc -c file1.c file2.c ... -o object1.o object2.o ...

2.将目标文件打包成静态库文件(.a文件):

ar rcs libname.a object1.o object2.o ...

其中,ar是打包工具的命令,rcs分别表示创建、替换和压缩,libname.a为静态库文件名。

3.将静态库文件安装到系统目录中(可选):

sudo cp libname.a /usr/lib/

4.将头文件拷贝到系统目录中(可选):

sudo cp header.h /usr/include/

这样,其他程序就可以使用libname.a静态库和header.h头文件了。在编译链接时,只需使用以下命令:

gcc main.c -L/path/to/lib -lname -o program

其中,/path/to/lib为静态库文件所在的路径,lib为静态库文件名(libname.a去掉前缀“lib”和后缀“.a”),program为输出的可执行文件名。

如何导入静态库

Xcode里导入静态库

要导入静态库,存在着很多的方法,比如在Xcode里导入静态库

  1. 首先,将静态库文件复制到您的项目目录中。
  2. 在Xcode中,选择您的项目并打开“Build Phases”选项卡。
  3. 展开“Link Binary With Libraries”选项卡,然后单击“+”按钮以添加新的库。
  4. 在“Choose frameworks and libraries to add”对话框中,单击“Add Other…”按钮。
  5. 在弹出的窗口中,浏览到您的项目目录中,选择静态库文件并单击“Add”按钮。
  6. 静态库现在已添加到您的项目中。 您可以在代码中使用库中的函数和类。

请注意,您还需要在代码中包含头文件(通常在静态库文件夹中),以便使用库中的函数和类。

VS2022导入静态库

在VS2022里导入静态库就比较简单了,我们可以直接使用代码来导入静态库

#program comment(lib,"text.lib");

使用这一行代码,便可直接导入静态库,并且使用静态库里的函数了


相关文章
|
3月前
|
移动开发 JavaScript 安全
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
38 0
|
1月前
|
安全 Java 数据安全/隐私保护
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
|
1月前
|
存储 算法 安全
Java代码能实现这些隐藏的加密功能
Java代码能实现这些隐藏的加密功能
58 0
|
3月前
|
安全 JavaScript 前端开发
如何给网页和代码做HTML加密?
如何给网页和代码做HTML加密?
70 0
|
3月前
|
编解码 算法 安全
【Java技术专题】「入门到精通系列」深入探索Java技术中常用到的六种加密技术和代码
重点记住现代密码学的柯克霍夫原则:数据安全取决于密钥而不是算法的保密。即使密码系统的细节已经公开,只要密钥保密,系统依然可以保持安全。本文介绍了6种常用的加密技术和相应的代码实现。
45 1
【Java技术专题】「入门到精通系列」深入探索Java技术中常用到的六种加密技术和代码
|
8月前
|
JavaScript 数据安全/隐私保护 Python
Crack App | 某搜索 App 中关于 x 信文章检索功能的加密参数分析(Frida Hook 篇)
Crack App | 某搜索 App 中关于 x 信文章检索功能的加密参数分析(Frida Hook 篇)
|
4月前
|
安全 JavaScript 前端开发
如何给网页和代码做HTML加密?
本篇文章给大家谈谈html混淆加密在线,以及HTML在线加密对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
|
4月前
|
JavaScript 安全 开发工具
​Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
简介在 Vue 应用程序的开发中,代码压缩、加密和混淆是优化应用程序性能和提高安全性的重要步骤。 Vue CLI 是一个功能强大的开发工具,它提供了方便的配置选项来实现这些功能。本文将介绍如何使用 Vue CLI 配置代码压缩、加密和混淆功能,以提高应用程序的性能和安全性。
|
7月前
|
数据安全/隐私保护
页面加密代码,附效果演示
页面加密代码,附效果演示
|
7月前
|
存储 资源调度 JavaScript
给Hexo博客文章加密
给Hexo博客文章加密

热门文章

最新文章

  • 1
    Serverless 应用引擎产品使用之在函数计算中,数据库访问失败如何解决
    5
  • 2
    Serverless 应用引擎产品使用之在阿里云函数计算中发现没有NAC(Native Application Component)选项,且无法自己上传MOD(模块)如何解决
    6
  • 3
    Serverless 应用引擎操作报错合集之在阿里云函数计算中,调用了FC函数但是没有执行或者报错,并且在FC函数后台也看不到调用记录日志如何解决
    7
  • 4
    Serverless 应用引擎操作报错合集之在阿里函数计算中,sd部署启动报错CAExited 报错信息“operation not permitted”如何解决
    5
  • 5
    Serverless 应用引擎操作报错合集之在阿里函数计算中,SD Controlnet Depth 运行过程中出现错误“urllib3 v2.0 only supports OpenSSL 1.1.1+”如何解决
    7
  • 6
    Serverless 应用引擎操作报错合集之在阿里云函数计算中,laravel zip包使用示例的start.sh脚本启动时出现错误代码如何解决
    7
  • 7
    Serverless 应用引擎操作报错合集之在阿里云函数计算中,服务器调用FC函数时出现 "[Errno -3] Temporary failure in name resolution)" 错误如何解决
    5
  • 8
    Serverless 应用引擎操作报错合集之在Serverless 应用引擎中,部署过程中遇到错误代码如何解决
    9
  • 9
    Serverless 应用引擎操作报错合集之在 Serverless 应用引擎中,遇到“没法通过 head 传递灰度标识”如何解决
    6
  • 10
    Serverless 应用引擎操作报错合集之在阿里函数计算中,函数执行超时,报错Function time out after如何解决
    12