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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
可观测监控 Prometheus 版,每月50GB免费额度
简介: 在实际生活中,作为程序员偶尔会因为资金不够用了选择去兼职写代码,当我们写完一个代码,将他发给某个公司的时候,我们经常会想到如何让目标公司看不见你写的源代码(源代码是你好不容易想出来的,难免不有些心疼嘛),但目标公司却可以运行他所需要的代码,下面我将讲解一种静态库的使用方法,来实现这个方法。

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");

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


相关文章
|
6月前
|
移动开发 JavaScript 安全
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
312 0
|
1月前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
111 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
2月前
|
存储 安全 数据安全/隐私保护
安全升级!Python AES加密实战,为你的代码加上一层神秘保护罩
【9月更文挑战第12天】在软件开发中,数据安全至关重要。本文将深入探讨如何使用Python中的AES加密技术保护代码免受非法访问和篡改。AES(高级加密标准)因其高效性和灵活性,已成为全球最广泛使用的对称加密算法之一。通过实战演练,我们将展示如何利用pycryptodome库实现AES加密,包括生成密钥、初始化向量(IV)、加密和解密文本数据等步骤。此外,还将介绍密钥管理和IV随机性等安全注意事项。通过本文的学习,你将掌握使用AES加密保护敏感数据的方法,为代码增添坚实的安全屏障。
124 8
|
3月前
|
安全 Java Shell
"SpringBoot防窥秘籍大公开!ProGuard混淆+xjar加密,让你的代码穿上隐形斗篷,黑客也无奈!"
【8月更文挑战第11天】开发SpringBoot应用时,保护代码免遭反编译至关重要。本文介绍如何运用ProGuard和xjar强化安全性。ProGuard能混淆代码,去除未使用的部分,压缩字节码,使反编译困难。需配置ProGuard规则文件并处理jar包。xjar则进一步加密jar包内容,即使被解压也无法直接读取。结合使用这两种工具可显著提高代码安全性,有效保护商业机密及知识产权。
307 3
|
3月前
|
存储 安全 数据安全/隐私保护
安全升级!Python AES加密实战,为你的代码加上一层神秘保护罩
【8月更文挑战第2天】数据安全至关重要,AES加密作为对称加密的标准之一,因其高效性与灵活性被广泛采用。本文通过实战演示Python中AES的应用,使用pycryptodome库进行安装及加密操作。示例代码展示了生成随机密钥与初始化向量(IV)、对数据进行加密及解密的过程。注意事项包括密钥管理和IV的随机性,以及加密模式的选择。掌握AES加密能有效保护敏感数据,确保信息安全无虞。
99 6
|
3月前
|
安全 开发者 数据安全/隐私保护
Xamarin 的安全性考虑与最佳实践:从数据加密到网络防护,全面解析构建安全移动应用的六大核心技术要点与实战代码示例
【8月更文挑战第31天】Xamarin 的安全性考虑与最佳实践对于构建安全可靠的跨平台移动应用至关重要。本文探讨了 Xamarin 开发中的关键安全因素,如数据加密、网络通信安全、权限管理等,并提供了 AES 加密算法的代码示例。
57 0
|
5月前
|
JavaScript 数据安全/隐私保护
JS代码是怎样被混淆加密的
JS代码是怎样被混淆加密的
41 3
|
5月前
|
开发框架 Java .NET
WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参
WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参
|
5月前
|
算法 JavaScript 安全
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
47 0
|
6月前
|
算法 安全 测试技术
【传知代码】图像加密解密与数字水印处理-论文复现
该文主要介绍了图像加密解密和数字水印处理的重要性,并提供了相关技术的概述和原理。文章首先强调了信息安全和数据保护在数字化时代的需求,然后分别介绍了图像加密和解密以及数字水印处理的概念。 在图像加密解密部分,提到了两种方法:基于混沌Logistic映射的加密和基于三重DES的加密。前者通过混沌理论进行加密,后者使用经典的三重DES算法。文章提供了每种方法的基本原理,并展示了如何在Python中实现它们,包括使用`cryptography`库进行AES加密和利用PIL库进行图像处理。
【传知代码】图像加密解密与数字水印处理-论文复现