为python代码加密----通过修改Cpython解释器进行单文件加密(无import自己模块)

本文介绍了如何通过修改CPython解释器实现Python代码的单文件加密,包括下载CPython源码、构建自定义解释器、添加解密函数以及测试加密程序的过程。参考了一个简单的对称加密方法,并且提供了修改读取文件函数以支持解密的详细步骤。


一、参考链接

  • cpython的github仓库:https://github.com/python/cpython
  • 简单对称加密:https://juejin.cn/post/7023708355608707108
  • 此文章修改后的cpython代码已经上传github https://github.com/MakeEarthBetter/cpythondiy/tree/master,注意分支是master

二、实现步骤

1.下载cpython代码

出于方便我直接在cpython的github仓库download zip

2.构建cpython解释器

注意,以下操作(在ubuntu下)将会使你的python3版本默认为你新构建的python解释器,
因为以下操作会在你的/usr/local/bin/下创建一个python3.12并且新建一个python3指向python3.12,操作前请注意影响。
在cpython主目录下执行以下操作,此处可参考cpython的readme文件

./configure
make
make test
sudo make install

3.测试cpython构建结果

如果上一步你已经完成,那么你现在输入python3应该是你make后的python版本,比如
请添加图片描述
下面开始修改代码。

4.构建py文件加密程序

十分感谢
https://juejin.cn/post/7023708355608707108
的作者提供此简单对称加密方法。
加密程序代码:

 #include<stdio.h>
 #include<stdlib.h>
 
 
 long fileRead(char fileName[50],char **buffer){
   
   
     //打开文件 
     FILE *fp = fopen(fileName,"rb");
     if(fp == NULL){
   
   
         printf("open file is failed");
         exit(1); 
     }
     //把文件指针移到文件末尾
     fseek(fp,0,SEEK_END); 
     //保存文件的长度 
     long fileSize = ftell(fp);
     //把文件指针移到文件开头 
     fseek(fp,0,SEEK_SET);
     //读取文件,保存到buffer中 
     *buffer = (char*)malloc(fileSize);  
     fread(*buffer,1,fileSize,fp);
     //关闭文件 
     fclose(fp);
     return fileSize;
 }
 
 
 void fileWrite(char fileName[50],char *buffer,long fileSize){
   
   
     //创建文件进行写入 
     FILE *fp = fopen(fileName,"wb");
     if(fp == NULL){
   
   
         printf("open file is failed");
         exit(1); 
     }
     fwrite(buffer,1,fileSize,fp);
     fclose(fp); 
 }
 
 
 void encrypt_decode(char encryptFile[50],char encryptedFile[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值