Open tamemo99 opened 4 weeks ago
We definitely have to split this task up a lot.
For research:
Then the actual implementation are multiple parts as well:
The implementation of the paper gets symbols from shared libraries (.so
) files and .oat
files.
The bpfroid repository (from the paper) has shell scripts:
Afterwards we have to decide whether we want to offer the capabilities for finding available uprobe entries while the loader is running, or whether that happens as part of generating a configuration.
I suggest:
We should start with 1 and defer 2 and 3 to new tickets.
In the BPFroid repo the mentioned scripts for searching symbols are implemented in go in the tracee.go
file (https://github.com/yanivagman/BPFroid/tree/main/tracee/tracee.go) in the function initLibBases
.
We could follow that. It works as follows:
But with that code - afaik - BPFroid only traces standard-lib methods, which are included in every process. So if we wanted to trace arbitrary methods which aren't included by default, we would have to search every $PID in /proc/$PID/maps
We should just start with standard-lib methods and get that working. Afterward we expand to more, but as part of new tickets, so the work is better split up and we have continuous progress.
Schwierigkeit: methoden finden bpfdroid paper lesen: .oat and .so files, pages 7-9
Edit by @fhilgers:
As a PO I want to trace arbitrary function calls from programs running on the device.
Acceptance criteria:
Further tickets: