dumpとは
- 投げ捨てる、放り出すなどを意味する英単語。
- ファイルやメモリの内容を記録ないし表示することを意味するIT用語。本稿で扱う。
- dUMP - デオキシウリジン一リン酸(Deoxyuridine monophosphate)。
- 破壊神Dump - 動画投稿者。当該記事参照。
概要
およそコンピューターの中に保存している全てのデータは、二進数で表示されている。プログラムもそうなので、これをハッキングするべく、hexdumpが開発された(誤)
普通のプログラムは、機械語の翻訳された命令の二進数文字列として保存されるため、アセンブリ言語マスターでもわかりにくい場合が多い。
しかし、慢心コンパイラーは、君の秘密を暗号化する義務は無いのである!
例として、まずは、SECRET.cというファイルを見てみよう。
この秘密をgccでコンパイルしてプログラムとして保存すれば安心!と思っているそこのあなた。
gdbで、簡単に君をわいせつ物陳列罪に訴える方法がある。それがdisasである。
このdisasされたファイルを見てみよう。
Dump of assembler code for function main:
0x08048404 <+0>: push %ebp
0x08048405 <+1>: mov %esp,%ebp
0x08048407 <+3>: and $0xfffffff0,%esp
0x0804840a <+6>: sub $0x30,%esp
0x0804840d <+9>: mov 0xc(%ebp),%eax
0x08048410 <+12>: mov %eax,0xc(%esp)
0x08048414 <+16>: mov %gs:0x14,%eax
0x0804841a <+22>: mov %eax,0x2c(%esp)
0x0804841e <+26>: xor %eax,%eax
0x08048420 <+28>: movl $0x4f4c2049,0x14(%esp)
0x08048428 <+36>: movl $0x53204556,0x18(%esp)
0x08048430 <+44>: movl $0x21215845,0x1c(%esp)
0x08048438 <+52>: movl $0x21212121,0x20(%esp)
0x08048440 <+60>: movl $0x21212121,0x24(%esp)
0x08048448 <+68>: movl $0x212121,0x28(%esp)
0x08048450 <+76>: mov $0x0,%eax
0x08048455 <+81>: mov 0x2c(%esp),%edx
0x08048459 <+85>: xor %gs:0x14,%edx
0x08048460 <+92>: je 0x8048467 <main+99>
0x08048462 <+94>: call 0x8048320 <__stack_chk_fail@plt>
0x08048467 <+99>: leave
0x08048468 <+100>: ret
End of assembler dump.
|
リトルエンディアンのASCII表現で見てみると…
なんと、完全にバレているではないか!
なお、viで:%!xxdにすれば普通に見られる。見難いかもしれないが。
関連項目
-
ページ番号: 5210050
-
-
リビジョン番号: 2162779
-
- 編集内容についての説明/コメント:
大井→多い、ですます調とだである調の混用を統一