Hatena::ブログ(Diary)

やぎさんはわらばんしをたべる

2013-08-30

はてな市民

既に、はてなブログの方に移動したんだけどさ、こちらを更新しないと「はてな市民」権が失効してしまう仕様をどうにかしてほしいな。

2012-09-16

jQueryがむずい

こんなことできるのか。

<div id="BOX5"></div>
<script>
  $('<p>hello</p>').after('<p>after</p>').appendTo('#BOX5');
</script>

まだ宙ぶらりんのp要素の後に、別のp要素を追加とか。

何ができて、何ができないのか見通しがきかん。けっこう癖あるなこのライブラリは。

2012-06-15

月間アップロード容量に達しました

前から気になっていたのだが、Evernoteの使用量をクリックすると「月間アップロード容量に達しました」とか言ってくるのだよ。

f:id:nextugi:20120616004223p:image

まだ全然残りがあるし、どうせ誤訳だろうと思って放置していたのだが、バージョンアップを重ねても一向に直る気配がないので調べてみた。

f:id:nextugi:20120616004251p:image

http://pootle.evernote.com/ja/winx_evernote/enclient/Evernote.rc.po/translate/#unit=658038

元の英文は“Monthly Upload Allowance Used”だ。やはり誤訳だったようだな。「月毎アップロード割当の使用量」と書いて Suggest しておいたのだが反映されてないな。というか、この翻訳サイトはUIが斬新過ぎて使い方がよくわからんのだ。うん。

2012-03-09

割り算と余りを一度に

Pythonには商と余りを一度に求めるdivmodっていう関数がある。

>>> divmod(10, 3)
(3, 1)

C言語にはないのかなと思って探してみると、やっぱりあった。divって関数だ。

div_t res;
res = div(10, 3);

しかしCRTの実装(VC\crt\src\div.c)を見てみると、

div_t __cdecl div (
  int numer,
  int denom
  )
{
    div_t result;

    result.quot = numer / denom;
    result.rem = numer % denom;

    return result;
}

うわー、思いっきり2回に分けて計算してるしー。

でもね、実際にコンパイルしてみると……

CDQ
IDIV DWORD PTR SS:[EBP+C]

1回にまとめられてる。VC最適化ってすごいな。

ところで、IDIVの1つ前にCDQが置かれている。こいつが気になった。解説はここにあるが、読んでもよくわからなかった。実際にデバッガで実行してみると、EDX を 0 や F で埋めていたので、どうやら符号拡張に関わる命令らしい。

IDIVの説明によれば、どうも x86 の IDIV は「64ビット割る32ビット」をやるらしく、そのため数字のビット長を拡大する必要があって、それが符号拡張処理ってことか。

2012-02-25

tempから不審なパケットが出てます

Winampインスコしたらrundll32.exeが204.232.180.209:80にアクセスするようになったので少し調べてみた。

まずはIPアドレスを調査

204.232.180.209の逆引きはできなかった。whoisで調べるとTexas州San AntonioにあるOpenCandyという組織のものらしい。ポート80はHTTPと決まっているので試しにブラウザでアクセスしてみたが空白が表示されるだけだ。Googleキャッシュによると少し前までは

Heere I am ....

と表示されていたようだ。スペルミスがいかにも怪しいぞ。

次はDLLの調査

rundll32.exeはDLL内のコードを実行するときに使われるので、通信の発端となったコードは他の場所にある。Process Explorerコマンドラインを調べると、本体は一時フォルダにあることがわかった。

RunDll32.exe "C:\Users\username\AppData\Local\Temp\nab958F.tmp\OCSetupHlp.dll",_OCPRD194RunOpenCandyDLL@16 3520

OCSetupHlp.dllハッシュ値VirusTotalで検索してみる。その結果がこれ。うん? どうも一部のアンチウイルスソフトで検出される代物らしいぞ。このDLLがなぜ一時フォルダに置かれていたのか不明だが、フォルダの作成日時からいってWinampインストーラーがやった可能性が高い。

スパイウェアか?

VirusTotalの検出名でググってみたところ、OpenCandyについて記述したWikipediaの記事を見つけることができた。これによるとOpenCandy付きのインストーラーを実行するとパソコンの中身と場所に応じて他のアプリがお勧めされるらしい。件の通信はそのためのものだろう。自分の感覚から言うと、これは明らかにアドウェアなので通信は許可しないし、DLLも削除しておいた。

ちなみに、このOpenCandyはWinampインストーラー以外にもCCleanerやWinSCP、Unlocker、Connectify などのインストーラーにも含まれているようだ。この調子だとまたスパイウェア対策ソフトをインスコする必要があるかもしれないな。