只有我自己觉得 MachOView 的体验不好吗?
- 不能把文件拖动到里面.(被 Windows 惯坏了)
- 其实可以分几种解析类型. 大文件分析时有时只想看个section 列表就行了. 还要继续解析很久…
- class-dump 也可以集成进去
- nm / lipo 等也可以集成进去嘛
- 恢复符号表啥的,也可以嘛
- 一键转 dylib 也可以嘛
哈!
只有我自己觉得 MachOView 的体验不好吗?
哈!
自己写啊。我那个NyachOKit就是想填这个坑然而最近在研究psv
有这个想法。
上面这堆功能其实可以一个工具搞定的。
我原先的计划是搞一个支持MachO各段/LC,etc 序列化反序列化的库,然后基于这个库拆分/重组MachO
供参考
好。
先建好 repo,
计划半年
我基础搭起来了。
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 发布啦
膜