第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我可以向Windows上的應(yīng)用程序發(fā)送ctrl-C(SIGINT)嗎?

我可以向Windows上的應(yīng)用程序發(fā)送ctrl-C(SIGINT)嗎?

我可以向Windows上的應(yīng)用程序發(fā)送ctrl-C(SIGINT)嗎?我(在過(guò)去)編寫了跨平臺(tái)(windows/unix)應(yīng)用程序,當(dāng)從命令行啟動(dòng)時(shí),這些應(yīng)用程序處理用戶類型的應(yīng)用程序??颂?C以同樣的方式組合(即干凈地終止應(yīng)用程序)。是否可以在Windows上發(fā)送克特-C/SIGINT/等效于來(lái)自另一個(gè)(不相關(guān))進(jìn)程的進(jìn)程,請(qǐng)求它干凈地終止(給它一個(gè)清理資源的機(jī)會(huì)等等)?
查看完整描述

3 回答

?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

我最近找到的解決方案是SendSignal第三方應(yīng)用。作者列出了源代碼和可執(zhí)行文件。我已經(jīng)驗(yàn)證了它在64位窗口下工作(作為32位程序運(yùn)行,殺死另一個(gè)32位程序),但我還沒有弄清楚如何將代碼嵌入到windows程序(32位或64位)中。

它是如何運(yùn)作的:

在深入了解調(diào)試器之后,我發(fā)現(xiàn)實(shí)際執(zhí)行與ctrl中斷等信號(hào)相關(guān)的行為的入口點(diǎn)是核32!ctrlRoutine。該函數(shù)與ThreadProc具有相同的原型,因此可以直接與CreateRemoteThread一起使用,而無(wú)需注入代碼。然而,這不是一個(gè)出口的符號(hào)!它位于不同版本的Windows上不同的地址(甚至有不同的名稱)。該怎么辦?

這是我最后想出的解決辦法。我為我的應(yīng)用程序安裝了一個(gè)控制臺(tái)ctrl處理程序,然后為我的應(yīng)用程序生成一個(gè)ctrl中斷信號(hào)。當(dāng)調(diào)用我的處理程序時(shí),我會(huì)回顧堆棧的頂部,找出傳遞給內(nèi)核32!BaseThreadStart的參數(shù)。我獲取第一個(gè)Param,它是所需的線程開始地址,它是內(nèi)核32!CtrlRoutine的地址。然后我從我的處理程序返回,表明我已經(jīng)處理了信號(hào),我的應(yīng)用程序不應(yīng)該被終止?;氐街骶€程中,我將等待內(nèi)核32!CtrlRoutine的地址被檢索。一旦我得到了它,我就在目標(biāo)進(jìn)程中創(chuàng)建一個(gè)遠(yuǎn)程線程,并使用已發(fā)現(xiàn)的開始地址。這將導(dǎo)致對(duì)目標(biāo)進(jìn)程中的ctrl處理程序進(jìn)行評(píng)估,就好像ctrl中斷已被按下一樣!

好的是,只有目標(biāo)進(jìn)程受到影響,任何進(jìn)程(即使是加窗口的進(jìn)程)都可以成為目標(biāo)。一個(gè)缺點(diǎn)是我的小應(yīng)用程序不能在批處理文件中使用,因?yàn)樗鼤?huì)在發(fā)送ctrl中斷事件時(shí)殺死它,以便發(fā)現(xiàn)kernel 32!ctrlRoutine的地址。

(在此之前)start如果在批處理文件中運(yùn)行它。)


查看完整回答
反對(duì) 回復(fù) 2019-07-10
?
www說(shuō)

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

我想我在這個(gè)問(wèn)題上有點(diǎn)晚了,但無(wú)論如何,我會(huì)寫一些東西給任何有同樣問(wèn)題的人。這和我給出的答案是一樣的這,這個(gè)問(wèn)題。

我的問(wèn)題是,我希望我的應(yīng)用程序是一個(gè)GUI應(yīng)用程序,但是執(zhí)行的進(jìn)程應(yīng)該在沒有任何交互控制臺(tái)窗口的背景下運(yùn)行。我認(rèn)為當(dāng)父進(jìn)程是控制臺(tái)進(jìn)程時(shí),這個(gè)解決方案也應(yīng)該有效。但是,您可能必須移除“create_no_Window”標(biāo)志。

我設(shè)法用GenerateConsoleCtrlEvent()使用包裝程序。棘手之處在于,文檔對(duì)于如何使用它以及其中的缺陷并不十分清楚。

我的解決方案是基于所描述的這里..但這并沒有真正解釋所有的細(xì)節(jié)和錯(cuò)誤,所以下面是如何讓它工作的細(xì)節(jié)。

創(chuàng)建一個(gè)新的助手應(yīng)用程序“Helper.exe”。此應(yīng)用程序?qū)⑽挥趹?yīng)用程序(父進(jìn)程)和您希望關(guān)閉的子進(jìn)程之間。它還將創(chuàng)建實(shí)際的子進(jìn)程。必須有這個(gè)“中間人”進(jìn)程,否則GenerateConsoleCtrlEvent()將失敗。

使用某種IPC機(jī)制從父進(jìn)程到助手進(jìn)程進(jìn)行通信,幫助進(jìn)程應(yīng)該關(guān)閉子進(jìn)程。當(dāng)幫助程序獲得此事件時(shí),它調(diào)用“GenerateConsoleCtrlEvent(CTRL_Break,0)”,該事件關(guān)閉自身和子進(jìn)程。為此,我自己使用了一個(gè)事件對(duì)象,當(dāng)父進(jìn)程想要取消子進(jìn)程時(shí),它將完成該事件對(duì)象。

若要?jiǎng)?chuàng)建Helper.exe,請(qǐng)使用create_no_Window和create_new_process_group創(chuàng)建它。當(dāng)創(chuàng)建子進(jìn)程時(shí),創(chuàng)建它時(shí)沒有標(biāo)志(0),這意味著它將從其父進(jìn)程派生控制臺(tái)。如果不這樣做,將導(dǎo)致它忽略事件。

非常重要的是,每一步都是這樣做的。我一直在嘗試各種不同的組合,但這種組合是唯一起作用的組合。您不能發(fā)送CTRL_C事件。它將返回成功,但將被忽略的過(guò)程。Ctrl_Break是唯一起作用的。這并不重要,因?yàn)樗鼈冏罱K都將調(diào)用ExitProcess()。

您也不能使用子進(jìn)程id的進(jìn)程組id調(diào)用GenerateConsoleCtrlEvent(),從而允許助手進(jìn)程繼續(xù)運(yùn)行。這也會(huì)失敗。

我花了一整天的時(shí)間想讓這件事奏效。這個(gè)解決方案對(duì)我有效,但如果任何人有任何補(bǔ)充,請(qǐng)做。我在網(wǎng)上到處搜索,發(fā)現(xiàn)很多人都有類似的問(wèn)題,但對(duì)這個(gè)問(wèn)題沒有明確的解決辦法。GenerateConsoleCtrlEvent()的工作方式也有點(diǎn)奇怪,所以如果有人知道更多關(guān)于它的細(xì)節(jié),請(qǐng)分享。


查看完整回答
反對(duì) 回復(fù) 2019-07-10
  • 3 回答
  • 0 關(guān)注
  • 2325 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)