13、符号脱离和恢复

2021-05-19  本文已影响0人  Jax_YD

我们在日常的开发的过程中,Xcode默认在发布的时候会帮我们脱去符号。当然,这里脱去的是除了间接符号表以外的其他符号。我们在Xcode中的设置如下:

image

这个时候,就要请出我们今天第一个要介绍的逆向工具restore-symbol来帮我们恢复符号。

符号表的恢复

/// 获取类
NSClassFromString(<#NSString * _Nonnull aClassName#>)
/// 获取方法
@selector(<#selector#>)

这些不都是通过字符串去获取对应的方法和类吗!!!
对应的在可执行文件中的位置如下:

image
image

到这里我想大家已经能够猜想到符号表的恢复的理论基础是什么了。如果我们在APP发布的时候进行了符号脱离(一般情况这样做是为了减少包的大小),那我们我们也可以通过其他的表,将符号表里面的内容恢复。


此时我们再通过MachOView来查看一下SymbolDemo2:

image
可以看到之前别脱离的符号已经恢复。

这里有一个知识点大家要注意,这样的符号表的恢复只能去恢复OC的符号,C语言的方法是恢复的(也可以说静态方法无法恢复)。因为这是建立在Runtime的基础上的。
关于静态语言的HOOK,可以看12、HOOK原理(下)--- InlineHook这篇文章。

上一篇下一篇

猜你喜欢

热点阅读