环境:linux使用者直接用终端机即可,windows使用者可用WSL或是建一个linux的虚拟机
先开启一个c语言档
$ vim test.c
在档案内输入:
void set_to_87(int *p)
{
*p = 87;
}
gcc -Og -c test.c
objdump
去观看组合言(解读2进位的test.o,转换成文字)objdump -d test.o
输出:
test.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <set_to_87>:
0: c7 07 57 00 00 00 movl $0x57,(%rdi)
6: c3 retq
直接让gcc产生出组合语言:
gcc -Og -S test.c
这时会产生出test.s(文字档)
cat test.s
输出
.file "test.c"
.text
.globl set_to_87
.type set_to_87, @function
set_to_87:
.LFB0:
.cfi_startproc
movl $87, (%rdi)
ret
.cfi_endproc
.LFE0:
.size set_to_87, .-set_to_87
.ident "GCC: (Debian 10.2.1-6) 10.2.1 20210110"
.section .note.GNU-stack,"",@progbits
void set_to_87(int *p)
{
*p = 87;
}
test.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <set_to_87>:
0: c7 07 57 00 00 00 movl $0x57,(%rdi)
6: c3 retq
可以看到指令只有两个,这个functio被呼叫时,p
的值会放在register%rdi
里
movl $0x57,(%rdi)
就是把0x57(87)放到%rdi
所指向的记忆体位置的意思
retq
则是return
的意思
<<: 实施入侵检测系统以应对安全事件和基於生物识别的存取控制-纵深防御(Defense-in-depth)
Hashicorp Vault: Rate Limit 为了保护Vault server避免user...
哈罗 ~ 大家好 ~ 欢迎回来 ~ 相信征战职场的大家,一定会有个苦恼的问题,那就是每次老板签公文都...
坚持传教K-pop...就可以坚持每天解题?? Rotate String 题目连结:https:...
拍手换图案 ( 二代板 ) 教学原文参考:拍手换图案 ( V2 ) 这篇文章是针对 micro:bi...
0x1 Nonce 取得 Nonce 为每次发出请求API服务前必须取得的参数之一, 而这个是需要在...