Python从零开始编写控制程序(一)
Python之从零开始编写控制程序(一)
在此声明:本博客仅供学习参考,任何产生相关违法犯罪行为与本人无关。
另外如果有师傅有好的思路和想法,可以和我一起沟通交流。
最近在一直尝试做Powershell木马的免杀,免杀的Payload一直是Coblatstrike生成的。
就想着自己尝试使用Python编写木马,考虑到自己之前有网络编程经验,也懂一点多线程多进程。
所以考虑自己从零开始编写基于Socket的木马。
整体思路与实现功能初步如下,将分为5个篇幅来构建实现其功能。

其中有些问题譬如编码解码上传的问题在每次博客后我会进行总结。
本次博客主要先讲解如何将生成的Python代码转化为EXE程序,另外实现注册表写入功能。
转化为EXE程序
Python中提供相关库Pyinstaller,在Pycharm中直接下载,转换至终端即可使用。
基本使用参数含义如下:
| 参数 | 含义 |
|---|---|
| -F | 产生单个可执行文件 |
| -D | 产生一个目录,作为可执行程序 |
| -w | 程序运行时不产生命令行窗口 |
| -i | 选择生成EXE的图标,不选择则默认 |
例:产生隐藏执行Python命令的文件:
pyinstaller -F -w -i C:\\a.icon main.py

生成结果一般如上。
写入注册表开机自动执行
首先我们要知道注册表的基本知识:
HEKY_CLASSES_ROOT:管理文件文件系统,根据在Windows中安装的应用扩展名,该根键指明其文件类型,相应打开文件夹要调用的程序等信息。
HKEY_CURRENT_USR:管理系统当前的用户信息,在这个根据键中保存了本地计算机中存放的当前登陆用户的用户信息,包括用户登录名与暂存密码,在用户登陆Win98的时候,其信息从HKEY_USERS象印的相中拷贝到HEY_CURRENT_USER中
HKEY_LOCAL_MACHINE:管理当前系统硬件配置,在这个根键中保存了计算机的硬件配置数据,此根键下的子关键字包括在SYSTEM.DAT中,用来提供所需信息【提权中用的比较多】
HKEY_USERS:管理系统的用户信息,在这个根键中存放在本地计算机口令的用户表示和密码列表,且每个用户的预配置信息都存储在HKEY_USERS的根键中,HKEY_USERS是远程计算机访问中的根键之一
HKEY_CURRENT_CONFIG:管理当前用户的系统配置,在这个根键中保存着定义当前用户桌面配置等其他与用户有关的信息。
其中与开机自动执行相关的注册表位置在:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
在编辑注册表前我们需要了解其相关结构:

在添加应用程序至注册表前,我们需要解决两个问题:
1.写入注册表的位置
2.注册表写入后的名称,类型,与文件所处位置。
在这里我将文件所处位置设为C:\System32\Temp临时文件目录下的程序, 因为将来会使用到自解压格式自动设定。
因此这里的数据可以是C:\Windows\Temp\XMind.exe.写入注册表的位置已在上文提及不再赘述。
Python处理注册表相关的库为winreg.下面为具体使用方法:
import winreg
#设置数据位置
strings=r'C:\Windows\Temp\XMind.exe'
#设置注册表写入位置,其中0和Winreg.KEY_ALL_ACCESS为默认
key=winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",0,winreg.KEY_ALL_ACCESS)
#创建新注册表值的名称
newkey=winreg.CreateKey(key,"MicrosoftUpdate")
#设置新的注册表
winreg.SetValueEx(key,"MicrosoftUpdate",0,winreg.REG_SZ,strings)
#写入后关闭
winreg.CloseKey(key)
执行后结果如下

删除注册表写入的数据,重新生成EXE后再次进行运行,发现已经成功执行进程表写入。

