mac逆向-窗口管理Divvy
Divvy个人感觉是最棒的一款窗口管理软件了~, 但是它动不动就会提示个五秒的窗口让你注册License,最近小试牛刀完IOSApp, 它给我提供一个入门的机会…
工具准备

mac上的逆向其实比较省, 你不需要额外的砸壳,直接就能能从包里面拿到执行文件.
class-dump 头文件.
用Hopper打开,反汇编一下方便待会查看.
然后神器依旧是monkeyDev, 它帮我们省去注入.dylib 和 重签名等”繁杂步骤”~
入口分析
本来大多数的步骤一定是从view开始, 有一款神器就[interface inspector], 但总会报错一些乱七八糟的问题,暂时还没调好, 于是乎我粗糙的从hopper搜索”Register”,(如果一开始搜的是首字母小写的话可能不会饶那么弯…),结果是这样子的,

也查到其他无关的,最后确定就是这里,伪代码和汇编看并没有看出什么头绪,于是乎先看看有没有调用这里这个类相关.
追踪前,这里有一款强大的工具说下:
frida-trace: frida-trace -m “-[PTHotKeyCenter _]” Divvy

用法是frida-trace -m “<+类方法/-实例方法>[类名 方法名<_代表全部>]”
执行后它会自动帮你生成跟踪的js文件,然后监听所指定的方法.
一开始觉得吧, PTHotKeyCenter不像是很关键的类, 也是没怎么写Mac的App的原因,但还是监听了一下:

我尝试打开它,然后随便输入一串号码注册, 发现他怎么整都只打印这些, 而且就在我使用快捷键的时候~
随意也明白了,这就是”热键”,仅此而已…
动态调试
进行到这里其实是无头绪的, 然后想着是从mondev进行动态调试,看看能不能从调用栈看看这里的情况.
想着hook哪个方法的时候,脑子冒个灵光,想到了这个view的展示, 我就输入”)show”看看有没有什么可疑的,结果:
十分意外第一个方法,很明显这个方法应该是展示注册这个View的,而且还待会参数时间.
如果是这个方法果然没错, 那么我可能得到,一是找不到更好的hook方法,duration的参数改为最少的时间,或者可以尝试return这部展示的操作. 其次先Hook下看看调用栈,是什么决定它展示也是可以的, 于是开始我的Hook代码.
MonkeyDev默认是subStrate的hook方法代码, 当然也是可以替换成其它的(按道理当然可以~):
这是一开始的代码:

但是允许会报错,其中需要修改:
static void newHookFunc(AppController* self,SEL _cmd,id array){ }
//replacet to | //下面
// 需要指明多少个参数, 不知道参数类型就使用泛型id
static void newHookFunc(AppController* self,SEL _cmd,id arg1, id arg2){ }
build一下且进入调试后, 用时在static void newHookFunc(AppController* self,SEL _cmd,id arg1, id arg2){ 这里Xcode断点一下:
但如果直接执行还需要做两部: