吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10144|回复: 83
收起左侧

[MacOS逆向] MacOS - 某AllInOne开发小工具DevUtils 不完美逆向分析

  [复制链接]
Vvvvvoid 发表于 2022-8-15 23:38
本帖最后由 Vvvvvoid 于 2022-9-5 14:38 编辑

前言

偶然发现一块开源的 MacOS APP, 适合开发用; 功能齐全;
开源版本编译了下, 发现跟 Release 发布版本差别很大, 功能也差很多 ; 奈何 买不起付费版,于是想着简单分析分析..

软件功能介绍

  - Unix 时间转换器
  - URL编码器/解码器
  - JSON Formatter/Validator
  - JWT调试器
  - Base64编码/解码器
  - 查询字符串解析器
  - HTML实体编码器/解码器
  - 反斜杠 Escaper/Unescaper
  - UUID生成器/解码器
  - HTML预览
  - 文本差异检查器

  • ..等 42 个功能

Untitled1 (1).gif

环境信息

DevUtils 官方下载地址:https://devutils.com/
当前分析版本号 : 1.15(132D)

  • IDAFree
  • HopperDemo

分析 1 : 基于About页面

打开软化后, 可以发现 只有基本的俩个功能能用;
其他功能都需要付费才行;
并且付费功能的页面默认是只读状态, 修改就会弹窗, 如下图

0000.png

关于 页面有 license 信息; 我们先从这里入手看看;

1.png

拖入 IDA 后, 搜索下关键字, 如下

还有意外收获, 关键字下方就是认证成功的? 难道这次轻松秒杀?

license2.png

X 一下, 查看引用 ; 发现这三个 字符串 都是在同一个引用链路里的; 这就好办了呢;

license3.png

在想要的 认证成功 这个点开始, 往前一直 X, X一次 下一个断点 , 直接 X 到函数头为之 ; X完之后 F9运行 ;

程序运行之后, 点 Refresh 然后段下来了 ; 我们按照我们 前面 X 好的 路线来走 ;[u] 走不通就改跳转;

断点下了十多个, 实际上只改了一处跳...   Whatever ..

看看效果 ,注册成功了 ;

4.png

然后满怀信心的 点付费功能使用的时候, 还是不能用. 还是弹窗+付费; ...
而且比较麻烦的是, 这个弹窗的字符串是搜不到的 ..

分析 2 : 基于窗口事件

一筹莫展的时候, 想到了, 能不能试试 搜索 checkLicense / validationLicense 之类的方法; 忙乎了半天 然而 没什么成效;
突然之间, 偶然看到了 这么一个东西 ;

我们开发GUI 程序的时候, 通常会给窗口控件绑定些函数, 比如 clickEvent/doubleClickEvent/changeEvent , 恰好, 这个软件弹框的效果也是类似于 监听 文本框 内容改变;

然后我们找到了如下 函数列表;

textdidchange1.png

看来是每一个功能窗口, 都有绑定一个监听函数 ; 我们选择一个 MarkDown 格式化的 这个选项跟踪下试试;

event_fun_head.png

在函数头,下断点; 之后随便输入点东西; 然后一步一步跟;
跟踪的过程就不多说了, 其实就是一个call 一个 call 的试 ;[u] 判断哪个 call 是 弹框的;
最后 定位到了 这里 ; (实际上分析的过程痛苦且漫长, 逆向这个东西嘛 , 耐心还是要有多)

showDiaLog.png

就这么俩句 本来以为 改一下上面的跳转 绕过弹框 就解决了;
然而改完后发现, 跳转是没有了, 但是输入的文本也没有了...... 搞过头了 ;
我想我们一定是错过了些什么;

我们回到函数头看看,
看到一个可疑的 标记 ; OBJCIVAR$__TtC8DevUtils18ToolViewController_locked

lock.png

看着像是一个全局变量+标记, 并且下面紧跟着有一个判断的大跳;

lock_jmp.png

右面那根粗粗的绿色的就是它没有达到的的大跳,
我们改一下这个 跳试试

000000010003C973 jnz     short loc_10003C9AA
000000010003C973 jz     short loc_10003C9AA

改完之后, 再试试, 居然成功了;
好家伙, 不用license 不用 validation 用 lock。; 又学会一个关键字;

之后 我们 X 一个 Lock 这个地址; 看看哪些引用 ; 之后将引用这个变量的后面的一句跳转全部改成 jmp , 完事

lock_x.png

具体修改如下:

000000010003C13F    0x3 0F 85 E3    E9 E4 00
000000010003C922    0x4 0F 85 62 02     E9 63 02 00
000000010003CBB4    0x3 0F 85 A4    E9 A5 00
000000010003D204    0x3 0F 85 E8    E9 E9 00

改完之后效果就达成了;如下图

success.png

好了, 至此 就能 能快乐的学习了 !!

后记

不完美的逆向分析;
虽然使用不影响, 但是 界面上其实还是有锁的icon图标 ,还是有 unlicense 按钮 ;  有大佬 在看看吧, 我要睡了

Arm M1 本 的 IDA  是分析不了的,应该是因为 free 版的 IDA 不支持 arm  
所以本次分析全是在 inter 的 x86 下 运行的,
修改完后 也可以在 m1 上运行, 但是需要配置强制用 inter 来解释


