好像百度有个C的程序,但是不怎么完善。我拿python重构了一遍,基本上能进行自动混淆。可能分类的地方处理的不好,有错误可以根据日志调。https://github.com/ch4r04/oc-obfuscator
不需要。直接利用Clang的前端来做ast分析一个很简单的例子可以参见我很久之前写的PoC: https://github.com/Naville/ClangObfuscator/blob/master/ObjcObfuscator.cpp
个人现在的做法是编译之后直接修改MachO , 因为AST不可变所以通过直接修改AST来实现并不现实,理论上可以通过LLVM IR层的操作达到同样效果,未测试
EDIT: 这是个Clang Plugin,独立使用的话需要稍微改动下
膜两位大神。
我还是那句话。搞这行的知识面越广越好。除非人生目标只有微信重签名
btw IR层没记错的话每个class/ref都是一个全局变量,没记错的话。我没折腾过这个,就是给你提供个思路
然后visitor里找到并且修改这个全局变量就行了
然后llvm ir层有些高级混淆是有局限的,因为ir的性能设计问题,所以不可避免的某个应用场景需要Clang Rewriter
然后Clang也有python binding来着
好。再膜。
抵挡这类混淆的方法也很简单,就是我很久之前提到过的利用Method Signature.property/method的属性和参数类型返回值类的方法数量
开源库还可以通过分析方法的xref来判断
tl;dr: 单纯的文本混淆毫无意义
膜,张总。
嗯试验了一下。c/c++可以这么玩儿。oc还没实验。不太清楚 oc 的ir层selector under the hood怎么实现的
继续膜
来一波 6666
地表最强,膜拜