Versions 2.4.2 MacOS漏洞分析
这是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即可。
保存,完事。