GEF
已经安装进容器:
- GitHub - hugsy/gef: GEF - GDB Enhanced Features for exploit devs & reversers
- 参考文档: docker的gef容器 | 阿男的小窝
$ docker run -it weli/docker-assembly-gef-pyenv bash
- 参考文档: 搭建一个汇编开发学习用的容器
在容器当中使用gdb
调试代码需要使用privileged mode
:
$ docker run -it --privileged weli/docker-assembly-gef-pyenv bash
- 参考文档: gdb在docker容器里面的使用
$ pwd
/root
$ ls
foo.asm
$ cat foo.asm
global _start
_start:
mov eax, 1
mov ebx, 5
int 0x80
$ yasm -f elf64 -g dwarf2 -l foo.lst foo.asm
$ ls
foo.asm foo.lst foo.o
$ ld -o foo foo.o
$ ls foo
foo
$ ./foo
$ echo $?
5
注意:在容器当中使用gdb调试代码需要使用privileged mode
,参见上文。
$ pwd
/root
$ ls
foo foo.asm foo.lst foo.o
bash-5.0# gdb -q foo
GEF for linux ready, type `gef' to start, `gef config' to configure
80 commands loaded for GDB 8.3 using Python engine 3.7
Reading symbols from foo...
gef➤ list
1 global _start
2 _start:
3 mov eax, 1
4 mov ebx, 5
5 int 0x80
6
gef➤
截图:
$ pwd
/root
$ ls asm.c
asm.c
$ cat asm.c
#include <stdio.h>
int main(void)
{
int foo = 10, bar = 15;
__asm__ __volatile__("addl %%ebx,%%eax"
:"=a"(foo)
:"a"(foo), "b"(bar)
);
printf("foo+bar=%d\n", foo);
return 0;
}
$ cc -g asm.c -o asm
$ ls asm
asm
$ ./asm
foo+bar=25