脚本工具:基于lldb的trace脚本(新增<block级trace命令>,辅助算法分析,过混淆等)

block级trace命令研发原因和相关介绍:

1,在trace某些app的时候,发现里面的混淆代码很多都是可执行的,而且有很多没什么效果的大循环。从而 inst级 trace 的性能大大的 降低了。

2,考虑到 function 级 trace 的高效率。结合 function 级 trace 的高效率,以及 inst 级 trace 高代码完整性。决定从 block着手,弄一个 block 级 trace。

3,目前 trace 某app的大函数,效果还可以。

相关更新内容:

同时把 inst 级的 bug 修复了下。<a,函数结束位置的断点的修复;b,打印msg_send的相关信息,导致写文本出bug,暂时把这一块注释了。>

注 :trace某大型app,跑了35w+行… 基本达到预期

trace_b 输出如下:

大量的loop 都这样pass掉了:

注 :
1,loop 代码其实只跑了2次。第二次运行的时候,直接删掉循环中的断点。
2,任何循环都只跑了2次<block级的,不是逐条汇编跑的>
3,同样默认暂停其他所有线程。如果遇到线程同步锁的,需要第二次trace,trace的起始位置在跳出同步锁的位置。