編集部が厳選した「いま、みんなに見てほしいまとめ」をイチオシとして紹介しています!グサッと刺さる良質まとめはこちら!

【遠隔操作ウィルス事件検証】Visual C#がインストールされていない環境でC#の開発を行う方法について【出先環境でビルドしたい】

(遠隔操作ウィルス関連の検証話?/C#プログラマ向けの出先での緊急開発環境の話?) Visual C#がインストールされていない環境で、WindowsだけでC#の開発を行う方法について
プログラミング 遠隔操作ウィルス 開発環境 visualc#
12304view 50コメント
17
ログインして広告を非表示にする
検証してみました
TLより
西村誠一 @khb02323
1、「遠隔操作ウィルス事件」において、「容疑者の人がC#での開発経験がない」、「容疑者の人の会社PC/自宅PCにVisual C#などの開発環境はインストールしていない」という本人の供述が大きなポイントの一つかと思えます
西村誠一 @khb02323
2、今回、Twitter上のTLで見かけた情報を元に私の方でも検証してみまして、結論から言うと、「Visual C#などの開発環境を一切インストールしていないWindows環境で、C#の開発は可能である」という事が実証できました。
西村誠一 @khb02323
3、つまり、(論理的には)遠隔操作ウィルス事件において、「容疑者のPCにVisual C#/Visual Studioなどの開発環境のインストール形跡が全く見つからなかったとしても、容疑者のPCでウィルス開発を進める事は可能であった」という推論構築は可能になります
西村誠一 @khb02323
4、あくまでこの話は「開発環境が無くても開発は可能である」という論理的な話であって、「だから容疑者が犯人である」などの結論に結びつく様な短絡的な話ではありません。…ですが、「容疑者のPCに開発環境が無かった事」が「犯人でない事」の論拠であったとしたならば大きく後退する気はします
西村誠一 @khb02323
5、(検証手順に関するまとめ) 「Visual C#がインストールされていない環境で、WindowsだけでC#の開発を行う方法について」 http://t.co/WTk7yhZoXQ

コメント

きゃっつ(Kats)⊿11/4欅坂京都個別 @grayengineer 2013-03-27 20:06:25
まあ、論理的には可能と言ってもいいんだろうね。ただ、そこまでするかなー、という感想は持つけど。
セルフ執事 @SF_yomi 2013-03-27 20:21:48
はぁ? 検証手順でおもいっきりVS使ってるやん。つまりこの方法による行為を行った、という立件をするなら、VSをインストールした開発実機の特定が必要じゃん。馬鹿? これは開発環境が無くてもプログラムは動くと言ってるに相当近い。
Nitecube @Nitecube 2013-03-27 20:48:55
メモ帳でコード書いてランタイムについてるcsc.exeでコンパイルすれば本当にVSなしで実行ファイルを作成できる。ただしそうして作成した実行ファイルを調べれば、VSを使ったかどうかもわかるから意味ないけどね。
倉瀬美都 @clausemitz 2013-03-27 20:51:04
デバッグとかテストとか現実に起きうる事態を考えると真犯人がこんなヘンテコリンな手間かけるかな?って疑問が…。ちっとも現実的じゃないね。
倉瀬美都 @clausemitz 2013-03-27 20:53:54
で、ここで述べた手順で、やっぱり片山容疑者は真犯人だって短絡して騒ぐ馬鹿が絶対現れるのが予想されるし、ますますプログラム開発に素人な癖に冤罪を作るのが得意な警察を間違って応援するだけの気がする。:-P
BABA Motoharu @calc3 2013-03-27 21:17:08
「Visual Studio 2010という数十万円以上するソフト」て報道(笑)が出たときに興味があったので手元のVS2010で作ったexeをバイナリ解析してVS2010だと特定できた理由を調べたことがある。
BABA Motoharu @calc3 2013-03-27 21:19:02
結果、VS2010が作成するプロジェクトテンプレートにVS2010を示す識別情報が埋め込まれているから特定できた、というのが結論なので、1からコード書いてわざわざそれを入れるとかちょっと考えにくい。
Tsuyoshi CHO @tsuyoshi_cho 2013-03-27 21:19:39
とはいえ客観として検証は必要だからね...でもアセンブリにコンパイラの名前とかその時のパスとか入ることありそうだけど(詳しくない)
きゃっつ(Kats)⊿11/4欅坂京都個別 @grayengineer 2013-03-27 22:43:16
>Visual Studio 2010という数十万円以上するソフト< Express Editionの立場w
青色一号 @blue1st 2013-03-27 22:54:44
単純に「へー」とは思ったけど、考慮するにはあまりにもイレギュラー過ぎる
R.K.M(あるけむ) @fwbc1965 2013-03-27 22:58:58
ざっくり言うと「.NET FrameworkにC#のコンパイラが含まれている」ということね。逆に言えば「誰でもC#での開発ができるのでは?」という言い方もできますね
tyama67nara @tyama67nara 2013-03-27 23:13:17
既存コードのコピー&ペーストで当該ファイル作成可能との議論と同じ。 彼には失礼だがこの犯行は無理だと思います。
都幾川 沙月 @SatsukiFox 2013-03-27 23:24:26
可能・不可能で言えばバイナリエディタさえあれば任意のバイナリファイルは作れて、VisualStudioなくてもアプリ作れちゃいますよね。(という極論)
桜浴衣王さん✬ @Dr_sakura 2013-03-28 00:26:18
VirtualPC上にVisual Studioをインストールすれば、こんなメンドクサイことしなくても、証拠隠滅が簡単、かと思うのは素人だからでしょうか。w
ITDOREIKUN @wtpgjmwtpgjm 2013-03-28 00:29:08
バイナリエディタを開いてキーボードを適当に連打してたら当該実行ファイルができた可能性がある(これが小人の正体
sitimi @sitimito 2013-03-28 01:49:48
作り終わった後に環境削除すりゃいいんじゃない?(暴論)
Domeki @Domeki 2013-03-28 08:33:31
ウィルスが画面操作が伴わないタイプならともかく、デザイン部分のコーディングをテキストだけでやったってか? そりゃ不可能じゃないけど、デザイン部のコードなんて自動生成使わなきゃやってらんないぞ。
ちゅーん @its_out_of_tune 2013-03-28 09:33:58
gmcsでFA? デザイン部のコーディングなんてWin32APIとかJava Swingに比べたら…
kartis56 @kartis56 2013-03-28 20:45:55
1台目のほうでsln作るところまでやれるんならそっちで開発すればいいだけで、2台目いらないんじゃ… これだと、自宅にはインストールされていなかったのは自宅で開発しなかったからっていう意味にしかならないような。
. @l___l_l_l_l 2013-03-28 20:51:51
仮想環境で開発すりゃ残らないかと。
kartis56 @kartis56 2013-03-28 21:07:15
試しに手打ちでそのTestApp.csコピーして、コマンドラインでcscでコンパイルしたけどv4.0だとInitializeComponentとかが参照解決できないって出てコンパイルできなかった。v2.0だと名前空間Linqが参照解決できないので、コメントアウトすると同じ結果に。
西村誠一 @khb02323 2013-03-28 22:56:37
人もだいぶ減ってきているはずだと思うので、色々指摘されている事に対して、私の考えも書いておきたいと思います(とは、いえ、異論・反論は助かる話なので、個別の話に対しての再反論とかは基本的にしません)
西村誠一 @khb02323 2013-03-28 22:56:46
まず、最初に書いておきたいんですが、私自身も「この方法でやったはず」と書いてるつもりはありません。それは元の文章中にも書いているつもりです。あくまで(実現性を度外視した)可能性の一つとして「そういうやり方もあるかも?」的な話ですね
西村誠一 @khb02323 2013-03-28 22:56:54
容疑者の人の供述では、「会社/自宅のパソコンの双方にVisual C#の開発環境はインストールしていない」という話だったかと思いますが、その後の警察発表では「容疑者の会社のPCで開発した証拠を見つけた」という話になっていたかと思います(話の前提)
西村誠一 @khb02323 2013-03-28 22:57:03
会社のPCでウィルスを開発するのに、例えばVisual Studioなどの開発環境を一度でもインストールした場合、後でアンインストールしてもレジストリなどに「インストールした形跡」は多数残るかと思いますので、直接会社のPCに開発環境をインストールした線は無いんじゃないかと思ってます
西村誠一 @khb02323 2013-03-28 22:57:13
次に、会社のPC本体に形跡を残さない手法としては、確かに複数指摘されている様に、1、VMwareなどの仮想マシン上で開発する。2、リモートデスクトップ経由でネット上の別のマシンで開発していたなどは考えられると思います
西村誠一 @khb02323 2013-03-28 22:57:20
仮想マシンでの開発についていえば、私自身が(色々なOS、色々なビット数でのデバッグ用途や検証用途などで)正に多数の環境を実際に使ってますが、例えばWin7環境ならOSだけでもすぐ5~6ギガ程度、ちょっと開発環境とか入れたらすぐに10~20ギガ程度のファイルサイズになります
西村誠一 @khb02323 2013-03-28 22:57:31
いくら警察の操作能力が低いと言っても、さすがに仮想マシンのファイルが会社のPC上で見つかったら一発アウトですし、見つからない様に「数ギガバイト」のファイルをどの様に隠蔽するのか考えた場合、私は「仮想PCでの開発を隠す事ってできるのかな?」って思いました(うまい隠し方があるならご指摘願います)
西村誠一 @khb02323 2013-03-28 22:57:40
リモートデスクトップなどを経由して、自宅なり他の場所にある「別の開発マシン」の操作のみを会社のPCから行っていた場合、その「別の開発マシン」が押さえられたらやはり一発アウトなのではないかという気がして、(全否定ではないですが)リモートデスクトップ経由などでの開発も個人的には「どうかなー?」と思ってます
西村誠一 @khb02323 2013-03-28 22:57:47
「開発環境が無ければ開発できない」という基本的な前提条件と、「しかし、会社のPCでウィルスを開発していた証拠を見つけた(警察発表)」という相反する話の整合性をどう考えたらいいのか?と、常々思っていたのですが、たまたま別件で見かけた今回の情報を見て、「そういうやり方もあるんだね?」と思ったっていうのが今回の話です(本気にしてる訳ではありません。頭の体操的な話です)
西村誠一 @khb02323 2013-03-28 22:57:54
その後の報道というかジャーナリストさんからの話で、警察によると「容疑者は自宅及び会社PCの情報をきれいさっぱり消していて証拠隠滅してる」みたいな話もあったそうです(今回のまとめを作った後に知った話です)
西村誠一 @khb02323 2013-03-28 22:58:03
第三の選択肢として、もしかして、会社のPCで仕事に使う様な「必要なファイル一式」だけバックアップしておいて、「そもそもPCのリカバリー(クリーンインストール)を頻繁にやって、PCそのものから定期的に証拠を隠滅してた可能性」もまさかあるのかな?とか最近ちょっと思いつつですが、それもどうかなー?とかも思いつつです
西村誠一 @khb02323 2013-03-28 22:58:12
PCそのものをクリーンインストールして「全部消しちゃう」なら、開発環境をどれだけインストールしていても、それらの形跡を含めてまるごと全部消せるのは事実です。時間もかかるので普通はやりませんが、馬鹿でかい仮想マシンの仮想ディスクファイルをコピーする時間を想定して比較したら、リカバリーからの環境再構築でも大して時間変わらないかも?という気もしないでもないです
西村誠一 @khb02323 2013-03-28 22:58:19
ただ、仮想マシンの話と同様に、(まあ、あんまり現実味はないにしても)リカバリーで定期的に消していたという話にしても、毎回できるほど短時間ですむ話ではないので、「逮捕されるタイミング」によっては隠蔽が間に合わない話になるので、やっぱりこれも違う気もしますね・・・
西村誠一 @khb02323 2013-03-28 22:58:26
尚、今回の「Visual C#無しでの開発」の話、私が想定していたのは、仮想マシン上などにVisual C#を入れた開発環境で、おおまかなGUI部分を含めた設計だけやっておいて、「コードをごりごり書く部分だけ」は開発環境のないマシンでも作れるよね?という趣旨で考えてました
西村誠一 @khb02323 2013-03-28 22:58:33
この方法の場合、開発環境(Visual C#)が必要になるのは、最初と、画面構成などGUI部分を変更するタイミングだけでいいので、そういう場合だけ何回か、仮想マシンなど別環境で構築しておいて、終わったら仮想マシンごと丸ごと消してしまうなどの運用を想定してました(GUIの配置とかは、そんなに時間かける話でもなければ度々やる事でもないので)
西村誠一 @khb02323 2013-03-28 23:07:38
ああ、それから、そもそも論として「今回の容疑者の人が誤認逮捕されている可能性」を否定してる訳でもないです(それも最初から書いているつもりですが)・・・あくまで、「誤認逮捕」説の論拠の大きなポイントの一つが「容疑者のPCに開発環境が無いはず」だったので、「無くても開発できる方法論」を”論理的に”検証してみただけという話です
セルフ執事 @SF_yomi 2013-03-29 00:59:56
ここが違う。逮捕とは立件が必要で、「開発環境無いはず」じゃなく、「開発した事実を示す」のが警察の仕事。khb02323 論拠の大きなポイントの一つが「容疑者のPCに開発環境が無いはず」だったので、「無くても開発できる方法論」を”論理的に”検証してみただけという話です
セルフ執事 @SF_yomi 2013-03-29 01:01:29
当人の主張はスキルも開発環境も持たない」なのだから、スキルと開発環境とその実行をどこで行ったのか? を証拠として呈示すれば立件できるし、ならば誰も誤認逮捕の可能性があると騷がない。警察がリークする「証拠」という物が証拠になってないという騷ぎ。
セルフ執事 @SF_yomi 2013-03-29 01:04:42
誰だって他人の首を死ぬまで紐で〆めれば、人を殺せるけれども、(スキルと環境)人を殺す奴なんて本当に極一部の人間だし。なのにお前は人を殺せる能力が有るのだから殺人犯だとか言われたら嫌でしょ。この事件はそういう話。
西村誠一 @khb02323 2013-03-29 03:16:23
「仮想ディスク(仮想マシン)を直接USBメモリから実行する」というやり方が(遅いけど)一番現実的なのかもしれないですね・・・「仮想ディスクはHDD上から読み込ませて、そのファイルの移動時間がネックになる」とか思ってたのですが、それは私の思い込みでそもそも仮想ディスク自体をUSBメモリから直接読ませるなら問題ないのかも
西村誠一 @khb02323 2013-03-29 03:18:26
あと、繰り返しになりますが、今回の話は「技術論」というか「方法論」的な意味合いで、「そういう事が可能なのか?」、「可能でないのか?」という部分の検証の話に限定した話であって、今回の容疑者の人が「実際に犯人であるか?/そうではないか?」自体については論じてないです
西村誠一 @khb02323 2013-03-29 03:21:12
という意味においては、まとめのタイトルはまぎらわしかったかもしれないですね「遠隔操作ウィルス事件を技術的に検証」とかすればよかったのかもですが、タイトルも長すぎると途中で表示が見切れたりして結構悩ましいのです^^;(私、序盤はまとめのタイトルしょっちゅう変えますし)
Nitecube @Nitecube 2013-03-29 10:48:41
@kartis56 InitializeComponent()は開発環境が自動生成するメソッドで、その内容は別の自動生成ファイルに記述されます。
ぺんてるはインテルに勝るんじゃ @amattaparts 2013-03-29 18:29:31
【Estimate】この事例に加え、Javaのコンテンツ生成の為のEclipse開発環境において、VS2010無しに「Eclipse上でC#プログラムを作成する」ことは可能であることを追認します。@IT http://p.tl/Q9Uq
ぺんてるはインテルに勝るんじゃ @amattaparts 2013-03-29 18:36:48
【Estimate】具体的には Eclipse+Improve C# Plugin for Eclipse+.NET Framework を使用環境ならば、VS2010が無くても問題のC#のiesys.exeの作成は「不可能ではない」ことを追認します。
ぺんてるはインテルに勝るんじゃ @amattaparts 2013-03-29 18:42:18
【Note】なお、私は客観的に判断しているだけで、それによって真犯人を特定できたとは全く言っていません。検察側にも弁護人側にも有利にも不利にも働く、あくまでも一つの可能性の話です。どなたか本件について客観的証拠として「追検証」実施をお願いいたします。
らぃりる-A列車PCオススメ! @Liriru 2013-03-29 19:32:01
何でこんな当たり前のことを今さらやりだしたのか気になる
kartis56 @kartis56 2013-03-29 23:20:33
Nitecube なるほど。開発環境で作ったソースなのでその辺いじらないといけないわけですね。ありがとうございます。
kartis56 @kartis56 2013-03-29 23:35:54
khb02323 逆にいうと、画面構成するために一度は開発環境がある状態で作成者本人が触っているはずだってことですね。GUIが要らないのなら開発環境なくてもいけるかもしれないですが。  >画面構成などGUI部分を変更するタイミングだけ
ログインして広告を非表示にする
ログインして広告を非表示にする