一行代码走天下,Frida + Hopper v4.x Demo,分析Ummy Video Downloader的注册验证算法

前言
最近接触到Frida,读完文档,这是逆向神器。做了一期简短教程视频,介绍了一些入门操作,欢迎观看。
这里记录一些操作步骤。
0x1 初识软件
Ummy Video 是一款下载YouTube视频的小工具,未注册时有使用次数限制,本地注册方式,未采用网络验证,仔细分析的话加解密及注册验证比较容易,可以用来练习练习。

0x2 Hopper Disassembler分析
接下来,启动Hopper Disassembler v4.x Demo版本,虽然是Demo版本的,但是可以查看伪代码,用来分析足矣~。
通过关键词license,很容易快速定位到软件使用的加解密类:EllipticLicense

0x3 Frida、Frida-trace跟踪类的运行流程
打开iTerm2,输入跟踪命令:
frida-trace "Ummy Video Downloader" -m "*[EllipticLicense *]"
关于frida-trace的使用可以参考官网文档。

激活Ummy Video Downloader界面后,点击注册按钮,很容易看到下面的信息:

读下来的意思就是:初始化类,导入公钥,设置黑名单,检测黑名单,注册码验证。
看到这些层次分明的函数调用栈,是不是很激动,如此高效的逆向分析工具,相见恨晚不。
0x4 初识劫持代码
Frida自动在命令行运行的当前文件夹创建了文件夹 --handlers--
,其中包含了被过滤到的方法对应的js文件。
我们把焦点放在这个文件__EllipticLicense_verifyLicenseK_eb1154d4.js
。
{ |
首先,添加以下这些代码,尝试打印一下注册码和用户名:
{ |
修改完代码后切换回iTerm2,按下Ctrl+C
,中断后,按下键盘上的”上方向键👆”,显示最近一条历史命令,这样不用重新输入命令,按下回车执行命令。
回到App的注册界面,点击激活按钮,iTerm2中就打印出内存中的用户名和激活码。

0x5 一行代码走天下
再次修改代码,添加博主经常走天下的一行代码:
{ |
这行代码的意思很明显了,就是修改函数:[EllipticLicense verifyLicenseKey: forName:]
的返回值为True
。
好了,保存文档,再次注入,发现Ummy Video Downloader变成了注册版,可以使用下载功能了。

视频观看链接:
- 【MacOS】 Frida+Hopper v4.5.19 Demo,调试Ummy Video Downloader
tree_fly/P.Y.G
2020-01-19
- 标题: 一行代码走天下,Frida + Hopper v4.x Demo,分析Ummy Video Downloader的注册验证算法
- 作者: tree_fly
- 创建于 : 2020-01-19 15:20:50
- 更新于 : 2020-01-19 15:20:50
- 链接: https://itreefly.com/posts/f9ee0805.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。