Pythonban, vagy egyszerűen parseolható cmd utility-ben keresnék megoldást a következő feladatra.
Van egy nagy binárisom, lehet az library, futtatható fájl, maga a vmlinux is. Ebben szeretném megkeresni egyszerűen egy szombólum címét, pl. a func_d nevű függvény címét:
objdump --prefix-addresses --disassemble=func_d a.out
0000000000001169 <func_d> endbr64
000000000000116d <func_d+0x4> push %rbp
000000000000116e <func_d+0x5> mov %rsp,%rbp
0000000000001171 <func_d+0x8> lea 0xe8c(%rip),%rdi # 0000000000002004 <_IO_stdin_used+0x4>
0000000000001178 <func_d+0xf> callq 0000000000001060 <puts@plt>
000000000000117d <func_d+0x14> nop
000000000000117e <func_d+0x15> pop %rbp
000000000000117f <func_d+0x16> retq
Az után pedig szeretném valahogy kihalászni az offsetet, ahol már jól van beállítva a frame. A fenti példában ez a 0x8, ahol már a stack pointer be lett rakva base pointernek. Sajnos ez az offset amiket néztem függvények, azokban más és más, van ahol előtte még csinál pár másik utasítást is. Létezik erre valami egyszerű python lib, vagy jól paraméterezett util? Minél robosztusabb a megoldás annál jobb, végső esetben megpróbálom valahogy manuálisan megkeresni vagy kiszedni objdump kimenetéből ha valaki megerősít benne hogy nem lehet nagy baj belőle/nem lövöm lábon magam.
Előre is köszönöm!