2010/12/11
「記号のみで任意のPowerShellコードを実行」という記号プログラミングの記事を書きました
記号のみで任意のPowerShellコードを実行 - JPerl advent calendar 2010 sym Track
http://perl-users.jp/articles/advent-calendar/2010/sym/11
最近にわかに流行中(?)の「記号プログラミング」をPowerShellで挑戦してみました。記号プログラミングとは、アルファベットと数字以外の記号のみを使ってプログラムコードを記述する遊戯です。難読化されたコードが書けるという効用はありますがその他には特に意味はなく、パズルや頭の体操に近い遊びだと思っています。ただし言語に対する深い知識が要求されますし、その意味では得るところもあるかもしれません。
Advent Calenderとは、毎年12月に持ち回りで毎日一つずつ記事を公開していく企画だそうで、技術系コミュニティで古くからおこなわれているそうです。http://perl-users.jp/では2008年からおこなわれているようで、今年はhttp://perl-users.jp/articles/advent-calendar/2010/になります。今回私が上げた記事はPerlとは関係ありませんが、Symbolic Programing Trackでは言語を問わないということらしいです。ちなみに今日までは毎日違う言語の記号プログラミング記事が公開されており、11種類の記号プログラミングはなかなか壮観です。
ちなみに、今回の記事においてPowerShellにはeval()に相当する構文がないのでInvoke-Expressionコマンドレットを使わないといけないって書いたんですが、scriptblockクラスの静的メソッドCreate()を使えば文字列からscriptblockを生成し、&演算子で実行可能なことに気づきました。
&$({}."gettype"()::"create"("dir"))
こんな感じで”dir”を実行できます。”gettype”と”create”という文字列を頑張って生成すればできますね。
元記事:http://blogs.wankuma.com/mutaguchi/archive/2010/12/11/195702.aspxプライバシーポリシー