ガチョウを飼えるアプリ「Desktop Goose」のソースコードをみてみる
- 2020-02-01
GIGAZINEにて「PC上でいたずら好きなガチョウが飼える無料アプリ」として紹介されていた**「Desktop Goose」**というアプリケーションについて。
Desktop Gooseを起動しておくとガチョウがPCの画面上を歩き回ったりイラストが描かれたウィンドウを引っ張ってきたり、ときにはマウスを掴んで移動するというイタズラをします。
とても面白いアプリケーションなのですが、プログラミング好きな私としては、やはりそのソースコードも気になります。
Desktop Goose 配布ページを確認してもソースコードの配布はしていないようだったので試しに「JetBrains dotPeek」に読み込んでみたところ、見事に逆コンパイルできました。
ソースコードをみてみる
逆コンパイルした結果は以下のようなかんじになりました。
言語はC#ですね。
ファイルサイズ的にTheGoose.csが一番大きいのでこれをみてみます。
private static string[] possiblePhrases = new string[6]
{
"am goose hjonk",
"good work",
"nsfdafdsaafsdjl\r\nasdas sorry\r\nhard to type withh feet",
"i cause problems on purpose",
"\"peace was never an option\"\r\n -the goose (me)",
"\r\n\r\n >o) \r\n (_>"
};
フレーズを発見しました。これはガチョウがメモ帳に書くメッセージですね。
メモ帳を勝手に起動して書き込むためのコードは以下のようになっていました。
public SimpleTextForm()
{
this.Width = 200;
this.Height = 150;
this.Text = "Goose \"Not-epad\"";
TextBox textBox = new TextBox();
textBox.Multiline = true;
textBox.AcceptsReturn = true;
textBox.Text = TheGoose.SimpleTextForm.possiblePhrases[TheGoose.SimpleTextForm.textIndices.Next()];
textBox.Location = new Point(0, 0);
textBox.Width = this.ClientSize.Width;
textBox.Height = this.ClientSize.Height - 5;
textBox.Select(textBox.Text.Length, 0);
textBox.Font = new Font(textBox.Font.FontFamily, 10f, FontStyle.Regular);
this.Controls.Add((Control) textBox);
string str = Environment.SystemDirectory + "\\notepad.exe";
if (!File.Exists(str))
return;
try
{
this.Icon = Icon.ExtractAssociatedIcon(str);
this.ShowIcon = true;
} catch {}
}
全部紹介するのはコードの量的に難しいのでここまでにしておきます。
自分で「Desktop Goose」のコードを確認してみたい方はdotPeekをダウンロードして逆コンパイルをやってみてください。
JetBrains dotPeek ダウンロード
.NETアセンブリをC#にデコンパイル
dotPeekは、ReSharperのバンドルされたデコンパイラに基づく無料のスタンドアロンツールです。 これは、.NETアセンブリを同等のC#またはILコードに確実にデコンパイルできます。
このデコンパイラは、ライブラリ (.dll)、実行ファイル(.exe)、Windowsメタデータファイル (.winmd)など、複数の形式をサポートしています。
デコンパイルしたコードをVisual Studioプロジェクトにエクスポート
アセンブリをデコンパイルしたらすぐに、Visual Studioプロジェクト(.csproj)として保存できます。 これはレガシーアセンブリから失われたソースコードを復元しなければならない場合、潜在的に多くの時間を節約できます。
ダウンロード
dotPeek - Free .NET Decompiler and Assembly Browser
無料で使用できる高機能なツールなので興味のある方は使ってみてください!