全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2238
推到 Plurk!
推到 Facebook!

程式本身有辦法「自殺」嗎?

 
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-10 11:19:46 IP:61.231.xxx.xxx 未訂閱
最近在寫一個保護的程式,保護的方法不外乎是序號檢查、CheckSum 等等,而我在想,一個正在執行中的程式,可以「自殺」嗎? 例如,發現程式已遭修改時,可以自行刪除自己嗎? 如果不能刪除,那可以破壞嗎? 一般在執行中的程式,由外部的程式要刪除時就會有 Exception... 不過,病毒不是可以感染執行檔嗎?病毒都只有在程式載入前就感染嗎?
------
http://www.ViewMove.com
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-06-10 11:47:25 IP:211.21.xxx.xxx 未訂閱
引言: 最近在寫一個保護的程式,保護的方法不外乎是序號檢查、CheckSum 等等,而我在想,一個正在執行中的程式,可以「自殺」嗎? 例如,發現程式已遭修改時,可以自行刪除自己嗎? 如果不能刪除,那可以破壞嗎? 一般在執行中的程式,由外部的程式要刪除時就會有 Exception... 不過,病毒不是可以感染執行檔嗎?病毒都只有在程式載入前就感染嗎?
正在執行中的程式,可以「自殺」嗎? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 小弟不才我認為...應該是不行地...
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-10 12:17:46 IP:192.168.xxx.xxx 未訂閱
引言: 最近在寫一個保護的程式,保護的方法不外乎是序號檢查、CheckSum 等等,而我在想,一個正在執行中的程式,可以「自殺」嗎? 例如,發現程式已遭修改時,可以自行刪除自己嗎? 如果不能刪除,那可以破壞嗎? 一般在執行中的程式,由外部的程式要刪除時就會有 Exception... 不過,病毒不是可以感染執行檔嗎?病毒都只有在程式載入前就感染嗎?
兩個另外的方法: 1.殺資料 2.設一個Registry Code,程式執行時檢查此Code,若錯誤就不執行! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
Jungle
一般會員


發表:5
回覆:18
積分:9
註冊:2002-03-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-06-10 13:27:23 IP:202.39.xxx.xxx 未訂閱
以一是我的想法, 尚未測試過, 希望能幫助您 1.首先先在系統裡定義系統的類別名稱(ClassName), 強迫關閉訊息及強迫關閉程式 const CM_APCLOSE = WM_USER + $1000; {自定義的“強迫關閉”消息}     //設定ClassName procedure TFMAIN.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.WinClassName := 'ApName'; end;     //強迫關閉 Procedure APClose(var message: TMessage); message CM_APCLOSE;     procedure TFMAIN.APClose(var message: TMessage); begin Close; end;    2.另外寫一支自殺程式, 由系統來呼叫, 並傳入系統之類別名稱及系統相關訊息(如:執行檔名稱, 所在路徑)    3.自殺程式, 先取得系統的Handle, 再傳自定的"強迫關閉"訊息給它 RvHandle := FindWindow(APClassName, NIL); if RvHandle > 0 then begin   PostMessage(RvHandle, CM_APCLOSE, 0, 0); end;    4.依系統傳進來的執行檔名及路徑來殺檔 //只刪除系統執行檔 DeleteFile(路徑+執行檔);      //刪除所有檔案 FileAttrs := faAnyfile - faDirectory; HasFiles := FindFirst(路徑+ '\*.*', FileAttrs, sr) = 0; while HasFiles do begin if not DeleteFile(路徑+ '\' + sr.Name) then begin Exit; end; HasFiles := FindNext(sr) = 0; end; //刪除目錄 RemoveDir(路徑);    
引言: 最近在寫一個保護的程式,保護的方法不外乎是序號檢查、CheckSum 等等,而我在想,一個正在執行中的程式,可以「自殺」嗎? 例如,發現程式已遭修改時,可以自行刪除自己嗎? 如果不能刪除,那可以破壞嗎? 一般在執行中的程式,由外部的程式要刪除時就會有 Exception... 不過,病毒不是可以感染執行檔嗎?病毒都只有在程式載入前就感染嗎?
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-06-11 09:45:55 IP:61.231.xxx.xxx 未訂閱
引言: 以一是我的想法, 尚未測試過, 希望能幫助您 1.首先先在系統裡定義系統的類別名稱(ClassName), 強迫關閉訊息及強迫關閉程式 2.另外寫一支自殺程式, 由系統來呼叫, 並傳入系統之類別名稱及系統相關訊息(如:執行檔名稱, 所在路徑) 3.自殺程式, 先取得系統的Handle, 再傳自定的"強迫關閉"訊息給它 4.依系統傳進來的執行檔名及路徑來殺檔
謝謝,我會試試看的, 目前我的想法可能是整合 Jungle 及站長的方法: 1. 另寫一個清除程式 2. 判斷出狀態將自殺訊息加到 registry 後,程式結束 3. 再重開機時由清除程式清除 在此有一個小問題,不知道有沒有人寫過類似像我們在更新 DirectX 或是一些 driver 時,必需重新開機,而且重新開機進入 windows 前,由 DOS 的訊息可以看到 「系統正在更新XXXX.....」 「更新完畢」 等字樣,我想這些更新應該也是由一個程式來完成的,只是不知道它是在那執行的呢?是在 reg 或是 win/system.ini ? 有人有經驗嗎?
------
http://www.ViewMove.com
whyzn
中階會員


發表:46
回覆:149
積分:54
註冊:2002-06-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-06-16 21:19:47 IP:61.223.xxx.xxx 未訂閱
把你要執行的清除程式 寫入如下之 Key 中 系統在下次開機時,會去執行她一次,並且會自動把該 Key 清除 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
------
●○○○○○●○○○○○●
竹密不妨水過,山高無礙雲飛
系統時間:2024-03-28 20:34:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!