文章目录
一、参考链接
- 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[

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

被折叠的 条评论
为什么被折叠?



