Typora 授权解密与剖析

VSole2021-12-30 16:33:56

11月23日,Typora 正式发布 1.0 版本,进入了收费时代。

1.0 版本是一次性付费而非订阅的,只要支付人民币 89 元,可以在 3 台设备里使用。

Typora之于我

如你所见,这一篇文章就是使用Typora所写。自搭建个人博客起,Typora就成为了我主要的写作平台。

用惯了Markdown,WordPress的古腾堡编辑器没法满足我的需求,于是开始寻找替代品,最终的结果便是typora。

当然,多数人使用的原因不外乎以下

  • 轻盈、干净
  • 所见即所得
  • 图床
  • 主题、生态
  • (beta)免费
  • ……

如今,typora进入收费阶段,不乏使用者被迫迁移至其他写作工具上。下面,我们来一探究竟。

敬告

请勿使用盗版,支持正版授权,文中内容仅作学习和讨论,请不要从事任何非法行为。由此产生的任何问题都将读者/用户(您)承担。

寻踪觅源

通过火绒剑监测行为日志,程序加载的一些模块。

在Windows下,typora会记录日志至{UsersRoot}\AppData\Roaming\Typora\typora.log,能看到可疑的注册表操作记录。

正版激活的注册项内容:

尝试修改SLicense:

重新运行软件后,从错误日志中发现调用栈暴露。

渐入佳境

这里关注到了app.asar,通过搜索引擎,尝试解包。

npm install -g asarasar extract {installRoot}/Typora/resources/app.asar workstation/outs

发现文件被加密:

JavaScript不管是字节码还是明文脚本都会在运行时加载,结合模块列表寻找加载点。

关注到解包得到的main.node:

IDA寻找字符串特征:

通过交叉引用定位,看到一些导入函数。

由字符串联想到对加密文件进行的base64解码,导入表查找到 napi Node-API | Node.js API 文档 (nodejs.cn)。

简单分析伪代码后,其实就是运行。

Buffer.from(e,"base64")

刻舟求剑

尝试Findcrypt寻找算法,找到AES的Sbox和InvBox,通过交叉引用定位到可疑函数点 main.node+E440。

IDA动态调试,模块加载断点:

跑起来,直至加载main.node:

分析模块后,定位base+offset下断,运行,看到:

正好与我们的文件对应偏移16。

继续调试能看到 分组加密的形式:

同时能够找到前16字节:

正是作为iv进行异或:

柳暗花明

分析调用函数,最终能够确定其函数功能:

通过偏移EF19,能够确定AES轮数为13轮,对应为AES 256,偏移B510处的函数,能够得到AESKey。

落叶归根

解密得到明文脚本,授权主逻辑在Lisence.js中。

授权逻辑如下图:

本地验证->获取用户特征->网络验证授权->返回密文->RSA公钥解密->设备指纹对比

破解的思路,不多做阐述。

修改完成后,只需要按相同格式加密并打包为app.asar即可实现补丁Patch

typoraCracker

typoraCracker是一个Typora解包解密程序,也是一个打包加密程序。你可以轻松的打造独属于你的补丁,但请注意法律上的可行性。

测试

总有一种人,喜欢享受“正版”激活的感觉。而我就是……

我采用 Patch+KeyGen,补丁去除网络授权,KeyGen用于本地验证,测试成功。

typora针对electron下的源码加固仍是一片空白。

简单思考后,传统代码混淆的方式对关键逻辑的保护依然有较大的提升空间,不失为一个恰当的加固方向。

期待typora越做越好。——来自一个正版使用者

typora
本作品采用《CC 协议》,转载必须注明作者和本文链接
由此可以推测,之前找到的main.node,可能就是解密模块。此时找到了AES的算法常量,前两个是重复的,可能是插件问题。只能去问度娘了,搜索一下AES加密解密原理与 C 实现代码。
Typora 授权解密与剖析
2021-12-30 16:33:56
11月23日,Typora 正式发布 1.0 版本,进入了收费时代。Typora之于我如你所见,这一篇文章就是使用Typora所写。自搭建个人博客起,Typora就成为了我主要的写作平台。如今,typora进入收费阶段,不乏使用者被迫迁移至其他写作工具上。敬告请勿使用盗版,支持正版授权,文中内容仅作学习和讨论,请不要从事任何非法行为。
最近不知道怎么回事,家里电脑经常性地出现蓝屏,很多时候有些文档没有保存便蓝屏导致文档丢失,其中也包括您现在正在看到的这一篇文章,以前一直比较懒,重启大法一顿怼,然后重新再做编辑,只不过PPT重做简直要人命,无奈之下,放下了所有的工作。
“再见,Linux!”
2022-03-07 09:39:06
我宣布我脱粉了!
如何设计消息加密?
2023-12-22 11:19:17
如何设计消息加密
Linux 已经逐渐成为了最受开发者欢迎的操作系统。本文将介绍四个极为实用的技巧,相信这将能够提高您在 Linux 下的工作效率和流畅性,也让工作变得更为舒适、优雅。或者仅输入目录的前几个字母,如匹配多个目录,则回到最近的一个:bd?执行时间根据项目中源码数量而定,文件多则创建索引的时间会久一些。
Linux 已经逐渐成为了最受开发者欢迎的操作系统。本文将介绍四个极为实用的技巧,相信这将能够提高您在 Linux 下的工作效率和流畅性,也让工作变得更为舒适、优雅。或者仅输入目录的前几个字母,如匹配多个目录,则回到最近的一个:bd?执行时间根据项目中源码数量而定,文件多则创建索引的时间会久一些。
VSole
网络安全专家