| 自分自身の機械語プログラムの書いてある番地のメモリを表示する |
#include <stdio.h>
int main()
{
long int ptr;
int i,j;
ptr=(unsigned long int)main; /*mainのアドレスの取得*/
printf(" +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f\n");
for (j=0; j<0x10; j++) { /*0x10行作業する*/
printf("%08lx",ptr);
for (i=0; i<16; i++) { /*横方向に16byte表示する*/
printf(" %02x",*(unsigned char *)ptr);
ptr++;
}
printf("\n");
}
return 0;
}
|
#include <stdio.h>
int main()
{
long int ptr,ptr0,ptr1;
int i;
ptr0=(unsigned long int)main; /*mainのアドレスの取得*/
ptr1=ptr0+0x100; /*表示領域の最後のアドレスの設定*/
printf(" +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f\n");
for (ptr=ptr0 ; ptr<ptr1; ) {
printf("%08lx",ptr);
for (i=0; i<16; i++) {
printf(" %02x",*(unsigned char *)ptr);
ptr++;
}
printf("\n");
}
return 0;
}
|
#include <stdio.h>
int main()
{
long int ptr,ptr0,ptr1;
ptr0=(unsigned long int)main; /*mainのアドレスの取得*/
ptr1=ptr0+0x100; /*表示領域の最後のアドレスの設定*/
printf(" +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f\n");
for (ptr=ptr0 ; ptr<ptr1; ptr++) {
if ((ptr&0xf)==0) printf("%08lx",ptr);
printf(" %02x",*(unsigned char *)ptr);
if ((ptr&0xf)==0xf) printf("\n");
}
return 0;
}
|
/* 実行結果 *
このプログラムのmainは実行するたびに異なるアドレスに
配置されるため,実行するたびに異なる場所が表示される
>memdump.exe
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f
00c11000 55 8b ec 83 ec 0c c7 45 f8 00 10 c1 00 8b 45 f8
00c11010 05 00 01 00 00 89 45 f4 68 00 20 c2 00 e8 7e 00
00c11020 00 00 83 c4 04 8b 4d f8 89 4d fc eb 09 8b 55 fc
00c11030 83 c2 01 89 55 fc 8b 45 fc 3b 45 f4 7d 47 8b 4d
00c11040 fc 83 e1 0f 75 11 8b 55 fc 52 68 3c 20 c2 00 e8
00c11050 4c 00 00 00 83 c4 08 8b 45 fc 0f b6 08 51 68 44
00c11060 20 c2 00 e8 38 00 00 00 83 c4 08 8b 55 fc 83 e2
00c11070 0f 83 fa 0f 75 0d 68 4c 20 c2 00 e8 20 00 00 00
00c11080 83 c4 04 eb a8 33 c0 8b e5 5d c3 8b 0d 50 24 c2
00c11090 00 33 c0 83 c9 01 39 0d 40 31 c2 00 0f 94 c0 c3
00c110a0 6a 0c 68 f0 0d c2 00 e8 94 13 00 00 33 ff 89 7d
00c110b0 e4 33 c0 39 45 08 0f 95 c0 85 c0 75 15 e8 1f 13
00c110c0 00 00 c7 00 16 00 00 00 e8 64 03 00 00 83 c8 ff
00c110d0 eb 61 e8 2f 04 00 00 83 c0 20 50 6a 01 e8 69 04
00c110e0 00 00 59 59 89 7d fc e8 1a 04 00 00 83 c0 20 50
00c110f0 e8 1e 05 00 00 59 8b f0 8d 45 0c 50 57 ff 75 08
*/
|