自プロセスが終了されることを検出したい
忠敬君 2013/6/8(Sat) 01:03:23|NO.54666
自プロセスが終了しようとすることを検出してメッセージボックスを出したり
外部プロセスが自プロセスを終了しようとしてることって検出できますか??
よければサンプルソースなどを書いていただけると嬉しいです
_hamyuu 2013/6/8(Sat) 13:44:49|NO.54687
onexit命令で終了するときに指定したラベルに飛べますよ。
onexit goto *test
stop
*test
dialog"終了します!"
end
忠敬君 2013/6/8(Sat) 15:31:09|NO.54689
ふむふむ。
他プロセスからの終了は検出できないかなあ。。
test 2013/6/8(Sat) 16:36:32|NO.54692
試してみなかったのですか?
onexitで他プロセスからの終了も検出できます。
もしできなかったなら、どういう場合にできなかったのかを詳しく書けば回答がもらえるかもしれません。
cats 2013/6/8(Sat) 16:51:02|NO.54696
>忠敬君さん
プロセスの保護は改造されると危険なプログラムになるので
公にサンプルは晒せないでしょう。
岡田 2013/6/9(Sun) 23:16:51|NO.54771
自プロセス終了の検出する目的はなんですか?
場合によってはお答えできません。
名無し 2013/6/15(Sat) 18:10:38|NO.54918
起動してるプロセスのリストを取得してうまくやればできるのではないでしょうか?お互いにお互いが起動してるか監視しつd・・・おっと、誰か来たようだ
忠敬君 2013/6/15(Sat) 18:43:03|NO.54920
名無しさん
できるものなんですかねーー。。。
名無し 2013/6/15(Sat) 19:26:42|NO.54922
できますよ。ただ、ソースを書くことはできません。
忠敬君 2013/6/15(Sat) 19:37:27|NO.54923
ほう。。
>catsさんが
>忠敬君さん
プロセスの保護は改造されると危険なプログラムになるので
公にサンプルは晒せないでしょう。
って記載されたんですが
exitを検出で何か悪用できることとかあるんでしょうか?w
名無し 2013/6/15(Sat) 20:05:01|NO.54925
>忠敬君さん
もろ悪用できます。少し考えてみては?
ht. 2013/6/15(Sat) 22:19:09|NO.54927
憶測ですがタスクマネージャとかTerminateProcessによるプロセスの強制終了だと
検知しようがしまいが対象のプロセス空間からはいかなる阻害も不可能だと思います。
そうでないと強制でもなんでもなくただの任意終了になってしまうので。
というわけで意図されない終了を検知するならプログラムを多重に起動して互いを監視しつつ
片方が終了されても作業データを復旧できるように共有メモリなどに保存するとか、そういう工夫が必要になると思います。
ミューテックスオブジェクトを使った多重起動防止とか、共有メモリならHSPでも頻繁に公開されている情報なので隠すほどのことでもありません。
もっとスマートな方法があったら私も知りたいですね。
shiva 2013/6/16(Sun) 01:24:20|NO.54930
ユーザー視点で考えると、「終了できないプロセス」というのは
非常に気味の悪い存在ではないでしょうか。
ある日ダウンロードしたソフトが何度「×」をクリックしても無視して居座るとか、
タスクマネージャーにまったく反応しなかったら、それを好んで使う人は
そう多くないと思います。
改めてお聞きしますが、どうして「外部からの自プロセス終了」を検知したいのでしょうか?
目的によっては、他の手段があるかもしれません。
忠敬君 2013/6/16(Sun) 01:55:14|NO.54933
shivaさん
>>改めてお聞きしますが、どうして「外部からの自プロセス終了」を検知したいのでしょうか?
自プロセスを終了させたプロセスが悪意のあるプロセスか悪意のないプロセスを判断したいからです。
悪意のあるプロセスから終了を検出しようとしたら逆にそのプロセスを終了したいと考えておりまして、
悪意のない、タスクマネージャー等からの終了はきちんと応答したいと思ってます。
悪意のあるプロセス 2013/6/16(Sun) 03:00:36|NO.54934
と思ってます。
ht. 2013/6/16(Sun) 06:44:07|NO.54938
正直終了元のプロセスが悪意を持っているかどうかなど判断のしようがないので諦めた方がいいと思います。
予め悪意の持ったプロセスとやらが判明していればDLLインジェクションとAPIフックで他プロセスに寄生して検知+無効化できるかも…
インターセプト用のDLLを作成する必要があるのでCが書けないと無理ですが。
shiva 2013/6/16(Sun) 15:00:17|NO.54946
まず覚えておいていただきたいことは、プロセス終了はユーザーが持つ当然の権利である、ということです。
参考(英語):"Why can't you trap TerminateProcess? - The Old New Thing"
http://blogs.msdn.com/b/oldnewthing/archive/2004/07/22/191123.aspx
この「当然の権利」を無視してでも終了を阻止するつもりなら、いずれ相応の報いを受けることを
覚悟しておく必要があるでしょう。
さて、先のコメントにはタスクマネージャー等からの要求なら受け入れるとありますから、
強制終了されること自体は別に困らないように思えます。
にも関わらずこのスレッドを建てたという事は、終了されたくない別の理由があるはずです。
タスクマネージャー等は構わないのに、それ以外からだと困る、その理由は何ですか?
忠敬君 2013/6/16(Sun) 15:38:13|NO.54947
ht.さん
なるほどですね。
ほかのプロセスを監視しないといけなくなるのですねー。。
shivaさん
>>プロセス終了はユーザーが持つ当然の権利である
自プロセスはちゃんと終了させることはできるようにします。
(×でプロセス終了)
>>さて、先のコメントにはタスクマネージャー等からの要求なら受け入れるとありますから、
強制終了されること自体は別に困らないように思えます。
にも関わらずこのスレッドを建てたという事は、終了されたくない別の理由があるはずです。
タスクマネージャー等は構わないのに、それ以外からだと困る、その理由は何ですか?
強制終了されて困ることの理由の一つは
自プロセスが悪意のあるプロセスに逆アセンブルされることです。
つまり自プロセスが他のプロセスに逆アセンブルされて中身を改竄されることを防ぎたいわけです。
なのでタスクマネージャーからの終了にはちゃんと応答するということであります。
悪意のあるプロセスを検出すると、ある一定の時間だけ自プロセスを操作しないようにして、
一定の時間を過ぎるとちゃんと動くようにします。その一定の時間だけ、悪意のあるプロセス
からの終了を防ぎたいわけです。
こうすることによって、悪いユーザーが自プロセスの中身を見る気を失せさせるというのが
目的です。
ht. 2013/6/16(Sun) 15:48:31|NO.54948
ん?強制終了と逆アセンブルされることの関連性が見えてこないのですがどういうことですか?
前にも言いましたがHSPでそんな強固な改竄防止をすることは原理的に不可能です。
忠敬君 2013/6/16(Sun) 16:15:39|NO.54949
ht.さん
まず、指定プロセスを一定間隔で列挙するようにしておき、
指定プロセスが見つかると自分で自分を閉じれません。(何かしらの警告ダイアログを出す)
その指定プロセスを閉じるまで操作不可能にするだけのことです。
KA 2013/6/16(Sun) 16:22:54|NO.54950
良く分からないが、他プロセスが「正常な終了処理」を行えば意味が無い。
極端な例で言うと、リモートでマウスを操作されたら分からない。
それから、話だけで具体的なスクリプトが出てこないのは初心者だから?
ht. 2013/6/16(Sun) 17:05:24|NO.54951
>まず、指定プロセスを一定間隔で列挙するようにしておき、
>指定プロセスが見つかると自分で自分を閉じれません。(何かしらの警告ダイアログを出す)
>その指定プロセスを閉じるまで操作不可能にするだけのことです。
その回答は私がした質問(以下の強制終了と逆アセンブルの関連性)の回答になっていないと思うのですが。
>強制終了されて困ることの理由の一つは
>自プロセスが悪意のあるプロセスに逆アセンブルされることです。
いまいち要領を得ないので一から質問し直したいです。
1, 何を作っているのか
2, 悪意のあるプロセスとは何か
3, それをどのように判断するのか(ソフトウェアのタイトルが割れている等)
4, 自分を操作不可能にする利点はあるのか(何を警告するのか)
5, onexitでは解決できないのか
6,強制終了されると逆アセンブルが可能になるという理屈はどういう意味なのか
忠敬君 2013/6/16(Sun) 17:06:56|NO.54952
>>KAさん
良く分からないが、他プロセスが「正常な終了処理」を行えば意味が無い。
極端な例で言うと、リモートでマウスを操作されたら分からない。
それから、話だけで具体的なスクリプトが出てこないのは初心者だから?
なるほど。。
まあ確かに初心者です;;
ZAP 2013/6/16(Sun) 17:07:26|NO.54953
逆アセンブルしたり改ざんしたりしたくなるような、それこそネット上に類を見ない
先進性のあるプログラムなら、セキュリティも考えて他の言語で書くべきではないでしょうか。
それに解析だけなら、そのソフト自体を起動していなくても出来ると思いますので
起動中のプロセスを監視するだけでは、目的は達成できないのではないでしょうか。
忠敬君 2013/6/16(Sun) 17:32:24|NO.54954
>>ZAPさん
それに解析だけなら、そのソフト自体を起動していなくても出来ると思いますので
起動中のプロセスを監視するだけでは、目的は達成できないのではないでしょうか。
バイナリデーターだけを読み込まれるのは確かに無理ですよね。。
KA 2013/6/16(Sun) 17:40:13|NO.54955
>>バイナリデーターだけを読み込まれるのは確かに無理ですよね。。
根本的に、基本的な何かを知らないのか、知った上での発言なのか不明。