在對Windows Service服務做一次C++封裝,使用Thunk的方式。
用VirtualAllocEx分配PAGE_EXECUTE_READWRITE屬性的空間,在其中存放兩部分ASM代碼,
一份是注冊給StartServiceCtrlDispatcher的代碼,一份是注冊給RegisterServiceCtrlHandler的代碼。
服務啟動后,注冊給StartServiceCtrlDispatcher的ASM能正常的被執行到,并跳轉的我希望的函式中;
但注冊給RegisterServiceCtrlHandler的AMS沒有被執行到,而且執行“sc stop”服務無法正常被關閉。
debug資訊里有看到:
(sechost.dll) (Service.exe 中)處的第一機會例外: 0xC0000005: 讀取位置 0x0000000000000038 時發生訪問沖突。
做了一個嘗試,把我用C寫的,可以正確執行的,注冊給RegisterServiceCtrlHandler的函式,直接復制到VirtualAllocEx分配的空間中去,也是會出現上面的問題。
請問,這里有什么限制嗎?還是需要注意什么?大家給我一點意見,謝謝~
uj5u.com熱心網友回復:
搜“Session0穿透”轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/42187.html
標籤:硬件/系統
