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
.