パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

遠隔操作ウイルスのクラス・メソッド名はどうなのよ」記事へのコメント

  • 真面目に分析してみた (スコア:4, おもしろおかしい)

    by shuichi (572) on 2013年03月08日 22時38分 (#2339637) 日記

    A「まずクラス名・関数名の一覧を見て欲しい。」
    A「他の人も言っているように命名規則がバラバラなのが解るだろう。複数の人のコードが混ざっていると推測できる。」
    B「犯人は複数犯だと?」
    A「いや、この規模のプログラムで複数犯というのは考えづらい。インターネットなどからコピペしたコードだと考えるのが妥当だろう。」
    B「つまり、関数名だけ判断できないと?」
    A「そうは言っていない。もう一度よく見て欲しい。」
    A「命名規則はバラバラだが、小文字の動詞で始まり、区切りが大文字になっている関数が圧倒的に多いのがわかるだろう。」
    A「これはJavaなどでよく使われる命名規則だ。」
    B「つまり犯人はJavaのプログラマだと?」
    A「これだけでそう判断するのは早計だろう。」
    A「さっきも言ったが、これらの関数はインターネットからコピペしている可能性が高い。」
    A「つまり、コピペ元のソースがJavaだったという事ではないだろうか?」
    B「なるほど」
    A「ここで犯人が生粋のC#プログラマーだったらと仮定しよう。」
    A「サンプルコードを探すとき、検索文字列に「C# ~」とか「.netf ramework ~」を付けて検索する場合が多いと考えられる。」
    A「C#はメジャーだし、大抵のことは出来るので、わざわざ他の言語のサンプルを参考にする必要がないからね。」
    A「しかし犯人はJavaらしきサンプルを利用している。」
    B「つまり犯人はC#プログラマーではないと?」
    A「その可能性が高い。」
    A「もし犯人がC言語のプログラマだったなら、ウイルス作るのに巨大なランタイムが必要なC#はまず使わない。」
    A「スクリプト系言語のプログラマだったら、もっと短めの関数名を好むはずだ。」
    A「そう考えると、犯人はJavaプログラマだと考えるのが妥当かもしれない。」
    A「次はCommon.GetUnixTime()に注目してみよう。GetUnixTimeで検索すると結構な数のページが検索される。これもコピペだろう。」
    B「でしょうね。」
    A「これはUNIX時間を返す関数だと推測できる。」
    A「ここで犯人がUNIXを全く知らないと仮定しよう。どうやったらこれらのページにたどり着くだろうか?」
    A「実はUNIX時間という言葉を知らないとこれらのページにはなかなかたどり着けない。」
    B「クラス毎コピペしたら、この関数も付いてきたのでは?」
    A「クラス内のほかの関数と命名規則が違うので、その可能性は低いだろう。」
    A「つまり犯人はある程度UNIXに馴染みがあるのではないだろうか?」
    B「なるほど」
    A「では次はCommon_Crpt.addKaigyo()、removeKaigyo()に注目してみよう。」
    A「この二つだけ、明らかに他と異なるのがわかるだろうか?」
    B「・・・日本語ですね。」
    A「そうだ。英語、英語と来て、ここだけ日本語。これは恥ずかしい・・・。たとえコピペであっても私なら直すな。」
    B「直しますね。」
    A「次は_getElementById()に注目しよう。」
    B「ちょっと待ってください。addKaigyo()はどうなったんですか?」
    A「・・・いや、それだけだが・・・」
    B「・・・」
    A「では話を戻そう。_getElementById、_getElementsByTagNameはいわずと知れたDOMの関数だ。」
    A「この関数名がさっと出てくるぐらいだから、XMLかHTML、Javascriptなどを使ったことがあるのではないだろうか?」
    B「まあ今時その三つを使ったこと無いって言う人のほうが珍しいんじゃないですかぁ?」
    A「まあそうだな。なんか言葉に棘がないか?」
    A「まあそれはさておき、ここまでに出てきたキーワードを並べてみよう。」
    B「Java、UNIX、XML、HTML、Javascriptですね。」
    A「そうだ。これらのキーワードから導き出される犯人像は・・・」
    A「本職はJavaServlet/JSPを使ったWebプログラマで、C#をちょっとかじったことのある人物と言うことになる。」
    B「なるほど。・・・でもそれって全然絞り込めてませんよね。」
    A「ウイルス作るのにC言語よりC#を選んでることから、ここ10年ぐらいの間にWindowsのプログラミングを覚えた人。」
    B「それでも絞り込めていませんよ。」
    A「後はaddKaigyo()を放置するぐらいプログラミングに思い入れがない人だな。」

    • by nmaeda (5111) on 2013年03月09日 15時26分 (#2339915)

      まずは長文ご苦労さま。

      結論は、あるプログラミング言語でコードを書けるか否か、どんなコーディングスタイルか、何て、所詮は状況証拠に過ぎないのだからマジメに議論する価値はないってことだな。

      親コメント
    • by Anonymous Coward

      三行で頼む

      • by Anonymous Coward on 2013年03月09日 1時53分 (#2339706)

        本職はjava servlet/jspのプログラマ
        c#は半人前(犯人だけに)
        30代から40代ぐらいの日本人。たぶん楽天社員ではない。

        これでいいか?

        親コメント
        • by Anonymous Coward

          だいたい合ってる

        • by Anonymous Coward

          なんだ、私だったのか。
          # 確かに何とかKaigyoってメソッドも書いたことある。

Stableって古いって意味だっけ? -- Debian初級

処理中...