好友
阅读权限25
听众
最后登录1970-1-1
|
本帖最后由 wolfSpicy 于 2026-7-23 13:07 编辑
准备逆向Typora 版本
“
resource/app.asar 就是最明显的特征 是Eletron
这时候重点就先解开app.asar 用官方的asar进行解包解开是这个
分别介绍下 Atom.compiled.dist.JSC这个是用v8字节码 核心逻辑都在这里面 如果要反编译成JS难度很大 因为官方没有一个固定的字节集维护 所以每个版本都会发生变化 需要特定版本来针对性去做 并且还还原不全 【新提醒】【原创】V8 JSC反编译成JS - 吾爱破解 - 52pojie.cn这是我之前写的帖子 我们是可以考虑进行简单还原但不会还原可读性特别高 因为达到简单可读可以给AI来进行解读了 Launch.dist.js是加载atom.compiled.dist.jsc的入口 想了解原理的可以看【新提醒】typora的launch.dist.js解读 - 吾爱破解 - 52pojie.cn 有在线授权和离线授权我的思路是先走离线授权 在对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+O6MpQqJW0ziOuX03DcNhKVFfK6IF
c/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+rEQzNTI0DZpt9hLZohr
kcNqsaEqTL7NMnmu+WFhQkdlK4vQ1DL9IqtfdapKKgP3/uxM0rhggcKG6tQ0/jCPAkGGL8bGfSINj6VEwvcn21scLp0VStL3K2d0Wbvzn1iSuJJyqkYg7BRJVtHIU5ikkBqzww+c2ccsAAb+NSDP7/PMlDaC6UX32Gp83chgDTFyjTCMw==
最后一定要在前面加上一个+ 为的就是长度可以达到345才能触发也就是
+YPXM6Jx4FdjvFCN9LGhcz3Fz4JKIs7EYr/y8kQdQkQnAMVAEd38WryUZxVaEGRS56xF79qJsoW1kH9QIV3KbF/dLf4fsI
fwTRs2+6Wk6pOF0L9IqzzmQWJNmOK0V+nTVqKfuqJ7EfDWDAnfbg+rEQzNTI0DZpt9hLZohrkcNqsaEqTL7NMnmu+WFhQkdlK4vQ1DL9IqtfdapKKgP3/u
xM0rhggcKG6tQ0/jCPAkGGL8bGfSINj6VEwvcn21scLp0VStL3K2d0Wbvzn1iSuJJyqkYg7BRJVtHIU5ikkBqzww+c2ccsAAb+NSDP7/PMlDaC6UX32Gp83chgDTFyjTCMw==
这是效果 说明公钥替换成功并且返回的结果不同了
至于二次校验 它采用的是随机的方式 会有百分之20概率会走公钥验证 来判断是否被篡改
我到时候看看情况再考虑要不要做个过掉网络版本的 这个在之前没有AI的时候JSC看确实难度会特别高 现在有了AI 学会当作自己的同伴来配合逆向 那事情会变得事半功倍
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|