Python从零开始编写控制程序(一)的更多相关文章
- Python从零开始编写控制程序(二)
# Python从零开始编写控制程序(二)前言:终于考完期末了,鸽了很久的远控Python终于有时间更新下了.上篇文章里,我们解决了注册表写入和Python编写为exe程序的问题.那么这篇文章我们来研 ...
- 从零开始编写自己的C#框架(26)——小结
一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...
- 从零开始编写自己的C#框架(25)——网站部署
导航 1.关掉访问保护 2.发布网站 3.复制网站到服务器 4.添加新网站 5.设置网站访问权限 6.设置文件夹访问权限 7.控制可更新文件夹执行权限 8.设置“应用程序池”.net版本与模式 9.附 ...
- 从零开始编写自己的C#框架(1)——前言
记得十五年前自学编程时,拿着C语言厚厚的书,想要上机都不知道要用什么编译器来执行书中的例子.十二年前在大学自学ASP时,由于身边没有一位同学和朋友学习这种语言,也只能整天混在图收馆里拼命的啃书.而再后 ...
- 从零开始编写自己的C#框架(20)——框架异常处理及日志记录
最近很忙,杂事也多,所以开发本框架也是断断续续的,终于在前两天将前面设定的功能都基本完成了,剩下一些小功能遗漏的以后发现再补上.接下来的章节主要都是讲解在本框架的基础上进行开发的小巧. 本框架主要有四 ...
- 从零开始编写自己的C#框架(17)——Web层后端首页
后端首页是管理员登陆后进入的第一个页面,主要是显示当前登陆用户信息.在线人数.菜单树列表.相关功能按键和系统介绍.让管理员能更方便的找到息想要的内容. 根据不同系统的需要,首页会显示不同的内容,比如显 ...
- 从零开始编写自己的C#框架(15)——Web层后端登陆功能
对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的. 1.在解决方案中创建一个Web项目,并将它设置 ...
- 从零开始编写自己的C#框架(11)——创建解决方案
这段时间一直在充电,拜读了园子中大神们的博文(wayfarer的<设计之道>.TerryLee的<.NET设计模式系列文章>.卡奴达摩的<设计模式>还有其他一些零散 ...
- 从零开始编写自己的C#框架(2)——开发前准备工作
没想到写了个前言就受到很多朋友的支持,大家的推荐就是我最大的动力(推荐得我热血沸腾,大家就用推荐来猛砸我吧O^-^O),谢谢大家支持. 其实框架开发大家都知道,不过要想写得通俗点,我个人觉得还是挺吃力 ...
随机推荐
- kustomize简单使用
1.背景 在Kubernetes v1.14版本的发布说明中,kustomize 成为了 kubectl 内置的子命令,并说明了 kustomize 使用 Kubernetes 原生概念帮助用户创作并 ...
- 怎么用git将自己的源代码提交到git服务器上
在git服务器上新建仓库 在本地初始化本地仓库 初始化 git init 添加远程仓库地址 git remote add origin XXX.git 同步 git pull origin maste ...
- 整理C#获取日期显示格式
C#获取当前日期的几种显示格式 有时候需要用一些不常用的日期格式时,总是要去网上查找,很多都是复制粘贴,还不完整.就整理一下. DatetimeTextBox.Text += DateTime.Now ...
- 【Spring】Spring中的循环依赖及解决
什么是循环依赖? 就是A对象依赖了B对象,B对象依赖了A对象. 比如: // A依赖了B class A{ public B b; } // B依赖了A class B{ public A a; } ...
- git配置多个ssh key
随着工作的深入,我们通常都会有多个git账户.比如公司gitlab一个账户,github或gitee有一个账户.而平时我们又回通过 配置ssh公私钥认证的方式省去繁琐的登录远程仓库的操作,不同的git ...
- adb bat
@REM 生成随机数@echo off@REM 设置延迟变量setlocal enabledelayedexpansionset min=9set max=21set /a mod=!max!-!mi ...
- SLAM的数学基础(1):什么是方差,有什么意义?
小红班上有两组同学的数学考试分数为: 第一组:小红:100分,小明:60分,小宇:20分 第二组:小蓝:70分,小华:60分,小杰:50分 那么很容易算出,第一组的平均分是60分,第二组的平均分也是6 ...
- java并发编程基础—生命周期与线程控制
一.线程生命周期 线程被创建启动以后,他既不是一启动就进入执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(Running).阻塞(Bloc ...
- HDFS学习总结之安装
HDFS linux安装总结(基于hadoop-2.6.0-cdh5.7.0 伪分部安装) 1.jdk安装 1) 直接下载jdk包放到安装目录即可(jdk-8u131-linux-x64.tar.gz ...
- 学习Git的基本业务逻辑
1,基本业务逻辑(假设针对index.html文件中内容): 1,在init版本库之前已写好开头部分:index 对index进行git init版本库: 进入到文件夹中,git init git a ...