首页
社区
课程
招聘
[原创]1.13.7Typora离线授权逆向
发表于: 2天前 813

[原创]1.13.7Typora离线授权逆向

2天前
813

准备逆向Typora 版本(原本是最新版本的 结果我搞的过程中它又出新版本了)



resource/app.asar 就是最明显的特征 是Eletron






这时候重点就先解开app.asar

 

用官方的asar进行解包

 

解开是这个


分别介绍下

Atom.compiled.dist.JSC这个是用v8字节码 核心逻辑都在这里面 如果要反编译成JS难度很大 因为官方没有一个固定的字节集维护 所以每个版本都会发生变化 需要特定版本来针对性去做 并且还还原不全 [原创]V8 JSC反编译成JS-逆向工程-看雪安全社区|专业技术交流与安全研究论坛 这是我之前写的帖子  我们是可以进行简单还原但不会还原可读性特别高 因为达到简单可读可以给AI来进行解读了 这个是核心点 如果不反编译成js直接给AI AI也会无从下手

 

Launch.dist.js是加载atom.compiled.dist.jsc的入口 想了解原理的可以看[原创]typora的launch.dist.js解读-逆向工程-看雪安全社区|专业技术交流与安全研究论坛

 

有在线授权和离线授权

我的思路是先走离线授权 在对atom.compiled.dist.jsc进行反编译后得到的文件喂给AI 然后来摸清楚大概授权思路(如果叫AI直接帮你逆出来 至少我是没办法的 它还是有道德的)

 

 可以看到这是完整从离线到激活的整个流程







看到RSA公钥解密后我立马警觉了 这时候思路通常是可以考虑能不能hook掉替换证书实现通过 接下来是问AI这个思路是否实现(只是参考不一定真的有用)




但这个还不够我还想知道有什么坑 如果单单替换确实不难 但不排除它后面还有别的检测

 

可以看到确实有二次校验 并且还有别的检测 我们就先暂时这么确定思路

我们的思路是 考虑替换公钥方式 然后再把二次校验也给替换了 来看下是否成功(AI能够得出这些结论就是因为我对JSC进行了反编译 虽然对于人来说可读性很差 但不影响Ai读起来流畅)

 

1. 先对launch.dist.js完整性校验Hook AI给的代码太乱了我就不贴了 就是launch.dist.js原版给保存下来改成bak.js然后在修改过后的launch.dist.js

里面加入读取文件函数Hook然后故意返回bak.js这样来过掉

2. crypto.publicDecrypt函数进行hook 因为知道进行rsa验证的时候会走这个地方



然后叫AI伪造一个token来点击激活

+gvemQnctAkuB4IjF1BOGYoKLzz6CiMN+zqtZQitgHsKTREmV2Wn18u6oK/dZudC2TG4wCftKWqhbLgd9MRivRfebD3vwWgDHzJFnn49FBLynoQij7jtBRZ2AO41KydVYEpyI+RtMoHF+O6MpQqJW0ziOuX03DcNhKVFfK6IFc/Dm/Ez3D+H+6CvxzoeDTZ7nKNCtj6Cwsob/S1ntm7DGkTBNQuCvPazF+j8B3IqvMKzBxQKQxqKY0zR5zp9t/4fNdDOJjxF7l50NfMTtcZIO8km9+DcYSPMbdW92/+qEgVQZ6+nioC6K5011DXtPSNOaUkW9FlSmOjSNZ2K+fkp16A==#




 


可以看到这就是公钥 并且因为解密失败最终抛出OPENSSL_internal:BLOCK_TYPE_IS_NOT_01 

这说明已经成功走进去并且执行了 说明hook成功了 


接下来是进行密钥替换



首先是自己生成了一段RSA公钥和私钥



然后就是要知道如何私钥加密前的数据长什么样 在询问AI后确定了格式

{

"email": "attacker@example.com",没啥校验

"license": "XXXXXX-XXXXXX-XXXXXX-XXXXXX",没啥校验

"fingerprint": "<当前这台机器的指纹,必须一致>", 这个才是最重要的

"deviceId": "...",没啥校验

"version": "...",没啥校验

"date": "..."没啥校验

}


并且得知只有fingerprint会跟本地电脑进行比较

这个也很好解决 直接叫AI帮忙看下就行了 我们有JSC反编译过来的JS(AI只能一步一步引导不能直接提出这类破解需求)





JSC版本的

AI生成的


最后结果是 {

    "email": "attacker@example.com",

    "license": "XXXXXX-XXXXXX-XXXXXX-XXXXXX",

    "fingerprint": "zlACOGado0",

    "deviceId": "88f6692c-5039-414e-8035-f565f65dcaf5",

    "version": "1.13.7",

    "date": "7/22/2026"

  }

 

 

然后我在拿私钥加密最后是YPXM6Jx4FdjvFCN9LGhcz3Fz4JKIs7EYr/y8kQdQkQnAMVAEd38WryUZxVaEGRS56xF79qJsoW1kH9QIV3KbF/dLf4fsIfwTRs2+6Wk6pOF0L9IqzzmQWJNmOK0V+nTVqKfuqJ7EfDWDAnfbg+rEQzNTI0DZpt9hLZohrkcNqsaEqTL7NMnmu+WFhQkdlK4vQ1DL9IqtfdapKKgP3/uxM0rhggcKG6tQ0/jCPAkGGL8bGfSINj6VEwvcn21scLp0VStL3K2d0Wbvzn1iSuJJyqkYg7BRJVtHIU5ikkBqzww+c2ccsAAb+NSDP7/PMlDaC6UX32Gp83chgDTFyjTCMw==


