
使用Zolom内存解析运行python脚本(不落地)
发布日期:2021-05-09 05:10:47
浏览次数:22
分类:精选文章
本文共 1179 字,大约阅读时间需要 3 分钟。
在目标机器运行python工具
好多工具都是python写的,如果目标机器是linux的话自带python环境可以很方便的运行这些工具,但是windows下是不自带python环境的,所以一种办法是直接在目标环境安装一个python,另外一种就是直接在内存加载python脚本。
而ironpython
可以将python脚本转成.net
形式在内存中运行,两个工具可以达到目的:
- 老版本的
silenttrinity
; - Zolom的小工具;
Zolom编译方式
利用git将代码克隆到本地,然后使用vs2019
打开后,再解决方案右键-恢复NuGet
包。
代码解读
Main
函数开始,有两种方式指定python
脚本内容:
--script
读取的是明文形式的代码,--b64script
读取的是base64
加密的脚本内容,所以基本用法如下:
zolom.exe --script:"from random import seed; from random import random; seed(1); print 'getting random number'; print random();"zolom.exe --b64script:"ZnJvbSByYW5kb20gaW1wb3J0IHNlZWQ7IGZyb20gcmFuZG9tIGltcG9ydCByYW5kb207IHNlZWQoMSk7IHByaW50ICdnZXR0aW5nIHJhbmRvbSBudW1iZXInOyBwcmludCByYW5kb20oKTs="
之后创建脚本引擎,然后将Lib.zip
作为python库加载到引擎当中:
看起来代码很简单,加载所有库到内存之后运行代码。
点1:Lib.zip通过什么方式打包到exe里
原本我以为,编译之后的exe要和Lib.zip
一起放到目标机器里,后来发现想多了,Lib.zip
直接作为嵌入资源的形式打包到exe
里了。
点2:DLL如何打包到exe里
项目中使用的NuGet
包里除了IronPython
,还使用了Costura.Fody
和Fody
,把这两个包卸载之后,重新编译之后,会发现多出了一堆Dll
文件:
Uninstall-Package Costura.FodyUninstall-Package Fody
由此可知,Costura.Fody
可以很方便的将依赖嵌入到exe中。
还原成之前的样子,需要先将两个包安装回去:
注意版本问题,版本太高的话会报错的Install-Package Fody -Version 2.0.0Install-Package Costura.Fody -Version 1.6.2
修改FodyWeavers.xml
:
重新编译之后,生成的文件又变成了单个的exe:
发表评论
最新留言
很好
[***.229.124.182]2025年05月08日 13时22分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux--make/进度条
2023-02-02
Linux--NFS和DHCP服务器
2023-02-02
Linux--内核进程O(1)调度队列
2023-02-02
Linux--基本指令2
2023-02-02
Linux--基本指令4(完结)和权限
2023-02-02
Linux--基础命令3
2023-02-02
Linux--操作系统/进程
2023-02-02
Linux--文件
2023-02-02
Linux--本地yum库
2023-02-02
Linux--环境变量
2023-02-02
Linux--磁盘管理
2023-02-02
2025年04月06日AI领域重点关注焦点
2023-02-02
Linux--进程优先级
2023-02-02
Linux--进程控制
2023-02-02
Linux--进程状态
2023-02-02
Linux-01
2023-02-02
Linux-01 虚拟机Linux的安装
2023-02-02
Linux-Bridge(LBR)网络虚拟化实战
2023-02-02
Linux-chmod_命令的详细用法讲解
2023-02-02
Linux-rhel6.4 编译安装PHP,Nginx与php连接
2023-02-02