喫茶XRAYトップページ

[スレッド全体
]

[8526] ダウンロードしてね返信 削除
2015/3/4 (水) 20:17:03 Mr.XRAY
まっ,あれですね.オレオレ詐欺まがいですね.

エラーを見せつけ不安を煽って購入誘導する要注意な迷惑ソフト 【詐欺評判?】
http://www.geocities.co.jp/Playtown-Yoyo/6130/notes/fraud-software.htm

マルウェアのインストールを防ぐには?
https://support.mozilla.org/ja/kb/troubleshoot-firefox-issues-caused-malware#w_czceadadacagacchaicnckceacohaaaeagka

以前,出先で,パソコンにマルウェアを入れてしまった方の対応のため,
この喫茶XRAY で教えていただき,対処しことがあります.
その後,自分でも経験しておいた方がいいと思い,インストールしてみました.
確かに,アンインストールしても,ゾンビのように,出てきます.
ソフトの名前を頼りに,フォルダとレジストリを削除して消しました.

エンドユーザは,ついうっかりクリックしてしまうことは,あると思います.
特に,表示が英語だと更に.
たとえ日本語でも,専門用語が羅列してあると,意味が理解できなでしょう.
私もよく理解できませんでした.


[8528] Re:ダウンロードしてね返信 削除
2015/3/4 (水) 20:41:05 SO
▼ Mr.XRAYさん
> まっ,あれですね.オレオレ詐欺まがいですね.

うちの職場にもよく入ってます(笑)
抱き合わせで入ったりすることがありますね。

[8536] Re2:ダウンロードしてね返信 削除
2015/3/4 (水) 22:52:01 たてぐや
▼ SOさん
▼ Mr.XRAYさん

> まっ,あれですね.オレオレ詐欺まがいですね.

> 抱き合わせで入ったりすることがありますね。

 昔ファミコンが品薄だった時に、面白くもなんともないソフトと抱合せ販売
されたことがありましたね。
 抱き合わせで入ってしまって困ったのがちょっと前ならBaidu IME。インスト
ールだけでは気が済まず、通常使うIMEになってしまったっけ。新聞紙上なんか
でもだいぶ問題視されて、最近はなくなってきましたけどね。あとAdobeのソフ
トをインストールすると一緒に入ってくるSymantechも鬱陶しです。


[8538] Re3:ダウンロードしてね返信 削除
2015/3/5 (木) 08:10:26 SO
▼ たてぐやさん

> でもだいぶ問題視されて、最近はなくなってきましたけどね。あとAdobeのソフ
> トをインストールすると一緒に入ってくるSymantechも鬱陶しです。


McAfeeも入ったりしますね。
既存も含め、アンチフィルスソフトが2つ存在するのも気持ち悪いし、
よく干渉起こさないですね。(もしかしたら、干渉起こしてるかも)

[8539] Re4:ダウンロードしてね返信 削除
2015/3/5 (木) 11:00:34 たてぐや
▼ SOさん

> 既存も含め、アンチフィルスソフトが2つ存在するのも気持ち悪いし、
> よく干渉起こさないですね。(もしかしたら、干渉起こしてるかも)


 前の職場で3つ入れている人がいました。彼いわく「何があってもどれか
に引っかかるから安心」だそうですが、いずれもパターンファイルの期限が
とうの昔に過ぎているという…。
 私は7ではPanda Cloudというのを、10ではこれが互換性の問題で使えなかっ
たのでAviraを使っています。


[8541] Re5:ダウンロードしてね返信 削除
2015/3/5 (木) 15:40:03 Mr.XRAY
> に引っかかるから安心」だそうですが、いずれもパターンファイルの期限が
> とうの昔に過ぎているという…。


ハハハッ.そういうことはよくあることです.

SO さん wrote
>McAfeeも入ったりしますね。

最近の Adobe Reader そうですね.最初ビックリしました.
ともかく,マルウェアもそうですが,表示というか,内容がエンドユーザ
だけでなく,私も(エンドユーザ?) には難しいです.
インターネットオプションの設定だって,ハッキリ言ってわかりせん.

だからね.
[フォーム右上の閉じるボタンのヒント表示を変更するには]
http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201502/15020017.txt

こういうことをしちゃダメです!!
これは「閉じる」ボタンなんです,「キャンセル」ではありません.
人心を惑わすようなことを,プログラマーがしちゃダメよ.
そうでなくても,パソコンは難解なんだから.


[8546] Re6:ダウンロードしてね返信 削除
2015/3/6 (金) 08:21:06 おかぽん
▼ Mr.XRAYさん
> だからね.
> [フォーム右上の閉じるボタンのヒント表示を変更するには]
> http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201502/15020017.txt
>
> こういうことをしちゃダメです!!
> これは「閉じる」ボタンなんです,「キャンセル」ではありません.
> 人心を惑わすようなことを,プログラマーがしちゃダメよ.
> そうでなくても,パソコンは難解なんだから.

これができたら、
「まさか・・・
 閉じようとしているの?」
とか、出したりしようかなと思っていました・・・(^^;)

[8547] Re7:ダウンロードしてね返信 削除
2015/3/6 (金) 14:23:27 Mr.XRAY
> 「まさか・・・
>  閉じようとしているの?」


正確にはヒントなのかツールチップなのかは分かりませんが.
このウィンドウそのものが表示した時は検出できる可能性はあります.

  (1) ヒントウィンドウが表示された
  (2) その対象のフォームがアクティブである
  (3) マウスカーソルが非クライアント領域にある
      (ボタン等に[閉じる]のヒントを設定している場合の対策)

