MachOView 的体验不好

只有我自己觉得 MachOView 的体验不好吗?

  • 不能把文件拖动到里面.(被 Windows 惯坏了)
  • 其实可以分几种解析类型. 大文件分析时有时只想看个section 列表就行了. 还要继续解析很久…
  • class-dump 也可以集成进去
  • nm / lipo 等也可以集成进去嘛
  • 恢复符号表啥的,也可以嘛
  • 一键转 dylib 也可以嘛

哈!

2 个赞

自己写啊。我那个NyachOKit就是想填这个坑然而最近在研究psv

有这个想法。
上面这堆功能其实可以一个工具搞定的。

1 个赞

我原先的计划是搞一个支持MachO各段/LC,etc 序列化反序列化的库,然后基于这个库拆分/重组MachO

供参考

好。
先建好 repo,
计划半年

:smile:

我基础搭起来了。
C++巨神带带我啊1111
一堆seg还没处理就是了

LLVM的代码耦合度太高了我本来是想反序列化成LLVM自己的结构然后修改后直接从llvm输出的

我个人的想法是创建一个C++的核心跨平台静态库然后基于这个写Platform Specific的Wrapper/GUI

ADT要好好考虑。我这个可能要推翻重做。MachO的内部各个component之间互相牵扯贼复杂

还不知道啥是ADT
先从这个简单的搞起 http://lowlevelbits.org/parsing-mach-o-files/
先各搞各的吧,看进展

GUI好搞,Qt就足够了

我熟悉结构。
ADT是指抽象数据类型。 Abstract Data Type
简单的就那篇文章非常简单去实现。
我们要做的需要完整的Parse MachO的每一个byte,处理好所有的依赖。

我不建议无脑开工

这个坑MachOView都没做完。

一个比较可行的方案是在转换过程中丢弃所有不必要的细节,由Builder来处理这些细节。比如各类文件offset会随着MachO 的操作而变动

https://en.m.wikipedia.org/wiki/Abstract_data_type

现有的环境同类工具ADT 据我所知应该都是一棵树

完整ADT Parse出来了剩下所有的操作都可以基于ADT。一个实现的很优雅的ADT结构可以提供一些现有的工具不可能实现的特性

或者去读llvm/Darwin CCTools的代码。然后基于那个设计我们的ADT,这样就有现成的而且非常robust的MachOBuilder

MachOView解析速度的问题理论上应该大多数来自嵌入的capstone engine的开销

好。确实不能无脑开工。
要是弄明白这堆东西,明年也开不了工了……
不过先迈出第一步,不一定要这么强大,先从简单的开始。
我先模仿MachOView,至少不能总崩溃、或者提供几个简单的选项。

我研究下。

2016.12.27
要实现跨平台,无需RTTI (因为要在内核里用)
还要确保安全性

这他妈简直是天坑

v0.1 Alpha 发布啦

2 个赞