Skip to content

想要hook的函数参数是引用类型,但参数类型的定义访问不到,该怎么写代理函数? #64

Answered by caikelun
flx413 asked this question in Q&A
Discussion options

You must be logged in to vote

C++引用的调用约定是通过指针传递的,所以可以定义为 void *soa。如果你在 proxy 函数中需要访问 soa 的数据成员,可以自己定一个 ScopedObjectAccess 结构体,参数顺序和类型需要和设备上系统库中的一样,也可以通过地址偏移直接访问,如果要做到不同安卓版本的兼容性,还需要针对不同安卓版本定义不同的 ScopedObjectAccess 结构体(或不同的地址偏移)。调试的方法:可以用 objdump / ida 对比看下 ThreadSuspendByPeerWarning 原函数和你的 proxy 函数分别编译后的汇编代码在处理入参时的区别。

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@flx413
Comment options

Answer selected by flx413
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants