(gdb) disas foo
Dump of assembler code for function foo:
0x00000000004004a8 <foo+0>: push %rbp
0x00000000004004a9 <foo+1>: mov %rsp,%rbp
0x00000000004004ac <foo+4>: mov 0x13c(%rip),%eax # 0x4005ee <__dso_handle+30>
0x00000000004004b2 <foo+10>: mov %eax,-0x10(%rbp)
0x00000000004004b5 <foo+13>: lea -0x10(%rbp),%rax
0x00000000004004b9 <foo+17>: add $0x18,%rax
0x00000000004004bd <foo+21>: mov %rax,%rdx
0x00000000004004c0 <foo+24>: mov $0x400498,%eax
0x00000000004004c5 <foo+29>: mov %eax,(%rdx)
0x00000000004004c7 <foo+31>: leaveq
0x00000000004004c8 <foo+32>: retq
(gdb) l foo
8 void foo() {
9 char overme[4] = "WOW";
10 *(int*)(overme+24) = (int)bad;
11 }
Run Code Online (Sandbox Code Playgroud)
为什么不只是8个字节?
这是来自这个问题.
gcc -c test.s
objcopy -O binary test.o test.bin
Run Code Online (Sandbox Code Playgroud)
test.o和之间有什么区别test.bin?
.text
call start
str:
.string "test\n"
start:
movl $4, %eax
movl $1, %ebx
pop %ecx
movl $5, %edx
int $0x80
ret
Run Code Online (Sandbox Code Playgroud)
上面做了什么?
[root@xx test]# cat /usr/lib64/libc.so
/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )
Run Code Online (Sandbox Code Playgroud)
谁知道这种东西是如何产生的?
我正在读一本书,书中说有这些子系统:
win32,os/2,posix,etc..
Run Code Online (Sandbox Code Playgroud)
但我对这些符号没有任何感性认识,你能用简短的话解释一下吗?
if ( sscanf( line, "%[^ ] %[^ ] %[^ ]", method, url, protocol ) != 3 )...
Run Code Online (Sandbox Code Playgroud)
上面那种格式很奇怪,它在做什么?
<a ... target="_blank">...</a>
Run Code Online (Sandbox Code Playgroud)
这种链接只打开一个新标签,但有些网站会打开一个新的浏览器实例,有什么诀窍?
my @output =
map $_->[0],
sort{$a->[1] <=> $b->[1]}
map [$_,-s $_],
@array;
Run Code Online (Sandbox Code Playgroud)
有人可以更详细地解释代码吗?我不能得到它的头或尾..
if ( fgets( line, sizeof(line), stdin ) == (char*) 0 )...
Run Code Online (Sandbox Code Playgroud)
我不明白这一行的作用,有人知道吗?