Rust 吐槽
此文章可能引起不适,如果有 Rust 小鬼路过千万千万千万不要试图进来。
此文章可能引起不适,如果有 Rust 小鬼路过千万千万千万不要试图进来。
此文可能引起不适,网易雷火的狗千万别点进来
此文可能引起不适,上城废物/导演养的狗/双城吹子 千万别点进来
此文章可能引起不适,如果有路过的只写过 C++ 的脑残傻逼别点进来。
以 SpringBoardServices
为例。
这篇文章只是记录我在编写程序时遇到问题的解决过程,文章最下方会放代码链接。
!!!注意,这篇文章中提到的性能优化方式基本仅适用于指针链扫描,不适用其它业务。
!!!这篇文章并不是接着上一篇文章写的,但有很多关联,不过很多代码,逻辑,已经发生变化。
在互联网找了很多相关的工具,可惜基本全都推荐用frida,其它的似乎没有一个能用的,除了不支持就是注入后程序崩溃,其中包括但不限于:
https://github.com/scen/osxinj
https://gist.github.com/vocaeq/fbac63d5d36bc6e1d6d99df9c92f75dc
…
但是frida我从来没有用过,感觉又脏又重,似乎还要依赖 ptrace
,并且看到其它人基于它编写的工具都动不动几十MB。
ASLR导致程序内存地址在启动程序时始终不同。所谓的“静态”地址是相对于程序代码(BinaryFile)的地址。有了静态地址,一旦找到它,你就可以稳定计算出这个地址,因为加载程序(BinaryFile)的地址很容易找到。不幸的是,并非所有感兴趣的内存都是“静态的”,因为这些要么需要代码黑客(通常称为ASM HACK),要么需要指针链(找到此链的过程通常被称为指针搜索)。