吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 45554|回复: 457
收起左侧

[原创] Typora 授权解密与剖析

    [复制链接]
十一七 发表于 2021-11-30 23:46
本帖最后由 十一七 于 2021-12-1 12:44 编辑

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

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

Typora之于我

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

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

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

  • 轻盈、干净

  • 所见即所得

  • 图床

  • 主题、生态

  • (beta)免费

  • ……

如今,typora进入收费阶段,不乏使用者被迫迁移至其他写作工具上。

(不扯了官方话了)下面,我们来一探究竟。

敬告

请勿使用盗版,支持正版授权。

文中内容仅作学习和讨论,请不要从事任何非法行为。

由此产生的任何问题都将读者/用户(您)承担。

寻踪觅源

通过火绒剑监测行为日志

程序加载的一些模块

image-20211130184106692.png

在Windows下,typora会记录日志至{UsersRoot}\AppData\Roaming\Typora\typora.log

能看到可疑的注册表操作记录

image-20211130183426635.png

正版激活的注册项内容

image-20211130183559343.png

尝试修改SLicense

image-20211130184239487.png

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

image-20211130184326918.png

渐入佳境

这里关注到了app.asar

通过搜索引擎,尝试解包

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

发现文件被加密

image-20211130184736342.png

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

关注到解包得到的main.node

image-20211130185130235.png

IDA寻找字符串特征

image-20211130185218763.png

image-20211130185352718.png

通过交叉引用定位

看到一些导入函数

image-20211130185459749.png

由字符串联想到对加密文件进行的base64解码

导入表查找到 napi Node-API | Node.js API 文档 (nodejs.cn)

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

Buffer.from(e,"base64")

刻舟求剑

尝试Findcrypt寻找算法,找到AES的Sbox和InvBox

通过交叉引用定位到可疑函数点 main.node+E440

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

image-20211130190419570.png

跑起来,直至加载main.node

image-20211130191229401.png

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

看到

image-20211130191526130.png

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

image-20211130191647736.png

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

image-20211130191832333.png

同时能够找到前16字节

image-20211130193509339.png

正是作为iv进行异或

image-20211130193604968.png

柳暗花明

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

image-20211130192900341.png

通过偏移EF19,能够确定AES轮数为13轮,对应为AES 256

偏移B510处的函数,能够得到AESKey

image-20211130193202349.png

落叶归根

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

授权逻辑如下图

image-20211130205410796.png

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

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

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

typoraCracker

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

测试

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

我采用 Patch+KeyGen

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