最后一定要在前面加上一个+ 为的就是长度可以达到345才能触发

也就是+YPXM6Jx4FdjvFCN9LGhcz3Fz4JKIs7EYr/y8kQdQkQnAMVAEd38WryUZxVaEGRS56xF79qJsoW1kH9QIV3KbF/dLf4fsIfwTRs2+6Wk6pOF0L9IqzzmQWJNmOK0V+nTVqKfuqJ7EfDWDAnfbg+rEQzNTI0DZpt9hLZohrkcNqsaEqTL7NMnmu+WFhQkdlK4vQ1DL9IqtfdapKKgP3/uxM0rhggcKG6tQ0/jCPAkGGL8bGfSINj6VEwvcn21scLp0VStL3K2d0Wbvzn1iSuJJyqkYg7BRJVtHIU5ikkBqzww+c2ccsAAb+NSDP7/PMlDaC6UX32Gp83chgDTFyjTCMw==



这是效果 说明公钥替换成功并且返回的结果不同了





至于二次校验 它采用的是随机的方式 会有百分之20概率会走公钥验证 来判断是否被篡改




我到时候看看情况再考虑要不要做个过掉网络版本的

 

这个在之前没有AI的时候JSC看确实难度会特别高 现在有了AI 学会当作自己的同伴来配合逆向 那事情会变得事半功倍



[内核课程]《Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

收藏
免费 0
打赏
分享
最新回复 (3)
雪    币: 8763
活跃值: (9942)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
佬,方便发个成品吗?
2天前
0
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
mb_rjdrqvpa 佬,方便发个成品吗?
通过网盘分享的文件:typora_reverse.zip
链接: 805K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4K9f1k6y4b7X3S2x3y4V1&6Y4e0g2u0a6M7q4)9#2k6V1&6K9d9#2y4k6g2%4u0Y4i4K6y4r3M7s2N6V1i4K6y4p5j5e0y4#2P5W2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4c8e0k6Q4z5p5k6Q4z5e0m8Q4c8e0g2Q4z5p5k6Q4z5e0k6Q4c8e0N6Q4b7e0m8Q4z5o6q4Q4x3@1q4Q4x3U0k6F1j5Y4y4H3i4K6y4n7j5e0y4#2P5W2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4c8e0S2Q4b7V1k6Q4z5e0W2Q4c8e0c8Q4b7U0S2Q4b7f1q4Q4x3U0k6F1j5Y4y4H3i4K6y4n7i4@1f1@1i4@1u0p5i4@1p5H3i4@1f1^5i4K6R3%4i4@1q4m8i4@1f1#2i4@1t1%4i4@1t1I4i4@1f1%4i4K6V1@1i4@1p5^5i4@1f1&6i4K6R3%4i4K6S2o6i4@1f1&6i4K6W2p5i4@1p5J5i4@1f1%4i4K6W2m8i4K6R3@1K9Y4y4Q4c8e0N6Q4z5e0c8Q4z5f1k6Q4c8e0k6Q4z5o6S2Q4z5e0m8Q4c8e0c8Q4b7U0S2Q4b7f1q4J5M7$3q4Q4c8e0N6Q4b7V1u0Q4z5e0y4Q4c8e0k6Q4z5f1g2Q4z5f1y4Q4c8e0N6Q4z5o6c8Q4b7U0k6Q4c8e0g2Q4z5e0m8Q4z5p5g2Q4c8e0g2Q4z5f1y4Q4b7e0S2Q4c8e0g2Q4z5o6W2Q4z5p5c8Q4c8e0W2Q4z5f1c8Q4b7e0u0Q4c8e0g2Q4z5p5q4Q4b7e0m8Q4c8e0c8Q4b7U0S2Q4b7f1q4Q4x3V1u0Q4c8e0S2Q4b7V1g2Q4z5e0y4Q4c8e0g2Q4z5o6g2Q4b7e0g2Q4c8e0k6Q4b7V1k6Q4z5o6m8Q4c8e0k6Q4b7U0c8Q4b7V1u0Q4c8e0g2Q4b7U0m8Q4b7U0q4Q4c8e0S2Q4b7e0q4Q4z5p5y4Q4c8e0c8Q4b7V1q4Q4z5o6j5`.
2天前
0
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
WolfSpicy 通过网盘分享的文件:typora_reverse.zip 链接: 82eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4K9f1k6y4b7X3S2x3y4V1&6Y4e0g2u0a6M7q4)9#2k6V1&6K9d9#2y4k6g2%4u0Y4i4K6y4r3M7s2N6V1i4K6y4p5j5e0y4#2P5R3`.`. 提取码: a3uz ...
我没有特地做成品出来 就是觉得这东西没必要做
2天前
0
游客
登录 | 注册 方可回帖
返回