ツールチップも,ヒントウィンドウもシステムに 1 つか表示しないので
識別できます.もちろん,グローバルフックです.
ウィンドウハンドルが取得できるということは,そのウィンドウに対しての
操作の可能性があるということになります.
と思います.

[X]ボタンで表示されるこのヒント(ツールチップ)のウィンドウのクラス名は
#32774 です.
下の図は,実際にフォームをキャプチャし,更に[閉じる]ボタンの上に表示
しているヒントウィンドウだけをキャプチャして,重ね描画しています.


[8551] システムボタンのヒント表示をフック返信 削除
2015/3/9 (月) 05:53:48 Mr.XRAY
>  (1) ヒントウィンドウが表示された
>  (2) その対象のフォームがアクティブである
>  (3) マウスカーソルが非クライアント領域にある
>     (ボタン等に[閉じる]のヒントを設定している場合の対策)


(1) の部分だけテストしてみました.
(2) 以下の処理がないので,別のウィンドウでも検出してしまいます.

http://mrxray.on.coocan.jp/Delphi/zip/CloseButton_HintHook.zip
( 463 KB EXE のみ )

[注]
検出結果を TMemo に表示していますが,表示している文字は,ヒントの
テキストではなく,閉じるボタン等のオブジェクトの名前です.


[8554] 閉じるボタンのツールチップの表示をフック返信 削除
2015/3/9 (月) 19:37:14 Mr.XRAY
とりあえず,テストで使用したコードです.
動作確認は Windows 7 U64(SP1) + Delphi XE(UP1) Pro です.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private 宣言 }
    hEventHook : THandle;
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

uses OleAcc;

{$R *.dfm}

// Delphi XEにはないので定義
function AccessibleObjectFromEvent(hWnd : HWND; dwObjewctID : DWORD;
  dwChildID : DWORD; out pacc : IAccessible; out pvarChild   : OleVariant):
  HResult;  stdcall; external 'OLEACC.DLL';
function AccessibleObjectFromPoint(ptScreen: TPOINT; out ppAcc: IAccessible;
  out pvarChild: OleVariant): HRESULT ; stdcall; external 'OLEACC.DLL';


//-----------------------------------------------------------------------------
//  ウィンドウのクラス名を取得する関数
//-----------------------------------------------------------------------------
function GetClassNameStr(hWindow: HWND): String;
var
  Buffer : array[0..MAX_PATH-1] of Char;
  Len    : Integer;
begin
  System.FillChar(Buffer, SizeOf(Buffer), #0);
  Len := Windows.GetClassName(hWindow, Buffer, Length(Buffer));
  if Len > 0 then Result := Buffer else Result := '';
end;

//-----------------------------------------------------------------------------
//  フック関数SetWinEventHookのコールバック関数
//-----------------------------------------------------------------------------
procedure WinEventProc(hWinEventHook: THandle; event: DWORD; hwnd: HWND;
  idObject, idChild: Longint; idEventThread, dwmsEventTime: DWORD); stdcall;
var
  LMousePos : TPoint;
  LpAcc     : IAccessible;
  LText     : WideString;
  Lacc      : IAccessible;
  LvarChild : OleVariant;
begin
  //イベントの引数からAcc(IAccessible)とvarChild(OleVariant)を取得
  //#32774はシステムのツールチップのクラス名
  if AccessibleObjectFromEvent(hwnd, idObject, idChild, Lacc, LvarChild) = S_OK then begin
    if GetClassNameStr(hwnd) = '#32774' then begin
      if event = EVENT_OBJECT_SHOW then begin

        //マウスカーソル位置を取得
        GetCursorPos(LMousePos);

        //マウスカーソル位置のIAccessibleオブジェクトを取得
        //AccessibleObjectFromPoint関数の戻り値のvarChildのvtは,常にVT_I4となっている
        if AccessibleObjectFromPoint(LMousePos, LpAcc, LvarChild) = S_OK then begin
          //Nameプロパティの値を取得
          if LpAcc.Get_accName(LvarChild, LText) = S_OK then begin
            Form1.Memo1.Lines.Add(LText);
          end else begin
            Form1.Memo1.Lines.Add('不明');
          end;
        end;
      end;
    end;
  end;
end;

//=============================================================================
//  [Start HOOK] フック開始
//  hEventHook  : フックのハンドル
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
  if hEventHook = 0 then begin
    hEventHook := SetWinEventHook(
                             EVENT_MIN,
                             EVENT_MAX,
                             0,
                             WinEventProc,
                             0,
                             0,
                             WINEVENT_OUTOFCONTEXT);
    if hEventHook = 0 then begin
      Memo1.Lines.Add('フック関数の登録失敗');
    end else begin
      Memo1.Lines.Add('フック開始');
    end;
  end;
end;

//=============================================================================
//  [Stop HOOK] フックの終了
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
begin
  if hEventHook <> 0 then begin
    UnhookWinEvent(hEventHook);
    hEventHook := 0;
    Memo1.Lines.Add('フック終了');
  end;
end;

//=============================================================================
//  フォームの作成時 変数の初期化
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
  hEventHook := 0;
end;

//=============================================================================
//  フォームを閉じる時は,フックを終了させる
//=============================================================================
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if hEventHook <> 0 then UnhookWinEvent(hEventHook);
end;

end.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82