我只想找出所有pthread_attr_getstack
使用ida pro调用标准库函数的位置。.plt 中有一个条目:
.plt:00015894 ; =============== S U B R O U T I N E =======================================
.plt:00015894
.plt:00015894 ; Attributes: thunk
.plt:00015894
.plt:00015894 ; int pthread_attr_getstack(const pthread_attr_t *attr, void **stackaddr, size_t *stacksize)
.plt:00015894 pthread_attr_getstack
.plt:00015894 ADRL R12, 0x3AD89C
.plt:0001589C LDR PC, [R12,#(pthread_attr_getstack_ptr - 0x3AD89C)]! ; __imp_pthread_attr_getstack
.plt:0001589C ; End of function pthread_attr_getstack
如果我双击__imp_pthread_attr_getstack
,它将转到:
extern:003D8520 ; int pthread_attr_getstack(const pthread_attr_t *attr, void **stackaddr, size_t *stacksize)
extern:003D8520 IMPORT __imp_pthread_attr_getstack
extern:003D8520 ; CODE XREF: pthread_attr_getstack+8↑j
extern:003D8520 ; DATA XREF: .got:pthread_attr_getstack_ptr↑o
如果我双击pthread_attr_getstack+8↑j
,它将转到上面的 .plt 条目,如果我双击.got:pthread_attr_getstack_ptr↑o
,它将转到一个 .got 条目:
.got:003ADD8C pthread_attr_getstack_ptr DCD __imp_pthread_attr_getstack
.got:003ADD8C ; DATA XREF: pthread_attr_getstack+8↑r
如果我双击pthread_attr_getstack+8↑r
.got 条目中的 ,它也会转到上面的 .plt 条目。这是否意味着没有代码调用pthread_attr_getstack
?如果答案是否定的,那么如何找出所有呼叫的位置pthread_attr_getstack
?顺便说一句,这是名为 libmono.so 的精灵,我想反转它。
需要强调的一点是,libmono.so elf 文件非常喜欢加密,也就是说libmono.so 中可能存在大量混淆代码。