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从零开始编写控制程序(一)的更多相关文章

  1. Python从零开始编写控制程序(二)

    # Python从零开始编写控制程序(二)前言:终于考完期末了,鸽了很久的远控Python终于有时间更新下了.上篇文章里,我们解决了注册表写入和Python编写为exe程序的问题.那么这篇文章我们来研 ...

  2. 从零开始编写自己的C#框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

  3. 从零开始编写自己的C#框架(25)——网站部署

    导航 1.关掉访问保护 2.发布网站 3.复制网站到服务器 4.添加新网站 5.设置网站访问权限 6.设置文件夹访问权限 7.控制可更新文件夹执行权限 8.设置“应用程序池”.net版本与模式 9.附 ...

  4. 从零开始编写自己的C#框架(1)——前言

    记得十五年前自学编程时,拿着C语言厚厚的书,想要上机都不知道要用什么编译器来执行书中的例子.十二年前在大学自学ASP时,由于身边没有一位同学和朋友学习这种语言,也只能整天混在图收馆里拼命的啃书.而再后 ...

  5. 从零开始编写自己的C#框架(20)——框架异常处理及日志记录

    最近很忙,杂事也多,所以开发本框架也是断断续续的,终于在前两天将前面设定的功能都基本完成了,剩下一些小功能遗漏的以后发现再补上.接下来的章节主要都是讲解在本框架的基础上进行开发的小巧. 本框架主要有四 ...

  6. 从零开始编写自己的C#框架(17)——Web层后端首页

    后端首页是管理员登陆后进入的第一个页面,主要是显示当前登陆用户信息.在线人数.菜单树列表.相关功能按键和系统介绍.让管理员能更方便的找到息想要的内容. 根据不同系统的需要,首页会显示不同的内容,比如显 ...

  7. 从零开始编写自己的C#框架(15)——Web层后端登陆功能

    对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的. 1.在解决方案中创建一个Web项目,并将它设置 ...

  8. 从零开始编写自己的C#框架(11)——创建解决方案

    这段时间一直在充电,拜读了园子中大神们的博文(wayfarer的<设计之道>.TerryLee的<.NET设计模式系列文章>.卡奴达摩的<设计模式>还有其他一些零散 ...

  9. 从零开始编写自己的C#框架(2)——开发前准备工作

    没想到写了个前言就受到很多朋友的支持,大家的推荐就是我最大的动力(推荐得我热血沸腾,大家就用推荐来猛砸我吧O^-^O),谢谢大家支持. 其实框架开发大家都知道,不过要想写得通俗点,我个人觉得还是挺吃力 ...

随机推荐

  1. ESCMScript(2)Module语法

    严格模式 ES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";. 严格模式的限制如下 变量必须声明后再使用 函数的参数不能有同名属性,否则报错 不能 ...

  2. 《汇编语言程序设计》(Professional Assembly Language)学习笔记(二)

    挖坑:学习笔记(一)讲述如何在 Windows Vmware 上安装 Ubuntu 20.04 实践环境 本文是基于Ubuntu 20.04平台进行实验,下文中的解决方法都基于此前提 问题记录 问题一 ...

  3. webpack(4)webpack.config.js配置和package.json配置

    前言 上一篇文章我们使用webpack打包成功了,但是每次都要自己手动输入打包的文件地址和打包到哪里去的地址,非常麻烦,所以这里介绍使用配置文件进行打包 webpack.config.js 首先我们创 ...

  4. MPP大规模并行处理架构详解

    面试官:说下你知道的MPP架构的计算引擎? 这个问题不少小伙伴在面试时都遇到过,因为对MPP这个概念了解较少,不少人都卡壳了,但是我们常用的大数据计算引擎有很多都是MPP架构的,像我们熟悉的Impal ...

  5. linux中的vim用法

    p.p1 { margin: 0; font: 16px ".PingFang SC"; color: rgba(53, 53, 53, 1) } p.p2 { margin: 0 ...

  6. 计算机网络体系结构整理-第九单元移动IP

    第九章 移动IP 什么是移动:移动指的是用户连接位置的改变,而不是设备物理位置的改变 移动可以是离散的或连续的 移动IP的基本要求:1.IP地址不变 2.宿地址路由 3.信息量和交互简化 4.安全 5 ...

  7. Android布局方式总结

    Android的布局分别是:线性布局LinearLayout.相对布局RelativeLayout.帧布局FrameLayout.网格布局GridLayout.约束布局ConstraintLayout ...

  8. C语言:随机数

    在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌.在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机 ...

  9. python mysql 图片保存到表,从表中读出图片

    fp = open(aa, 'rb') try: img = fp.read() except: print("图片打开出错") fp.close() return img #上面 ...

  10. java 实现中英文拼写检查和错误纠正?可我只会写 CRUD 啊!

    简单的需求 临近下班,小明忙完了今天的任务,正准备下班回家. 一条消息闪烁了起来. "最近发现公众号的拼写检查功能不错,帮助用户发现错别字,体验不错.给我们系统也做一个." 看着这 ...