- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 pyinstaller 为学校项目创建一个 exe,但是 Windows Defender 似乎报告了病毒威胁并阻止了该文件。我想将此 exe 发送给其他一些人,但除非我解决此问题,否则我无法这样做。所以这些是我的查询- 为什么 exe 文件被报告为病毒? 对病毒总数的快速扫描表明 16 engines detect this file as a Trojan .另外,有什么方法可以防止 Windows Defender 或任何其他防病毒软件警告用户存在病毒威胁 ,我的意思是,有没有办法让我的文件对防病毒软件来说是安全的,以防它只是一个虚假的威胁?如果这是不可能的, pyinstaller 的其他安全替代品是什么? 我只是一个初学者,所以任何提示都将不胜感激。谢谢。
编辑:根据@Pro Chess 的要求,我包含了我的脚本。
import socket
import threading
import pickle
class Server :
def __init__(self) :
self.HEADER = 64
self.PORT = 5050
self.SERVER = socket.gethostbyname(socket.gethostname())
self.ADDR = (self.SERVER, self.PORT)
self.FORMAT = 'utf-8'
self.DISCONNECT_MESSAGE = "!DISCONNECT"
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server.bind(self.ADDR)
self.save_dict = {}
def file_access(self) :
with open("project_data\\savedata.dat","rb") as save_file :
save_dict = pickle.load(save_file)
return save_dict
def file_dump(self) :
with open("project_data\\savedata.dat","wb") as save_file :
pickle.dump(self.save_dict,save_file)
def recieve(self,conn) :
msg_length = conn.recv(self.HEADER).decode(self.FORMAT)
if msg_length:
msg_length = int(msg_length)
msg = conn.recv(msg_length).decode(self.FORMAT)
return msg
def handle_client(self,conn, addr):
print(f"[NEW CONNECTION] {addr} connected.")
connected = True
while connected:
try :
self.save_dict = self.file_access()
msg = self.recieve(conn)
if msg == self.DISCONNECT_MESSAGE:
connected = False
elif msg == "Save Data" :
player_id = conn.recv(5000)
try :
name,code = pickle.loads(player_id)
except EOFError :
pass
if (name,code) not in self.save_dict :
conn.send("Available".encode(self.FORMAT))
msg1 = self.recieve(conn)
if msg1 == "Game Data" :
game_data = conn.recv(5000)
#msg = pickle.loads(msg_data)
self.save_dict[(name,code)] = game_data
print(self.save_dict)
conn.send("Success".encode(self.FORMAT))
else :
conn.send("Exists".encode(self.FORMAT))
msg1 = self.recieve(conn)
if msg1 == "Game Data" :
game_data = conn.recv(5000)
self.save_dict[(name,code)] = game_data
conn.send("Success".encode(self.FORMAT))
elif msg == "Wipe" :
self.save_dict.pop((name,code))
print(f"new dict is ",self.save_dict)
elif msg == "Load" :
player_id = conn.recv(5000)
try :
name,code = pickle.loads(player_id)
except EOFError :
pass
if (name,code) in self.save_dict :
conn.send("Present".encode(self.FORMAT))
conn.send(self.save_dict[(name,code)])
else :
conn.send("Absent".encode(self.FORMAT))
elif msg == "Check Data" :
player_id = conn.recv(5000)
try :
name,code = pickle.loads(player_id)
except EOFError :
pass
if (name,code) in self.save_dict :
conn.send("Exists".encode(self.FORMAT))
else :
conn.send("New".encode(self.FORMAT))
self.file_dump()
except ConnectionResetError :
connected = False
conn.close()
print(f"[Terminated] connection terminated for {addr}")
def start(self):
self.server.listen()
print(f"[LISTENING] Server is listening on {self.SERVER}")
while True:
conn, addr = self.server.accept()
thread = threading.Thread(target=self.handle_client, args=(conn, addr))
thread.start()
print(f"[ACTIVE CONNECTIONS] {threading.activeCount() - 1}")
print("[STARTING] server is starting...")
server = Server()
server.start()
我已经使用套接字包在我的本地网络上运行服务器。
最佳答案
方法 1
一个可能的解决方案是加密您的代码。有几种加密代码的方法。但最简单的方法是使用 base64
或基本上转换 text-to-binary
编码。并且您需要确保没有特殊字符,因为 base64 仅具有此字符集。
您可以在此处查看 base64 表 https://en.wikipedia.org/wiki/Base64
import base64
your_code = base64.b64encode(b"""
# All your code goes in here.
import socket
import threading
import pickle
class Server :
def __init__(self) :
self.HEADER = 64
self.PORT = 5050
self.SERVER = socket.gethostbyname(socket.gethostname())
self.ADDR = (self.SERVER, self.PORT)
self.FORMAT = 'utf-8'
self.DISCONNECT_MESSAGE = "!DISCONNECT"
# Continue your code...
""")
exec(base64.b64decode(your_code))
此技术用于黑客攻击和其他恶意目的,以避免防病毒软件将其检测为恶意软件。这可能对你有用。重新编译试试。让我们知道它是否有效。
fernet cryptography
.这意味着代码被更严密地加密,这让
anti-virus software
变得更加困难。将其识别为恶意软件而不是第一种方法。为此,您需要一个名为
cryptography
的 Python 模块。
https://pypi.org/project/cryptography/
from cryptography.fernet import Fernet
import base64
code = b"""
import socket
import threading
import pickle
class Server :
def __init__(self) :
self.HEADER = 64
self.PORT = 5050
self.SERVER = socket.gethostbyname(socket.gethostname())
self.ADDR = (self.SERVER, self.PORT)
self.FORMAT = 'utf-8'
self.DISCONNECT_MESSAGE = "!DISCONNECT"
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server.bind(self.ADDR)
self.save_dict = {}
def file_access(self) :
with open("project_data\\savedata.dat","rb") as save_file :
save_dict = pickle.load(save_file)
return save_dict
def file_dump(self) :
with open("project_data\\savedata.dat","wb") as save_file :
pickle.dump(self.save_dict,save_file)
def recieve(self,conn) :
msg_length = conn.recv(self.HEADER).decode(self.FORMAT)
if msg_length:
msg_length = int(msg_length)
msg = conn.recv(msg_length).decode(self.FORMAT)
return msg
def handle_client(self,conn, addr):
print(f"[NEW CONNECTION] {addr} connected.")
connected = True
while connected:
try :
self.save_dict = self.file_access()
msg = self.recieve(conn)
if msg == self.DISCONNECT_MESSAGE:
connected = False
elif msg == "Save Data" :
player_id = conn.recv(5000)
try :
name,code = pickle.loads(player_id)
except EOFError :
pass
if (name,code) not in self.save_dict :
conn.send("Available".encode(self.FORMAT))
msg1 = self.recieve(conn)
if msg1 == "Game Data" :
game_data = conn.recv(5000)
#msg = pickle.loads(msg_data)
self.save_dict[(name,code)] = game_data
print(self.save_dict)
conn.send("Success".encode(self.FORMAT))
else :
conn.send("Exists".encode(self.FORMAT))
msg1 = self.recieve(conn)
if msg1 == "Game Data" :
game_data = conn.recv(5000)
self.save_dict[(name,code)] = game_data
conn.send("Success".encode(self.FORMAT))
elif msg == "Wipe" :
self.save_dict.pop((name,code))
print(f"new dict is ",self.save_dict)
elif msg == "Load" :
player_id = conn.recv(5000)
try :
name,code = pickle.loads(player_id)
except EOFError :
pass
if (name,code) in self.save_dict :
conn.send("Present".encode(self.FORMAT))
conn.send(self.save_dict[(name,code)])
else :
conn.send("Absent".encode(self.FORMAT))
elif msg == "Check Data" :
player_id = conn.recv(5000)
try :
name,code = pickle.loads(player_id)
except EOFError :
pass
if (name,code) in self.save_dict :
conn.send("Exists".encode(self.FORMAT))
else :
conn.send("New".encode(self.FORMAT))
self.file_dump()
except ConnectionResetError :
connected = False
conn.close()
print(f"[Terminated] connection terminated for {addr}")
def start(self):
self.server.listen()
print(f"[LISTENING] Server is listening on {self.SERVER}")
while True:
conn, addr = self.server.accept()
thread = threading.Thread(target=self.handle_client, args=(conn, addr))
thread.start()
print(f"[ACTIVE CONNECTIONS] {threading.activeCount() - 1}")
print("[STARTING] server is starting...")
server = Server()
server.start()
"""
key = Fernet.generate_key()
encryption_type = Fernet(key)
encrypted_message = encryption_type.encrypt(code)
decrypted_message = encryption_type.decrypt(encrypted_message)
exec(decrypted_message)
这次编译
exe
已上传到
https://www.virustotal.com/gui/结果更好
exe
.另一种最流行的卡住代码的方法是使用
py2exe
.
Install the module from the pypi website.
setup.py
的新 python 文件在与主代码文件相同的目录中。然后将以下内容粘贴到您的 setup.py
中文件。 from distutils.core import setup
import py2exe
setup(console=['main.py'])
python setup.py py2exe
dist
的文件夹将被创建。它将包含您 exe
的所有依赖项.exe
并将依赖项合并为一个 msi
文件。关于python - 使用 pyinstaller 制作的 exe 文件被 Windows Defender 报告为病毒威胁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64788656/
我在从排除项中删除以下文件夹时遇到问题,因为由于这些排除项,我的 CPU 使用率达到 90%,而且我不知道它们何时以及为何出现在我的列表中。我昨天更新了 Windows,我的 CPU 开始变热...我
我在从排除项中删除以下文件夹时遇到问题,因为由于这些排除项,我的 CPU 使用率达到 90%,而且我不知道它们何时以及为何出现在我的列表中。我昨天更新了 Windows,我的 CPU 开始变热...我
我出于研究目的检查了不同的键盘记录器并偶然发现了 Refog: https://www.refog.com/keylogger/ 这个程序可以捕获很多系统事件,但真正引起我注意的是别的东西。程序创建了
我最近获得了适用于 Windows 的 l0pht-CD,并在我的 PC 上试用了它,它工作正常!! 2600hertz.wordpress.com/2009/12/22/100-windows-xp
在我将 PyCharm IDE 从 19.1.2 更新到 19.2.0 之后。我收到以下警告: "Windows Defender might be impacting your build perf
这个问题已经有答案了: How to avoid the "Windows Defender SmartScreen prevented an unrecognized app from starti
您好,我不知道,但 Windows Defender 正在标记我的程序,但代码中没有任何内容应该设置它。有办法阻止这个吗?难道这就是乌龟,因为它正在做屏风吗?还是因为随机数? import time
Win7系统自带杀毒软件windows defender,由于大家已习惯使用全家桶系列,所以这个功能有点鸡肋。如果不关闭还会出现冲突情况,这就需要将其关闭,那么要如何关闭windows defend
我正在努力帮助 SuperCollider community尝试了解我们如何防止 Windows Defender 在最新的 Windows 10 上延迟执行其中一个可执行文件。 original
我正在使用 Visual Studio 2019 编译 C++ 代码。代码范围从简单的项目到学习 C++ 功能再到游戏开发。但无论项目的范围如何,我都会收到此消息: Security Scan Req
我将 sendgrid 设置为使用 web api(而不是 smtp 中继)来发送电子邮件。 我按照 C# 如何发送电子邮件的说明进行操作,包括创建 api key 环境变量和安装 nuget 包 s
我正在尝试修复 Azure Kubernetes 集群的这个高严重性错误 我尝试使用 Azure 门户,但它持续旋转数小时且无法修复。 我还尝试了以下 Az 命令 - az aks update --
阅读Windows Defender API的文档,例如MpManagerOpen功能: https://msdn.microsoft.com/en-us/library/windows/deskto
Windows Defender 磁盘扫描会占用系统的大量性能。有没有办法让 C# 应用程序查明磁盘扫描当前是否正在运行? 最佳答案 您可以检查 MsMpEng.exe(反恶意软件服务可执行文件)当前
我在 Windows Defender 中排除了以下文件夹,但“反恶意软件服务可执行文件”仍在使用大量 CPU。 C:\Program Files\Android\Android Studio C:\
我了解代码签名。 但是当我尝试下载一些应用程序时,它甚至没有代码签名。 并且在没有Windows Defender蓝屏的情况下仍然可以打开。 示例:http://www.eainstall.com/d
语境 我已经设置了 trivial Electron app它显示了一个普通的 html 文件,并且始终需要两秒钟以上的时间才能启动。关键性能测量是: 170 毫秒:屏幕上出现一个空白窗口 2800
我有一堆机器正在受到自适应应用程序安全控件的监控,这些控件会发出警告,因为训练过程运行的时间不够长,无法识别良性可执行文件。将事件警报中的可执行文件的异常(exception)添加到自适应安全组的简单
jQuery Defender 在 IE9 中不起作用。怎么了? var promise_url_1 = $.get('http://test.loc/1.html'); var promise_u
这个问题在这里已经有了答案: When to use: Java 8+ interface default method, vs. abstract method (16 个答案) 关闭 7 年前。
我是一名优秀的程序员,十分优秀!