type
status
date
slug
summary
tags
category
icon
password
一些软件的逆向
1. NotchNook
从错误原因入手,搜索激活失败时候的字符串
License check failed:
交叉引用往上找

b.ne
nop掉即可
完成后需要用证书名字重新签名
sudo codesign -s 39FFCA4D449F00428F0BACD52881F7E1B060893A --deep --force path_to_.app
然后,
tccutil reset Accessibility lo.cafe.NotchNook
tccutil reset Calendar lo.cafe.NotchNook
重设辅助功能权限、日历权限,以免不停弹窗。

2. CloudMounter
这个软件判断是否激活用的是来自服务器的文件,服务器用私钥加密license后,base64编码,然后发给客户端。客户端用公钥进行解密。这样没有办法伪造服务器请求了,只能从客户端下手。

找上面这个函数,patch成mov x0,1 ret即可。
这个函数的v8值来自调用macactivator::activate方法。不能patch这个方法ret 0,不然会莫名其妙的失败。
反调试在start函数nop掉一个ptrace一个signal直接过了


3. Airbuddy
搜这个哈希值或者Buddy Software LTD
这是初始化netclient的东西,把调用这个函数的地方直接nop掉,不会检查激活了。

第二种方法更为完美

在主程序搜索,String.locLicenseStateNotActivated.unsafeMutableAddressor
找交叉引用,到B.NE改为B即可。

因为这里是
为了pass是否被patch的检测,不能patch paddle那个framework,因为不好patch。
主程序是helper,helper里面还检测了frida,一些字符串被加密
解密脚本,简单的移位密码。
除此之外,它还会检查代码签名是否合法,在core、helper、主程序搜索SecCode开头的函数,找调用。有一些需要patch成ret1,有一些ret0,即可。
4. AlDente
也是用的paddle,主程序找这个函数。来自搜索字符串
PADDLE ACTIVATION STATE: verified
让B.GT直接跳转到这里的ADRL就行了

5.iStat Menu
这一个检查license的函数,比如字符串time,license。调用者是BjangoLicensingHelper instantWithLicenseKey:info:

让这个函数ret1就行了。
如果还不够,就把下面这个函数,nop掉两个跳转,直接进入验证成功。

6. MUMU模拟器
切记只能对可执行文件自己签名,因为他会检查包的签名TeamID必须不变,哈希值必须对应。尝试了改哈希,没有成功,疑似在很多位置检查了或者在其他模块里。
对于UI,搜索未激活,往上找交叉引用,在这里,有一个等于1,patch掉。这里给改成赋值为一了,以期会影响其他位置,但似乎看来并不会。

目前效果。

进一步发现mumu处理user这一结构体的地方。
搜这个常量0xFFFFFFF4FFE459EA

或者特征
F4 03 01 AA ? ? ? F9 ? ? ? F8 E0 03 1C AA E1 03 1B AA 00 01 3F D6 ? ? ? F8 E0 03 1A AA ? ? ? 94 E0 03 14 AA

最后拷贝的地方

动态调试看到v27结构体元数据。

所以只需要修改payedStatus就行了。
找到获取他的地方。步骤是,jsondecode一下,如果获取成功,就写入,否则跳到别的位置。直接把cbz改成
mov x0,1即可。

注意注意,以上修改的是cbnz,直接把cbnz指令覆盖掉即可。但对于currentdevicestatus,这里是cbz

还是x0是结果,而不是x21或x22,不要被迷惑
直接mov x0,1, b xxx即可。
实测mov x0,0会触发设备上限而不允许使用。
同时注意,里面的mumu安卓设备的可执行文件,要用相同的方式修改一次。
软件签名
尽管已经patch过start内的验签函数,发现还是启动不了,或许真的是虚拟化的错误。警告查看qemu可执行文件和日志,发现错误原因HV_DENINED.

经过分析后,发现应用重新签名之后hv_vcpu_get_sys_reg等一系列虚拟化的函数就不好用了。问GPT,是签名中的entitlements规定了权限,重新签名也必须附带才行。
macOS 提供虚拟化能力的 Hypervisor Framework 是通过一套用户态 API(如
hv_vcpu_*
, hv_vm_*
)对底层硬件虚拟化(VT-x / Apple Silicon 的 Hypervisor)进行抽象的。在 macOS 上,出于安全考虑,某些敏感 API 的可用性受代码签名和 entitlements(权限声明)影响。
首先提取出原文件的entitlements.plist
提取完成后内容如下
然后再重新签名即可。
这样签。即便是notsign,也不会影响什么了

7. XMIND
解包asar。从 升级至 Pro 字符串,找英文字符串,进一步找到这个js,判断是否Valid,修改为始终是Valid。

其次,在main.js进行相同操作,即可。


所有功能已解锁。

8.010Editor
搜Until找激活后的字符串改一下就行了
9.Crossover
daysleft mov x0, 1000 ret无限试用
isdemo mov x0, 0 ret去除弹窗

10. downie4
CMLicensing.numberOfDaysRemaining.getter()
patch成return 15.
- Author:Lynnette177
- URL:https://next.lynnette.uk/article/1d7b7ead-de81-8077-a518-fdbfa34942c4
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!