首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过一篇文章带你解决如何加密代码任然可以运行

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

作者头像
鲜于言悠
发布2024-03-20 16:33:46
发布2024-03-20 16:33:46
50100
代码可运行
举报
文章被收录于专栏:c/c++的学习笔记c/c++的学习笔记
运行总次数:0
代码可运行
VS使用小技巧

前言

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


方法

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

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

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

使用静态库的示例

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

如何创建静态库

首先我们先创建三个文件 text.h

代码语言:javascript
代码运行次数:0
运行
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>

void _scanf();//自己定义的输入函数

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

代码语言:javascript
代码运行次数:0
运行
复制
#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

代码语言:javascript
代码运行次数:0
运行
复制
#include "text.h"

int main() {

    _scanf();
    return 0;
}

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

  1. 我们不想让别人看到我们书写的源代码,主要是屏蔽text.c的源代码,所以我们要先取出text.c文件,我们可以直接创建一个新的空项目,直接导入text.c这个源文件
  1. 导入完成后,我们直接右键项目名称,选择属性
  1. 接下来,我们将配置类型改成静态库
  1. 直接点击生成解决方案
  1. 接下来,我们按下图所示可以看到.lib文件,这就是生成的静态库文件

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
复制
gcc -c file1.c file2.c ... -o object1.o object2.o ...

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

代码语言:javascript
代码运行次数:0
运行
复制
ar rcs libname.a object1.o object2.o ...

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

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

代码语言:javascript
代码运行次数:0
运行
复制
sudo cp libname.a /usr/lib/

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

代码语言:javascript
代码运行次数:0
运行
复制
sudo cp header.h /usr/include/

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

代码语言:javascript
代码运行次数:0
运行
复制
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里导入静态库就比较简单了,我们可以直接使用代码来导入静态库

代码语言:javascript
代码运行次数:0
运行
复制
#program comment(lib,"text.lib");

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • VS使用小技巧
  • 前言
  • 方法
  • 使用静态库的示例
    • 如何创建静态库
    • 如何导入静态库
      • Xcode里导入静态库
      • VS2022导入静态库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档