Versions 2.4.2 MacOS分析

发布时间 2023-04-16 21:44:32作者: bodong

      这是MacOS下的一款SVN客户端。由于试用版和正式版并没有什么明显的区别,所以,如果你的使用时间很长很长,那么跟正式版也没啥区别了,这样也算是最简单的一个突破口了。

     直接在Hopper Disassembly打开,直接查找label:604800 ,这是一个星期的总秒数,也是默认的试用时长,因此你把这个数值改大的话,那不就跟正式版差不多了吗。so,调整到Hex模式,直接编辑数据:

    604800    : 0x4122750000000000
    604800000 : 0x41c2064200000000

     下面这个数据大约是19年的秒数,够用了吧?

     接下来需要找到显示提醒“注册”的UI的代码,将其屏蔽,这很容易,在函数EZSMainWindowController p_setRegistrationButtonVisible中,将:

     

cbz loc_10001a648

     改成:

b loc_10001a648

      这样提醒按钮就消失了。

     最后还有一个问题是无法保存密码,原因在于在设置钥匙串时,厂商为了在其所有产品间共享钥匙串,设置一些额外的参数,这些参数依赖了数字签名,因此我们需要取消这个能力,否则钥匙串时无法添加的。当然,我们修改后,我们添加的钥匙串就不能跟其它app共享了。这两个属性是:

    // https://opensource.apple.com/source/Security/Security-57740.1.18/OSX/libsecurity_keychain/lib/SecItemConstants.c    
    kSecAttrNoLegacy = "nleg"
    kSecAttrSynchronizable = "sync"

    如何删除这些配置呢:

1. 在标签(labels)中搜索kSecAttrSynchronizable,找到所有引用它的地方把所有的:

[ xxx setObject: yyy forKeyedSubscript: **_kSecAttrSynchronizable]

    改成nop

2.同理搜索kSecUseDataProtectionKeychain,把所有将其添加到dict中的代码设置成nop。

    这样基本上就完成了,只是此时如果你查看“关于”菜单,还是会显示你的app未注册,这并不影响使用,但是如果你觉得很碍眼的话,也可以直接搜索该字符串,找到字符串位置,调整到Hex模式,直接把第一个字节改成0即可。

保存,完事。