MACAPP-DIVVY破解

    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断点一下:
    但如果直接执行还需要做两部:

    Dec 3, 2017
    reverseEngineering