YZHVK3R[H99OPNPPT90PU%1-16382771752981.png

尾声

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

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

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

点评

一直很想知道,这些软件,为什么不多设置几个门口。比如1PC,2PC.3PC就很尴尬。。。  发表于 2022-4-4 22:21

免费评分

参与人数 208威望 +2 吾爱币 +305 热心值 +190 收起 理由
ssdlh + 1 + 1 我很赞同!
liboing + 1 + 1 谢谢@Thanks!
jasongm + 1 + 1 谢谢@Thanks!
rocwang + 1 + 1 我很赞同!
LargerZ + 1 + 1 我很赞同!
harryczqp + 1 + 1 谢谢@Thanks!
明月照我还 + 1 谢谢@Thanks!
Natrium + 1 我很赞同!
zhourx + 1 我很赞同!
fullend + 1 我很赞同!
kapod + 1 谢谢@Thanks!
semaphore + 1 + 1 我很赞同!
AiChiShuCai + 1 + 1 我很赞同!
YeahJack + 1 + 1 我很赞同!
h0st + 1 + 1 谢谢@Thanks!
coderwaves + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
一介书生 + 1 + 1 我很赞同!
lezaitianya + 1 + 1 我很赞同!
hemaeee + 1 用心讨论,共获提升!
STARSHINEA + 1 + 1 我很赞同!
sfyyy + 1 + 1 用心讨论,共获提升!
kikipu + 1 + 1 大佬操作,凡人看不懂
jackies + 1 + 1 热心回复!
XD9945 + 1 我很赞同!
Cookiesfly + 1 + 1 用心讨论,共获提升!
大豹子 + 1 我很赞同!
pojie_dd + 1 + 1 用心讨论,共获提升!
ACBur + 1 + 1 用心讨论,共获提升!
CyberAzrael + 1 + 1 我很赞同!
lyfff + 1 + 1 我很赞同!
Windysime + 1 + 1 我很赞同!
zhushui + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
p2003722 + 1 + 1 +1,同为支持正版但想尝试破解的快感的人
li1762951027 + 1 谢谢@Thanks!
liuhongxin1989 + 1 + 1 大神真心佩服
qq957413212 + 1 + 1 成功上车!
52SNORLAX + 1 有意思
Bexh0lder + 1 + 1 谢谢@Thanks!
meetAgain + 1 + 1 谢谢@Thanks!
wuqingyou + 1 用心讨论,共获提升!
摇曳的利奇马 + 1 + 1 用心讨论,共获提升!
my790978513 + 1 + 1 谢谢@Thanks!
cdmafvrty + 1 + 1 用心讨论,共获提升!
landwind + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
doomblade + 1 + 1 谢谢@Thanks!
BOB27 + 1 谢谢@Thanks!
繁星飞跃 + 1 + 1 我很赞同!
JonesDean + 1 + 1 谢谢@Thanks!
Simnet + 1 + 1 谢谢@Thanks!
systemuser + 1 谢谢@Thanks!
thepoy + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ht4266394 + 1 + 1 谢谢@Thanks!
1539173762 + 1 + 1 热心回复!
努力加载中 + 1 + 1 热心回复!
qq533 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
LibertyCola + 1 + 1 热心回复!
frank10010 + 1 + 1 我很赞同!
liuhongxin1989 + 1 + 1 谢谢@Thanks!
fusheng55555 + 1 好牛哇
nevinhappy + 1 + 1 鼓励转贴优秀软件安全工具和文档!
麦米尔加弗德 + 1 + 1 用心讨论,共获提升!
pandahan + 1 + 1 谢谢@Thanks!
pinesnow + 1 我很赞同!
5omggx + 1 + 1 感谢大佬
h1jacker + 1 + 1 谢谢@Thanks!
mi0070 + 1 + 1 谢谢@Thanks!
xyz349925756 + 1 + 1 我很赞同!
ihjun + 2 + 1 谢谢@Thanks!
裂石破天 + 1 我很赞同!
chenxz21 + 1 + 1 我很赞同!
Richex + 1 谢谢@Thanks!
无痕567 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
Reat + 1 + 1 谢谢@Thanks!
蓝纹鲸 + 1 + 1 <font style="vertical-align: inherit;"><font style=
lingjuehun + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
tobiasaxzc + 1 + 1 我很赞同!
klx234 + 1 谢谢@Thanks!
sunlei658 + 1 + 1 我很赞同!
ailanxier + 1 我很赞同!
We. + 1 + 1 感谢分享~
大大怪 + 1 + 1 我很赞同!
wanleya + 1 + 1 谢谢@Thanks!
lahmsworld + 1 + 1 我很赞同!
SouperGeng + 1 + 1 我很赞同!
Kristin_ + 1 + 1 我很赞同!
sunshine_昊 + 1 谢谢@Thanks!
FFF全部成为F + 1 + 1 分析讨论交流,论坛有你更精彩!
KylinYang + 1 + 1 谢谢@Thanks!
hqe + 1 谢谢@Thanks!
冯柟 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Smiling_Mask + 1 + 1 热心回复!
舒默哦 + 2 + 1 谢谢@Thanks!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
flying104 + 1 + 1 谢谢@Thanks!
0xC05 + 1 用心讨论,共获提升!
莫千秋 + 1 谢谢@Thanks!
漫卷西风Carol + 1 热心回复!
52PJmumu + 1 + 1 膜拜大佬
alderaan + 1 + 1 用心讨论,共获提升!
15235109295 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| 十一七 发表于 2022-2-18 14:04
本帖最后由 十一七 于 2022-4-28 19:26 编辑

typoraCracker 因DMCA关闭,不再提供任何支持。
头像被屏蔽
Airey 发表于 2021-12-3 19:07
涛之雨 发表于 2021-12-2 06:54

看完确实是清楚了密钥怎么来的,
有空尝试一下,
不过还是想找个通用hook点,
类似于DLL劫持那样,
不修改文件的情况下实现crack
tinyDust 发表于 2022-7-22 11:19
我从github上搜索打不开后,在gitee上找到了这个,不清楚是不是楼主建的,https://gitee.com/suyin-long/typora-cracker/releases
使用方法:(自己安装了1.3.8,激活成功了)
1. 官网下载安装包,并安装
2. 从上面链接下载安装包版本对应的破解文件
3.将破解文件中crack文件夹下的文件拷贝到安装目录,下次启动typora时自动激活成功。
1.png

免费评分

参与人数 7吾爱币 +6 热心值 +6 收起 理由
清风已不在 + 1 链接没了
Joe_fly + 1 + 1 谢谢@Thanks!
Marcel + 1 + 1 谢谢@Thanks!
taihaoji + 1 + 1 谢谢@Thanks!
word10100 + 1 + 1 谢谢@Thanks!
随便去取 + 1 用心讨论,共获提升!
过去痕迹 + 1 + 1 热心回复!

查看全部评分

smilencetion 发表于 2021-12-2 15:45
本帖最后由 smilencetion 于 2021-12-2 15:48 编辑
cyantea 发表于 2021-12-2 15:37
@91#,我按步骤操作的,也替换了文件,也生成了key,提示序列号不正确。

有替换License.js这个文件吗?这个需要替换

这一步以后
python typora.py {installRoot}/Typora/resources/app.asar workstation/outfile/
需要你把typoraCracker\example\patch下的License.js替换刚才生成的在dec_app里面的License.js,然后再进行下面这步python typora.py -u workstation/outfile/dec_app workstation/outappasar

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ugvfpdcuwfnh + 1 + 1 我很赞同!

查看全部评分

xll816 发表于 2021-12-3 17:58

膜拜大佬,感谢分享提供的方式和工具

本帖最后由 xll816 于 2021-12-6 08:38 编辑

E:\typora.png

上车流程

上车流程
pandola 发表于 2022-5-9 16:37
https://cn-sec.com/archives/970900.html   typora 1.2.5版本做好的。

免费评分

参与人数 4吾爱币 +4 热心值 +4 收起 理由
Alterx + 1 + 1 谢谢@Thanks!
黑刀兔 + 1 + 1 谢谢@Thanks!
小Joe + 1 + 1 谢谢@Thanks!
zjpper + 1 + 1 感谢分享,很好用。

查看全部评分

weefun92 发表于 2021-12-1 20:56
本帖最后由 weefun92 于 2021-12-2 21:48 编辑

真大佬,看的酣畅淋漓,痛快(可惜我不会~

更新-----

按照教程重新打包并替换后,用生成的key激活时提是需要联网,是哪里除了问题吗?求教~
typora.png

再更-----

根据 @smilencetion 同学提示:

https://www.52pojie.cn/forum.php ... 553967&pid=40881603,需要替换一下 License.js,然后再重新打包,替换即可。
已经成功上车{:1_918:}
YeahJack 发表于 2022-6-24 09:48
楼主您好,我这里运行报错,您可以看看吗,这是log
2022-06-24 09:46:22.609 | WARNING  | __main__:_mkdir:30 - May FolderExists: .\outfile\tmp_app
2022-06-24 09:46:22.611 | INFO     | __main__:extractWdec:56 - extract asar file: C:\Program Files\Typora\resources\app.asar
2022-06-24 09:46:22.617 | SUCCESS  | __main__:extractWdec:59 - extract ended.
2022-06-24 09:46:22.619 | INFO     | __main__:extractWdec:61 - read Directory: .\outfile\tmp_app
2022-06-24 09:46:22.621 | WARNING  | __main__:_mkdir:30 - May FolderExists: .\outfile\dec_app
2022-06-24 09:46:22.622 | INFO     | __main__:extractWdec:66 - set Directory: .\outfile\dec_app
2022-06-24 09:46:22.624 | INFO     | __main__:extractWdec:73 - open file: atom.js
Traceback (most recent call last):
  File ".\typora.py", line 151, in <module>
    main()
  File ".\typora.py", line 146, in main
    args.mode(args.asarPath, args.dirPath, args.format)
  File ".\typora.py", line 76, in extractWdec
    scode = decScript(scode, prettify)
  File ".\typora.py", line 41, in decScript
    code = unpad(ins.decrypt(cipherText), 16, 'pkcs7')
  File "c:\programdata\anaconda\lib\site-packages\Crypto\Cipher\_mode_cbc.py", line 246, in decrypt
    raise ValueError("Data must be padded to %d byte boundary in CBC mode" % self.block_size)
ValueError: Data must be padded to 16 byte boundary in CBC mode
cyantea 发表于 2021-12-2 15:37
@91#,我按步骤操作的,也替换了文件,也生成了key,提示序列号不正确。
正己 发表于 2021-12-1 12:44
Mason大佬tql!!!
harryczqp 发表于 2021-12-1 12:57
牛啊,思路清洗
iceprism 发表于 2021-12-1 13:19
才正版第一周内就分析出来了,太强了
fangxiaoqi 发表于 2021-12-1 14:07
太强了太强了
可坏 发表于 2021-12-1 14:15

太强了太强了  已经start
Finley69 发表于 2021-12-1 14:20
膜拜膜拜大佬
detewhkn 发表于 2021-12-1 14:22
经典教程,强强
abstao 发表于 2021-12-1 14:30
受教了,我也来试试
Tulubi 发表于 2021-12-1 14:31
为甚如此优秀!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-22 19:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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