打开服务句柄检测SOFTICE是否存在的代码

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;       本程序由FASM 1.54编译
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
format PE GUI 4.0
include '%fasminc%/win32a.inc'

       
invoke  OpenSCManager , NULL , szService , 80000000h
       
test     eax , eax
       
jz       exit
        mov      [ handle ], eax
       
invoke  OpenService , eax , szNtice, 10h
       
test     eax , eax
       
jz       exit
        invoke  MessageBox ,0 , szFound, szNtice , MB_OK
exit
:
       
invoke  CloseServiceHandle , dword [ handle]
       
invoke  ExitProcess ,0

handle         
dd       0
szService      
db       'ServicesActive' , 0
szNtice        
db       'NTice' , 0
szFound        
db       '检测到SOFTICE' , 0

data import

       library kernel32
, 'KERNEL32.DLL',/
               advapi32
,'ADVAPI32.DLL' ,/
               user32
,'user32.dll'
       import  kernel32
,/
               ExitProcess
,'ExitProcess'
       import  user32
,/
               MessageBox
,'MessageBoxA'
       import  advapi32
,/
               OpenSCManager
,'OpenSCManagerA' ,/
               OpenService
,'OpenServiceA' ,/
               CloseServiceHandle
, 'CloseServiceHandle'
end data

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows中,打开串口时,CreateFile函数会返回一个指向串口的句柄。可以通过判断句柄是否有效来检查串口是否正确打开。以下是一个简单的C++示例代码: ```c++ #include <Windows.h> HANDLE hSerial = INVALID_HANDLE_VALUE; // 串口句柄 // 打开串口 bool openSerialPort(const char* portName, DWORD baudRate) { hSerial = CreateFile(portName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hSerial == INVALID_HANDLE_VALUE) { return false; // 打开串口失败 } DCB dcbSerialParams = { 0 }; dcbSerialParams.DCBlength = sizeof(dcbSerialParams); if (!GetCommState(hSerial, &dcbSerialParams)) { CloseHandle(hSerial); hSerial = INVALID_HANDLE_VALUE; return false; // 获取串口状态失败 } dcbSerialParams.BaudRate = baudRate; dcbSerialParams.ByteSize = 8; dcbSerialParams.StopBits = ONESTOPBIT; dcbSerialParams.Parity = NOPARITY; if (!SetCommState(hSerial, &dcbSerialParams)) { CloseHandle(hSerial); hSerial = INVALID_HANDLE_VALUE; return false; // 设置串口状态失败 } return true; // 打开串口成功 } // 关闭串口 void closeSerialPort() { if (hSerial != INVALID_HANDLE_VALUE) { CloseHandle(hSerial); hSerial = INVALID_HANDLE_VALUE; } } // 在主函数中进行调用 int main() { const char* portName = "COM1"; // 串口名称 DWORD baudRate = 9600; // 波特率 if (openSerialPort(portName, baudRate)) { // 串口成功打开,进行数据读写操作 // ... closeSerialPort(); // 关闭串口 } else { // 串口打开失败,处理错误 // ... } return 0; } ``` 在上述代码中,openSerialPort函数用于打开串口并进行初始化,closeSerialPort函数用于关闭串口。其中,打开串口操作完成后,会返回一个布尔值表示操作是否成功。如果成功打开串口,就可以进行数据读写操作;否则,需要处理错误情况。在closeSerialPort函数中,会检查串口句柄是否有效,并进行相应的释放操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值