( kecske | 2020. 07. 28., k – 14:11 )

Igy mar vilagos. Mostansag nem tul sokat linuxozok, ugyhogy uprobe-hoz nem ertek, de igy felkerult meg egy dolog a listamra. :-)

Nekem osszessegeben az jon le, hogy valami olyan megoldas lenne a legjobb, amit programba tudsz integralni es nem hivogatsz kulso scriptet/stb, de javits ki ha tevednek. Ezert arra tudok gondolni, hogy Zydis vagy valami hasonlo libbel megkeresheted a stack frame-et beallito utasitasokat, esetleg csak a byte pattern-t, a kezdocimhez kepest.  Ha mas nem akkor marad az objdump hivogatasa es parsolas. Szerk.: vagy mondjuk a fentebb emlitett radare2-vel kommunikalsz.

En pl. valami olyasmit probalnek, hogy az elso 10-20 utasitast nezze meg, hogy ott van-e frame setup. Viszont annyibol problemas lehet ez, hogy bizonyos compiler opcioknal (-fomit-frame-pointer) nem lesz beallitva a stack.

Ami erre eleg jo heurisztika lehet, hogy ha kereses kozben RET/CALL-t talal akkor ott meg is allhat rogton, nem kell vegignezni az elso N utasitast. Mivel RET-nel biztosan nem tortent semmilyen setup, pl. nagyon rovid fuggvenyek eseteben. CALL eseten pedig valoszinuleg mar tovabbhaladt es nem is lesz. JMP-t lekezelni nehez, de altalaban stack frame setup elott nem szokott lenni ugras, de ha megis van, akkor emiatt nem biztos, hogy jol le fogja kezelni az adott fuggvenyt.

Szerintem a legtisztabb az lenne, hogy fogsz 10+ fuggvenyt es leteszteled mindegyiken: kigeneralni az offset tablazatot es hivogatni a uprobe-ot.