当前位置:   article > 正文

python学习笔记——python转exe免杀_python打包的exe如何免杀

python打包的exe如何免杀

思路:

将敏感代码转码,使用时解码再执行。

参考:

Python免杀火绒、360和Defender_江左盟宗主的博客-CSDN博客


一、敏感代码使用base64编码

  1. #-*- coding: utf-8 -*-
  2. import base64
  3. str = """
  4. print('123')
  5. """
  6. #编码
  7. encode = base64.b64encode(str.encode('utf-8'))
  8. print(encode)

结果:

b'CnByaW50KCcxMjMnKQo='

二、将编码后的数据,放在新文件里,使用前解码,再执行

  1. #-*- coding: utf-8 -*-
  2. import base64
  3. a = b'CnByaW50KCcxMjMnKQo='
  4. #解码
  5. decode = base64.b64decode(a)
  6. #执行
  7. exec(decode)

三、注意事项

导入库的代码(import XXX),请勿进行编码。生成exe的时候,会加载所需要的的库。

四、一键转exe(单个文件)

文件布局

  1. import os
  2. import chardet
  3. import base64
  4. """
  5. 0.源文件,导入库的部分,都在顶部集中写。
  6. 1.源文件目录,只保留一个待处理文件。
  7. 2.结果文件夹,每次最好清空一下内容。
  8. """
  9. # ===================1.读取文件名=======================
  10. file_name = ""
  11. for i in os.listdir("源文件/"):
  12. if ".py" in i:
  13. file_name = i
  14. if file_name == "":
  15. raise Exception("文件没有读取")
  16. # ===================2.获取文件的编码格式=======================
  17. file = open("源文件/" + file_name, "rb")
  18. encoding = chardet.detect(file.read())['encoding']
  19. # ===================3.读取数据=======================
  20. import_message = ""
  21. code_message = ""
  22. file = open("源文件/" + file_name, "r", encoding=encoding)
  23. lines = file.readlines()
  24. for i in lines:
  25. if i[:6] == "import" or i[:4] == "from":
  26. import_message += i
  27. else:
  28. code_message += i
  29. # ===================4.编码=======================
  30. encode = base64.b64encode(code_message.encode('utf-8'))
  31. # ===================5.解码文件=======================
  32. file = open("结果/" + file_name, "w", encoding="utf-8")
  33. # 写入导入
  34. file.write(import_message)
  35. file.write("import base64" + "\n")
  36. # 写入内容
  37. file.write("\n")
  38. file.write("a = " + str(encode) + "\n")
  39. file.write("decode = base64.b64decode(a)" + "\n")
  40. file.write("exec(decode)")
  41. file.close()
  42. # # ===================6.转exe=======================
  43. os.chdir("结果")
  44. # os.system("pyinstaller -F " + file_name)#黑窗口版,无图标,一个exe文件
  45. # os.system("pyinstaller -F -w " + file_name)#GUI界面版,无图标,一个exe文件
  46. # os.system("pyinstaller -F -w --icon=图标.ico " + file_name)#GUI界面版,有图标,一个exe文件
  47. os.system("pyinstaller -D -w --icon=图标.ico " + file_name)#GUI界面版,有图标,一个文件文件夹

五、一键转exe(多个单个文件)

文件布局

 

  1. import os
  2. import chardet
  3. import base64
  4. """
  5. 0.源文件,导入库的部分,都在顶部集中写。
  6. 1.源文件目录,只保留一个待处理文件。
  7. 2.结果文件夹,每次最好清空一下内容。
  8. """
  9. # ===================1.读取文件名=======================
  10. for file_name in os.listdir("源文件/"):
  11. # ===================2.获取文件的编码格式=======================
  12. file = open("源文件/" + file_name, "rb")
  13. encoding = chardet.detect(file.read())['encoding']
  14. # ===================3.读取数据=======================
  15. import_message = ""
  16. code_message = ""
  17. file = open("源文件/" + file_name, "r", encoding=encoding)
  18. lines = file.readlines()
  19. for i in lines:
  20. if i[:6] == "import" or i[:4] == "from":
  21. import_message += i
  22. else:
  23. code_message += i
  24. # ===================4.编码=======================
  25. encode = base64.b64encode(code_message.encode('utf-8'))
  26. # ===================5.解码文件=======================
  27. file = open("结果/" + file_name, "w", encoding="utf-8")
  28. # 写入导入
  29. file.write(import_message)
  30. file.write("import base64" + "\n")
  31. # 写入内容
  32. file.write("\n")
  33. file.write("a = " + str(encode) + "\n")
  34. file.write("decode = base64.b64decode(a)" + "\n")
  35. file.write("exec(decode)")
  36. file.close()
  37. # # ===================6.转exe=======================
  38. os.chdir("结果")
  39. os.system("pyinstaller -F " + file_name)#黑窗口版,无图标,一个exe文件
  40. os.chdir("../")#返回上一级目录
  41. # aaaa = r" --add-data H:\软件\Python\python_install\Lib\site-packages\pyecharts\render\templates;pyecharts/render/templates --add-data H:\软件\Python\python_install\Lib\site-packages\pyecharts\datasets;pyecharts/datasets"
  42. # os.system(r"pyinstaller -F " + file_name+aaaa)#黑窗口版,无图标,一个exe文件
  43. # os.system("pyinstaller -F -w " + file_name)#GUI界面版,无图标,一个exe文件
  44. # os.system("pyinstaller -F -w --icon=图标.ico " + file_name)#GUI界面版,有图标,一个exe文件
  45. # os.system("pyinstaller -D -w --icon=图标.ico " + file_name) # GUI界面版,有图标,一个文件文件夹

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/513050
推荐阅读
相关标签
  

闽ICP备14008679号