App运行时调用的私有库framework里的symbol,该symbol的运行时的地址是如何计算出来的呢

举个栗子
lldb断点了springboard FBWorkspaceLogCommon这个函数是/System/Library/PrivateFrameworks/FrontBoard.framework/FrontBoard框架里面的C函数,目前运行时bl跳转的地址是0x1006469c0,此地址就是FBWorkspaceLogCommon的实现地址,那么问题就是这个0x1006469c0是如何生成计算的呢?


用IDA分析SpringBoard的可执行文件,import模块中_FBWorkspaceLogCommon的地址是00000001009B10B0

不是很清楚你想问什么,那个symbol的运行时地址是dyld去填充的

import模块中_FBWorkspaceLogCommon的地址是00000001009B10B0

你去看import表里面的地址和实际图中的运行时地址这两个没啥关系。

关于macho动态链接或者插桩相关的,可以看我以前分析得一个例子

http://4ch12dy.site/2017/04/10/macho-dyld-link/macho-dyld-link/

1 个赞

跳到函数的桩stub上,运行时bind目标函数。

好的 感谢大佬

嗯嗯 学习了