投稿者「みむら」のアーカイブ

IL でアセンブラ短歌

「アセンブラ短歌」は
五・七・五・七・七の三十一バイト(みそひとバイト)から成る機械語コードで
プログラムを書いてみるという近未来の文化的趣味であり,
近年, 国内のハッカー間で密かなブームが起きています.

http://kozos.jp/asm-tanka/

みむらです。
そんなわけで、詠んでみました。

.assembly extern mscorlib {}
.assembly tanka {}

.method static void Main() cil managed {
	.entrypoint
	.locals init(unsigned int32)
	ldc.i4 0x9369464A
	stloc.0
Write:
	ldloc.0
	ldc.i4.m1
	ldc.i4.8
	shl
	not
	and
	ldc.i4 0x3000
	add
	call void [mscorlib]System.Console::Write(char)
	ldloc.0
	ldc.i4.8
	shr.un
	stloc.0
	ldloc.0
	brtrue.s Write
	ret
}

コンパイルするとこんな感じ。

20 4A 46 69 93

0A 06 15 1E 62 66 5F

20 00 30 00 00

58 28 01 00 00 0A 06

1E 64 0A 06 2D E8 2A

解説としては次のような感じになります:

20 4A 46 69 93 ldc.i4   0x9369464A
0A 06 15 1E 62 66 5F stloc.0

ldloc.0

ldc.i4.m1

ldc.i4.8

shl

not

and

20 00 30 00 00 ldc.i4   0x3000
58 28 01 00 00 0A 06 add

call     void [mscorlib]System.Console::Write(char)

ldloc.0

1E 64 0A 06 2D E8 2A ldc.i4.8

shr.un

stloc.0

ldloc.0

brtrue.s Write

ret

0x9369464A を入れて

1バイトごと切り出して、

0x3000 を入れて、

加算して Unicode 文字として出力

ビットシフトしたのち、 NULL なら ret して終了。

というような感じです。

 

IDA Pro でフロー表示するとこんな感じ

image

まだまだ荒削り感がものすごいのですが、

短歌の字数になっていて、かつ 5文字部分は値代入になっています。

きっちり文字を出した後は ret して終了していて、プログラム的にはきれいかも。

でも、バイトコードとしてみたときに美しいかというと、うーん。

 

 

ちなみに、実行結果はこの通り。

image

 

・・・まぁ、香川ですし。

もう少し美しい短歌を詠みたいですね。

2週間の強行スケジュールいくない

どうもみむらです。
ここ2週間ほど各地に飛び回っていました。

今回の予定は次の通りでした。

10/11-12 : 情報セキュリティワークショップ in 越後湯沢
10/13 : 某所
10/13 : マレーシアへ移動
10/14 – 10/18 : hack in the box (クアラルンプール)
10/19 : 帰国
10/19 : 高松へ移動
10/20 : SECCON CTF (wasamusume)
10/21 – 23 : MWS Cup / MWS / CSS
10/24 : ASF
10/24 : 帰宅

いくら若いとはいえ、MWS あたりで疲れと若干の体調不良を感じていました。
やっぱり、休みをほとんど入れずに各地に行くのは良くないです。

とりあえず、以下感想です。
(今回は技術系の話は一切出てこないと思います。)

続きを読む

Visual Studio の C++ プロジェクトでフィルタではなくフォルダを使う

お久しぶりです。みむらです。

なんだかんだ書きたいことは多々あるのですが、
書く気力と時間がどうしても・・。ごめんなさい。

 

さてさて。

image

なんだかんだで Visual Studio で C++ を用いたプログラムを書くことが多々ありまして、
その関係で一つ。

右側(Express 版だと左側の方が多いかも・・。)
にあるソリューションエクスプローラにおいて、
フォルダを追加しようと右クリックメニューの追加を見に行っても、

image

「新しいフィルター」となっており、フォルダの作成メニューではありません。
このときに、フィルタではなくフォルダを作って管理したい時にどうすればいいかという話です。

 


1.「すべてのファイルを表示」ボタンをクリックします。

image

なお、クリックすると下に示すように、
フィルタによる表示ではなくなり、ファイルツリーでの表示になります。

image

 

2.フォルダを作ります。

image

先ほどの「新しいフィルター」のメニューが、「新しいフォルダー」に変わります。


私自身は普段フィルタを使って作業していますが、
何となくフォルダでやってみたくなりまして調べてみて、
なかなか見つからなかったのでメモしました。

ソフトウェアからタッチ入力を行う ( SendInput のタッチ版をする場合のメモ )

メモです。

http://msdn.microsoft.com/en-us/library/windows/desktop/hh802899(v=vs.85).aspx

入力を行う場合、

InjectTouchInput 関数
http://msdn.microsoft.com/en-us/library/windows/desktop/hh802881(v=vs.85).aspx

を用いて入力を行うようです。

 

また、こちらのサイトに非常にわかりやすいサンプルを見つけました。
http://www.naturalsoftware.jp/blog/8185

Linux 上で Hyper-V の動的メモリやらいろいろと使えるようにしてみた。

どうもみむらです。

今回の内容は、需要がニッチすぎるだとか激コワだとか、なんかいろいろと言われていますが、
自己満足の内容です。

 

・・こわくないよ!

 

動的メモリというのは、Hyper-V 上において、
ゲストマシン(仮想で動かしているマシン)のメモリ需要にあわせてホストで確保するメモリの量を変化させるというものでしょうか。

早い話が、ゲストでメモリを使っていなければホスト上でメモリを解放して、
使いそうならホストに空きがあればより多くのメモリを割り当てる、とそんな感じ。

 

結論とすると、

image

こんな感じで動くように。

 

勿論、普通の Linux を動かしますと、

image

こんな感じで対応していませんので動作することはありません。

 

その他、Linux のカーネルを作る際に Hyper-V のゲストモジュールを組み込んだとしても、

image

執筆時最新の Version 3.8.7 でもこんな感じですので、ホスト側にメモリの利用状況は伝えられますが、
縮小、拡大処理は行われません。

 


その他、

image

こういう感じのスナップショット系・・なんですかね中身はまだ見てないのでアレですが、
そういうのを追加してみたり、

image

Hyper-V 用の Framebuffer ドライバを入れてみたり。 いろいろといじりました。

 

image

あとはやっぱり、こんな感じで Gnome を Hyper-V で動かしてみたり。

 


続きを読む