`
shangjava
  • 浏览: 1254818 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

關於進程殺死問題的研究報告

阅读更多

關於進程殺死問題的研究報告

[摘要]<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

  進程在運行狀態下可以經由Windows任務管理器殺死,在Windows9X系統下,通過把程序設置為系統程序,可以使它的進程不在任務管理器中顯示出來,從而避免了被用戶直接終止;在WindowsNT/2000/XP操作系統下,系統中運行的進程無法在任務管理器中隱藏,本文論述的,就是在NT內核的操作系統下(WindowsNT/2000/XP/2003),如何防止進程被用戶殺死的問題。

[關鍵詞] 進程 保護 Windows服務 安全對象 Windows特權

1??????? 防止任務管理器終止進程的基本原理

1.1????? 任務管理器終止進程的原理

任務管理器並不是直接終止進程的,它是通過OpenProcess函數打開一個進程對象,然後調用TerminateProcess函數發送一個消息到目標進程,從而達到關閉目標進程的目的。

所以,要阻止任務管理器關閉某一個進程,我們可以考慮從三個關鍵環節下手: 即OpenProcess的時候;發送TerminateProcess消息的時候,還有就是通過進程本身的自我保護機制,以下概述之。

1.2????? OpenProcess

任務管理器通過OpenProcess來打開目標進程對象。假如讓任務管理器沒有權限來打開這個進程對象,那麼OpenProcess將失敗,並返回一個錯誤代碼ERROR_ACCESS_DENIED(5)

一個實際的例子是,當用戶試圖通過任務管理器終止一個Windows服務程序的時候,一般來說,任務管理器將無法使用OpenProcess打開目標進程對象,關閉進程的操作就會被取消。

實現這種效果的方法有兩種,一種是把應用程序註冊成Windows服務,另一種是修改進程的訪問安全級別。但是,它們都有各自的缺陷。

1.3????? 自身的保護機制

進程還可以通過偵測自身的狀態來實現自我保護,達到讓用戶無法關閉的效果。

實現這種效果的方法有三種。

第一種是雙工系統,就是讓系統同時運行兩個進程,一個在前台活動一個后台休眠,當一個進程被終止,另一個就投入使用,並重啟被關掉的進程,置為后台休眠狀態;

第二種是多線程自我監視,譬如進程運行三個線程,一個主線程,一個監視線程,一個嵌入到其他進程內,三個線程互相監督,防止被用戶關閉;

第三種是利用鉤子技術,就是通過設置全局API鉤子,一旦發現有TerminateProcess從別的進程發送過來,立刻取消這個消息,從而保護進程不被關閉。

以上三種方法,都有運用的實例。

2??????? 使用訪問控制技術

2.1????? 把應用程序註冊為服務

在一般情況下,用戶是沒有辦法從任務管理器中終止一個服務程序的。因此,可以把應用程序做成Windows服務(Service),從而達到防止被非法關閉的目的。

註冊一個新的服務可以通過以下代碼完成,為了便于表述,這裡省略了所有的錯誤處理。

代碼清單1

// 打開服務數據庫

schSCManager = OpenSCManager(lpHostName, NULL, SC_MANAGER_ALL_ACCESS);

// 創建服務

schService = CreateService(schSCManager, "Client", "Client", SERVICE_ALL_ACCESS,??? ???????????????????? SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,??????????????????????????????????????????? SERVICE_ERROR_IGNORE, "Client.exe", NULL, NULL, NULL, NULL, NULL);

  注意,創建服務的進程必須用有系統管理員級權限。

服務可能被用戶停止,在這裡,我們可以在進程中創建一個線程,每隔一定時間輪訊服務數據庫,把服務的其定模式更改為自動執行,如果發現服務停止了,就重啟。實例如下:

代碼清單2

const int?? MAX_SIZE?? = 256;

const DWORD SLEEP_TIME = 500;

while(1) // process every 500 milliseconds to ensure service config

{

// 和本機的服務管理數據庫建立連接

// ** 沒有事先查詢服務數據庫是否被鎖定, 在整合的時候必須加上

// ** 父進程必須必須擁有系統管理員權限或者足夠的特權級別

schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);

CString strSvrName;

strSvrName.Format("Messenger");

schService = OpenService(schSCManager, strSvrName, SERVICE_ALL_ACCESS);

// 以下設置服務的啟動模式

ChangeServiceConfig(

??????? schService, ?// handle of service

??????? SERVICE_NO_CHANGE,  // service type: no change

??????? SERVICE_AUTO_START,?? // change service start type

??????? SERVICE_NO_CHANGE,?? // error control: no change

??????? NULL,???????????????? // binary path: no change

??????? NULL,???????????????? // load order group: no change

??????? NULL,???????????????? // tag ID: no change

??????? NULL,???????????????? // dependencies: no change

??????? NULL,???????????????? // account name: no change

??????? NULL,???????????????? // password: no change

??????? NULL)???????????????? // display name: no change

// 以下偵測並維護服務的運行情況

SERVICE_STATUS stuSvrStatus;

QueryServiceStatus(schService, &stuSvrStatus))

if (SERVICE_START_PENDING != stuSvrStatus.dwCurrentState &&

??????? SERVICE_RUNNING?????? != stuSvrStatus.dwCurrentState)

// service has been shut down

{

??????? // 重啟服務

??????? if (!StartService(schService,0,NULL))????????????????????????

??????? {

??????????????? dwErr = GetLastError();

??????????????? if (ERROR_SERVICE_ALREADY_RUNNING == dwErr)

??????????????? {

??????????????????????? Sleep(SLEEP_TIME);

??????????????????????? continue;

??????????????? }

??????????????? printf("StartService failed! code = %d\n", dwErr);

??????????????? CloseServiceHandle(schService);

??????????????? CloseServiceHandle(schSCManager);

??????????????? return;

??????? }

}

?

CloseServiceHandle(schService);

CloseServiceHandle(schSCManager);

Sleep(SLEEP_TIME);

} // End while

同樣,我省略了所有的錯誤檢測代碼。

小結:

使用服務的優勢在於,服務可以在用戶登陸之前就開始運行,並且不受用戶登出的影響。但是輪訊服務狀態和重啟動會消耗比較多的資源,同時,如果惡意用戶頻繁停止服務,輪訊將導致程序頻繁重啟,程序將總是在進行初始化,而無法正常工作。

Windows2000下,系統管理員在未使用特定權限的情況下不能終止服務,但是在WindowsXP/2003下,系統管理員是可以直接從任務管理器里終止服務的。因此使用服務並不能完美的達到防止進程被殺死的目的。

2.2????? 使用安全對象

原理和缺陷:

當任意一個進程對一個進程對象進行訪問的時候,系統將檢查目標進程的安全設置,如果安全設置不允許主控進程對這個進程進行該類型的訪問,這個訪問的請求將被拒絕。把進程設置為安全對象,將阻止未授權用戶非法殺死進程。

當用戶獲得某些特權之後,對進程對象的訪問將繞過安全設置直接進行,因此,安全設置不能保證特權用戶通過行使特權來關閉進程。當然,想要讓任務管理器獲得系統特權,是比較困難的,普通人幾乎不可能做到。

另外,由於微軟出于自身保護的原因,少有見到對安全對象技術詳盡的介紹,因此,我對這個技術還有很多不理解的地方,對其運用還不成熟。

簡介:

進程對象屬于Windows內核對象,每一個內核對象都有自身的訪問安全標誌,即所謂的SecurityDescriptor(SD)

SD包含了全部的內核對象訪問信息,包括組群,所有者等等,其中關於訪問安全控制的是Access_Control List(ACL)SD中包含兩個ACL,一個是任意ACL(DACL),另一個是系統ACL,即SACLDACL指定了哪些用戶以及那類用戶能夠對指定內核對象進行或不能進行那些類型的訪問,SACL指定了系統管理員可以監看對內核對象的哪些訪問,這個監看的過程叫做審核,它將在系統中產生一個日誌文件,紀錄下SACL中指定的訪問情況。

ACL中包含了一個ACL頭結構和一組Access Entry(AE)AE可以有多個,也可以一個都沒有。

AE由一個AE頭結構和AE內容體組成。頭聲明了AE的類型,內容體包含了一個委派人(Trustee)和一組操作掩碼(Access Mask_Code),根據頭結構的聲明,系統將允許或者拒絕委派人執行操作掩碼所描述的訪問操作。

SID結構用來表示TrusteeSIDsecurity identifier的縮寫,可以用它來標誌一個用戶或者一個群組,在網絡編程中,它還能表示一個或者一個群組的登陸用戶。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1028" style="WIDTH: 6in; HEIGHT: 210.75pt" type="#_x0000_t75"><imagedata o:title="ACL" src="file:///D:/Temp/msoclip1/01/clip_image001.jpg"></imagedata></shape>

上圖演示了DACL的作用過程。

對於SD的具體應用代碼如下:

代碼清單3

// 初始化SecDescriptor

InitializeSecurityDescriptor(pSecDescriptor, SECURITY_DESCRIPTOR_REVISION))

?

// 設置ACL

?

pSID pSidGroup;

pSidGroup = &sidGroup;

?

// 初始化ACL

if (!InitializeAcl(pSecConfig, 1000, ACL_REVISION))

?

// ACL中添加一個ACCESS_DENIED_ACE

AddAccessDeniedAce(pSecConfig, ACL_REVISION,

??????? SPECIFIC_RIGHTS_ALL|STANDARD_RIGHTS_ALL, pSidGroup)

{

??????? dwErr = GetLastError();

??????? printf("AddAccessDeniedAce failed! Code = %d\n", dwErr);

??????? return FALSE;

}

?

// 設置DACL

SetSecurityDescriptorDacl(pSecDescriptor, TRUE, pSecConfig, FALSE)

if (!IsValidAcl(pSecConfig))

{

??????? printf("Create ACL failed!\nNot a valid ACL\n");

??????? return FALSE;

}

?

// 設置訪問安全性設置

pSecAtt->bInheritHandle = FALSE;

pSecAtt->lpSecurityDescriptor = pSecDescriptor;

pSecAtt->nLength = sizeof(*pSecAtt);

小結:

使用安全對象保護技術,可以在正常情況下使進程自身擁有防止被任務管理器殺死的能力。假如用戶有提昇任務管理器特權的技術水平,估計對如此高手也是防不勝防的。因此,這個技術是最有使用價值的。

3??????? 其他技術

本節述的技術比較複雜,並沒有具體實現。

3.1????? 多線程自我保護

三線程:

這種技術在中國黑客病毒中見到過,原理是把創建一個線程,並把這個線程嵌入到系統中的重要線程中(比如WinLogon),然後各個線程互相監看,發現那個被關掉了就把它再重啟起來。這種技術使用的實際上是一種自我監測機制。

進程再生:

這種技術應用在美萍反黃軟件上,原理是採用進程自我複製的辦法來防止被殺死。被複製的包括程序代碼和進程內核對象。

3.2????? 使用鉤子(Hook)技術

利用Windows全局API鉤子,一旦發現有外部進程試圖用TerminateProcess函數來終止進程,即進行攔截,使該操作無法進行,而進程內部使用ExitProcess函數,仍然可以終止進程。

另外,對於像WinLogon之類的核心服務,Windows任務管理器會直接拒絕用戶關閉,這是任務管理器在通過ListControl初始化服務名的時候自動拒絕的,和該服務沒有關係,證明是我可以用VisualC++Debuger來關掉WinLogon,當然,結果是當場系統崩潰。

分享到:
评论

相关推荐

    毕业设计物联网实战项目基于Eclipse Theia开源框架开发的物联网在线编程IDE.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    Android毕设实战项目基于Android的医院挂号系统.zip

    【项目资源】: 适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    (源码)基于Python的KMeans和EM算法结合图像分割项目.zip

    # 基于Python的KMeans和EM算法结合图像分割项目 ## 项目简介 本项目结合KMeans聚类和EM(期望最大化)算法,实现对马赛克图像的精准分割。通过Gabor滤波器提取图像的多维特征,并利用KMeans进行初步聚类,随后使用EM算法优化聚类结果,最终生成高质量的分割图像。 ## 项目的主要特性和功能 1. 图像导入和预处理: 支持导入马赛克图像,并进行灰度化、滤波等预处理操作。 2. 特征提取: 使用Gabor滤波器提取图像的多维特征向量。 3. 聚类分析: 使用KMeans算法对图像进行初步聚类。 利用KMeans的聚类中心初始化EM算法,进一步优化聚类结果。 4. 图像生成和比较: 生成分割后的图像,并与原始图像进行比较,评估分割效果。 5. 数值比较: 通过计算特征向量之间的余弦相似度,量化分割效果的提升。 ## 安装使用步骤 ### 假设用户已经下载了项目的源码文件 1. 环境准备:

    HCIP第一次作业:静态路由综合实验

    HCIP第一次作业:静态路由综合实验

    毕设单片机实战项目基于stm32、esp8266和Android的智能家居系统-设备端.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    统计学基于Python的Johnson-SU分布参数计算与优化:数据拟合及弹性网络参数优化方法实现(复现论文或解答问题,含详细可运行代码及解释)

    内容概要:本文详细介绍了Johnson-SU分布的参数计算与优化过程,涵盖位置参数γ、形状参数δ、尺度参数ξ和伸缩参数λ的计算方法,并实现了相应的Python代码。文中首先导入必要的库并设置随机种子以确保结果的可复现性。接着,分别定义了四个参数的计算函数,其中位置参数γ通过加权平均值计算,形状参数δ基于局部均值和标准差的比值,尺度参数ξ结合峰度和绝对偏差,伸缩参数λ依据偏态系数。此外,还实现了Johnson-SU分布的概率密度函数(PDF),并使用负对数似然函数作为目标函数,采用L-BFGS-B算法进行参数优化。最后,通过弹性网络的贝叶斯优化展示了另一种参数优化方法。; 适合人群:具有Python编程基础,对统计学和机器学习有一定了解的研究人员或工程师。; 使用场景及目标:①需要对复杂数据分布进行建模和拟合的场景;②希望通过优化算法提升模型性能的研究项目;③学习如何实现和应用先进的统计分布及优化技术。; 阅读建议:由于涉及较多数学公式和编程实现,建议读者在阅读时结合相关数学知识,同时动手实践代码,以便更好地理解和掌握Johnson-SU分布及其优化方法。

    TSP问题的3种智能优化方法求解(研究生课程《智能优化算法》结课大作业).zip

    TSP问题的3种智能优化方法求解(研究生课程《智能优化算法》结课大作业).zip

    毕业设计物联网实战项目基于Rtthread和MQTT搭建的物联网网关.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    基于STM32F103C8T6的温湿度传感器(HAL库版),通过串口向电脑端反馈数据(附通过ESP8266-01s模块连接WIFI上传云平台的资料代码-固件库版本).zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    自动发布Java项目(Tomcat)Shell脚本

    自动发布Java项目(Tomcat)Shell脚本

    (源码)基于webpack和Vue的前端项目构建方案.zip

    # 基于webpack和Vue的前端项目构建方案 ## 项目简介 本项目是基于webpack和Vue构建的前端项目方案,借助webpack强大的打包能力以及Vue的开发特性,可用于快速搭建现代化的前端应用。项目不仅完成了基本的webpack与Vue的集成配置,还在构建速度优化和代码规范性方面做了诸多配置。 ## 项目的主要特性和功能 1. 打包功能运用webpack进行模块打包,支持将scss转换为css,借助babel实现语法转换。 2. Vue开发支持集成Vue框架,能使用Vue单文件组件的开发模式。 3. 构建优化采用threadloader实现多进程打包,cacheloader缓存资源,极大提高构建速度开启热更新功能,开发更高效。 4. 错误处理与优化提供不同环境下的错误映射配置,便于定位错误利用webpackbundleanalyzer分析打包体积。

    Hands-On Large Language Models - Jay Alammar 袋鼠书 《动手学大语言模型》

    Hands-On Large Language Models - Jay Alammar 袋鼠书 《动手学大语言模型》PDF

    《基于YOLOv8的舞蹈动作分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    (源码)基于Arduino Feather M0和Raspberry Pi的传感器数据采集与监控系统.zip

    # 基于Arduino Feather M0和Raspberry Pi的传感器数据采集与监控系统 ## 项目简介 本项目是一个基于Arduino Feather M0和Raspberry Pi的传感器数据采集与监控系统。系统通过Arduino Feather M0采集传感器数据,并通过WiFi将数据传输到Raspberry Pi。Raspberry Pi运行BalenaOS,集成了MySQL、PHP、NGINX、Apache和Grafana等工具,用于数据的存储、处理和可视化。项目适用于环境监测、物联网设备监控等场景。 ## 项目的主要特性和功能 1. 传感器数据采集使用Arduino Feather M0和AM2315传感器采集温度和湿度数据。 2. WiFi数据传输Arduino Feather M0通过WiFi将采集到的数据传输到Raspberry Pi。

    《基于YOLOv8的音响设备识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    Android毕设实战项目这是一个android 图书管理系统.zip

    【项目资源】: 适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕业设计物联网实战项目基于智龙2.0开发板和窄带物联网模块BC95。操作系统为RTT2.1。.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    (源码)基于Arduino的WiFi按钮项目.zip

    # 基于Arduino的WiFi按钮项目 ## 一、项目简介 本项目是一个基于ESP8266芯片的Arduino项目,主要实现WiFi连接、电压检测、LED灯控制以及向服务器发送POST请求等功能。通过简单的按钮操作,可以实现与服务器通信并获取相关信息,同时能检测电池电压并提示用户。 ## 二、项目的主要特性和功能 1. WiFi连接项目能够自动连接到指定的WiFi网络。 2. 电压检测通过ADC(模数转换器)检测电池电压,并在电压低于阈值时发出警告。 3. LED灯控制通过控制LED灯的亮灭来提示用户不同的状态信息(如连接成功、电压低等)。 4. 服务器通信项目可以向指定的服务器发送POST请求并处理返回的HTTP响应。 ## 三、安装使用步骤 1. 环境准备确保已安装Arduino IDE和ESP8266插件。 2. 下载源码下载项目的源码文件并解压。 3. 打开项目在Arduino IDE中打开解压后的main.cpp文件。

    scipy-0.10.1-cp26-cp26mu-manylinux1_x86_64.whl

    该资源为scipy-0.10.1-cp26-cp26mu-manylinux1_x86_64.whl,欢迎下载使用哦!

    计算机毕业设计;计算机毕设;Java毕业设计;小程序毕业设计

    计算机毕业设计;计算机毕设;Java毕业设计;小程序毕业设计;企业、旅游、党建、学校、人事、酒店、民宿、预约、考试、外卖、点餐、外贸、宠物、图书、销售、商城、就业、助农、仓储、交易、美食、博客、婚庆、二手、养老、医院、医疗、药品、招聘、考勤、宿舍、物流、租赁、公益等

Global site tag (gtag.js) - Google Analytics