dumpとは
- 投げ捨てる、放り出すなどを意味する英単語。
- ファイルやメモリの内容を記録ないし表示することを意味するIT用語。本稿で扱う。
- dUMP - デオキシウリジン一リン酸(Deoxyuridine monophosphate)。
- 破壊神Dump - 動画投稿者。当該記事参照。
概要
およそコンピューターの中に保存している全てのデータは、二進数で表示されています。プログラムもそうなので、これをハッキングするべく、hexdumpが開発された(誤)
普通のプログラムは、機械語の翻訳された命令の二進数文字列として保存されるので、アセンブリ言語マスターでもわかりにくい場合が大井。
しかし、慢心コンパイラーは、君の秘密を暗号化する義務は無いのです!
例として、先ずは、SECRET.cというファイルを見てみましょう。
|
int
main(int argc, char* argv[])
{
char my_secret[] = "I LOVE SEX!!!!!!!!!!!!!";
return 0;
}
|
この秘密を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表現で見てみると?
| 0x49 |
0x20 |
0x4c |
0x4f |
0x56 |
0x45 |
| I |
空白 |
L |
O |
V |
E |
| 0x20 |
0x53 |
0x45 |
0x58 |
0x21 |
|
| 空白 |
S |
E |
X |
! |
|
なんと、完全にバレているではないか!
なお、viで:%!xxdにすれば普通に見れます。見難いかもしれませんが。
関連項目