如何恢复被抹除的数据

如题,最近在使用class-dump的时候,发现很多方法无法被正常导出,经过研究发现是有些数据被抹除了(或者说抽取?),对应ida的__objc2_class_ro结构体


但当我使用frida的时候,依然能够从中获取到一些方法

xxxxxxxx 数字布丁

差不多,字节系的,现在我只在他家看到过这种。现在我只有2种思路:

  1. 就像你说的动态dump,但是需要处理typeEncoding好麻烦(class-dump的源码抄不动)
  2. 在运行中把_D_XXX的段数据dump下来,然后回填到可执行文件中(我比较倾向于这种,但是我不知道是否能够实现)
    image

恢复的成本好像还不如直接动态分析,它里面有些地址都是运行时才给写进去,还得计算,还有些自定义奇奇怪怪的section,恢复挺累的

那就只能动态dump喽,需要处理typeEncoding