pie
Command pie
The pie command is handy when working with position-independent executables. At runtime, it can
automatically resolve addresses for breakpoints that are not static.
Note that you need to use the entire pie command series to support PIE breakpoints, especially
the "pie run commands", like pie attach, pie run, etc.
pie breakpoint command
This command sets a new PIE breakpoint. It can be used like the normal breakpoint command in gdb.
The argument for the command is the offset from the base address or a symbol. The breakpoints will
not be set immediately after this command. Instead, it will be set when you use pie attach, pie
run or pie remote to actually attach to a process, so it can resolve the right base address.
Usage:
gef➤ pie breakpoint OFFSET
pie info command
Since a PIE breakpoint is not a real breakpoint, this command provides a way to observe the state of all PIE breakpoints.
This works just like info breakpoint in gdb.
gef➤ pie info
VNum Num Addr
1 N/A 0xdeadbeef
VNum stands for virtual number and is used to enumerate the PIE breakpoints. Num is the number of the associated real breakpoints at runtime in GDB.
You can omit the VNum argument to get info on all PIE breakpoints.
Usage:
gef➤ pie info [VNum]
pie delete command
This command deletes a PIE breakpoint given its VNum.
Usage:
gef➤ pie delete [VNum]
pie attach command
This command behaves like GDB's attach command. Always use this command instead of attach if you
have PIE breakpoints. This will convert the PIE breakpoints to real breakpoints at runtime.
The usage is just the same as attach.
pie remote command
This command behaves like GDB's remote command. Always use this command instead of remote if you
have PIE breakpoints. Behind the scenes this will connect to the remote target using gef remote
and then convert the PIE breakpoints to real breakpoints at runtime.
The usage is just the same as remote.
pie run command
This command behaves like GDB's run command. Always use this command instead of run if you have
PIE breakpoints. This will convert the PIE breakpoints to real breakpoints at runtime.
The usage is just the same as run.