改完需要重新签名
如果打不开的话 , 关闭 Mac SIP 并且 允许任意来源

arm.png

仅供研究学习使用,请勿用于非法用途
注:若转载请注明来源(本贴地址)与作者信息。

补充 (2021-08-20)

又继续更了下, 算是实现完美爆破了, DEMO 按钮没有了, lock 图标也没有了, 双字节即可爆破...;
就不详细说过程了, 看看有时间的话 把算法整整吧
修改如下 (可以恢复掉上面之前所有的修改):

双字节功能爆破:
每个菜单下都维护一个变量 freeTrial 来 标记该项功能是收费还是免费的,
正常来说前俩个功能为1 免费, 其余的都是0 收费
我们强制将所有的赋值为 1 , 即可免费所有 (我这里使用了 mov 指令来赋值, 改成用 or 按位或指令 应该也是可以的)
000000010004E5DE        and     al,1     >     mov     al, 1
000000010004E5DE        0x1        24         B0

想去掉 unlicense 按钮的话,如下:
00000001000F58A5    0x2 75 66   90 90

想改版权信息的话, 如下:
000000010005836F    0x1 84  85
00000001000584AD    0x6 0F 85 B5 08 00 00   90 90 90 90 90 90
00000001000584BA    0x6 0F 8C FA 00 00 00   90 90 90 90 90 90
0000000100058BDB    0x2 75 0F   90 90
0000000100058BE0    0x2 75 0A   90 90
00000001003B70D0

最终效果如图:


bea.png

免费评分

参与人数 26吾爱币 +35 热心值 +24 收起 理由
kanacuul + 1 + 1 用心讨论,共获提升!
clarkyu + 1 + 1 谢谢@Thanks!
uzcool + 3 + 1 热心回复!
sam喵喵 + 3 + 1 大佬V5
笙若 + 1 + 1 谢谢@Thanks!
腰围两尺99 + 1 + 1 我很赞同!
ehum0923 + 1 + 1 谢谢@Thanks!
gaffey + 1 + 1 谢谢@Thanks!
see1 + 1 + 1 谢谢@Thanks!
sharenle + 1 + 1 谢谢@Thanks!
vans4u1 + 1 + 1 用心讨论,共获提升!
13507520538 + 1 热心回复!
timeslover + 2 我很赞同!
eec + 1 + 1 用心讨论,共获提升!
lordship + 1 + 1 用心讨论,共获提升!
elevo + 1 + 1 热心回复!
gz7uuuuuuuuu + 1 + 1 大佬能不能分享下破解版本?
rebirthboy + 1 我很赞同!
r2df + 1 + 1 热心回复!
zjf123ww + 1 + 1 windows有没有类似的软件,好实用的东西
sky0077 + 1 + 1 谢谢@Thanks!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
heshande52pojie + 1 热心回复!
crazycannon + 1 + 1 谢谢@Thanks!
monk3435 + 1 + 1 用心讨论,共获提升!
pdc9911 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

eec 发表于 2022-8-18 20:22
本帖最后由 eec 于 2022-8-18 20:40 编辑

由于楼主已经说明了相关需要修改的地方,那么ARM的代码可以直接静态修改(我这边在windows下用IDA7.5打开):
01.png
在ARM代码块中搜索字符串:_TtC8DevUtils18ToolViewController
02.png
然后查找所有引用就能发现并定位:

03.png
04.png
05.png
那么我们来对比下x86和ARM引用的此Locked代码:
06.png

跳转第一条后对比:
07.png

那么ARM修改思路就是把BNE(对应JNZ)换成BEQ(对应JZ)即可,那么用在线ARM汇编转机器码来看看:
08.png

所以此处最终代码为:
_text:0000000100033238 61 07 00 54     B.NE   loc_100033324   ->  60 07 00 54     B.EQ   loc_100033324
(汇编:BEQ 236  机器码:60 07 00 54)
其他同理,我就不再演示,全部修改完自签名即可运行

免费评分

参与人数 1热心值 +1 收起 理由
sam喵喵 + 1 热心回复!

查看全部评分

 楼主| Vvvvvoid 发表于 2022-9-4 13:10
本帖最后由 Vvvvvoid 于 2022-9-14 09:42 编辑
gz7uuuuuuuuu 发表于 2022-9-3 23:51
大佬 这个有办法解决吗,后台一段时间就会弹出来


去弹框
000000010007D15E jz     short loc_10007D1D9 > jnz     short loc_10007D1D9

免费评分

参与人数 1热心值 +1 收起 理由
gz7uuuuuuuuu + 1 谢谢@Thanks!

查看全部评分

pdc9911 发表于 2022-8-15 23:54
shehuizhuyihao 发表于 2022-8-16 01:01
膜拜大佬~~~
feob 发表于 2022-8-16 06:38
感谢分享
Barbara 发表于 2022-8-16 06:50
功能细致,都是经常需要用到的功能,谢谢!
afak 发表于 2022-8-16 08:00
早晨,学习下。
El28PoJie 发表于 2022-8-16 08:06
早安,谢谢大佬
IKYool 发表于 2022-8-16 09:33
早安,谢谢大佬~
journalone 发表于 2022-8-16 09:34
都是经常需要用到的功能,谢谢!
Bruce_HD 发表于 2022-8-16 09:51
来看看,来也匆匆,去也匆匆。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 15:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表