吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8377|回复: 132
上一主题 下一主题
收起左侧

[原创] Typora 1.0.4版本破解复现

    [复制链接]
跳转到指定楼层
楼主
Kvancy 发表于 2024-9-27 18:24 回帖奖励
本帖最后由 Kvancy 于 2024-9-27 20:50 编辑

1. 找到app.asar文件解包得到License.js加密代码

根据火绒剑在系统日志里监控Typore的启动,找到可疑的asar文件,程序访问并读取了该文件,并启动了其中的main.node模块,疑似开发者对加密源代码的解密过程

找到app.asar文件,根据日志显示,可以猜测这个类似压缩包,问Bing得知

asar是一种用于打包Electron应用程序源代码的文件格式,它可以让应用程序更容易分发和运行。asar文件的工作原理是将所有文件连接在一起,不进行压缩,但支持随机访问。asar文件可以使用asar命令行工具或者electron-packager等工具来创建或解压

根据提示内容进行解压, asar extract app.asar unpacked

得到unpacked文件,貌似找到关于许可证的有关文件--License.js,Winhex打开看一眼

有种base64编码的感觉,难道只是base64编码加密?拖进CyberChef解密一下


可能还有一层或几层加密

2. 从main.node文件找License.js的解密逻辑

根据火绒剑日志显示,在app.asar解包后运行了main.node模块,又根据前面License.js被加密了,可以推测main.node有可能运行时解密了License.js文件,先DIE看一眼main.node,DLL64位,IDA64打开,先不管其他的,shift+f12查找字符串


疑似有base64解密过程,交叉引用找到引用处伪代码


根据Bing得知

napi_get_named_property 是一个 Node-API 的函数,它的作用是从一个对象中获取一个指定名称的属性,并返回它的值。

napi_status napi_call_function(napi_env env, napi_value recv, napi_value func, size_t argc, const napi_value* argv, napi_value* result);

其中,参数的含义是:

  • env: 当前调用 N-API 的环境。
  • recv: 要作为函数接收者的对象,通常是 this 的值。
  • func: 要调用的函数对象。
  • argc: 要传递的参数的个数。
  • argv: 要传递的参数的数组。
  • result: 用于接收函数返回值的指针。

分析得知,这段代码类似给v40进行解码,v40 =  base64.from(v38),v38又来自函数的第三个参数a3+8,猜测这个a3+8指向的就是密文的地址,动调验证下,x64dbg直接拖Typora,手动下一个main.node的断点,再根据IDA中给出的偏移计算出调试器里解密函数的地址,根据64位下寄存器默认传参顺序是ECX,EDX,R8,R9知道a3的值储存在R8中,所以R8+8指向密文地址,验证:




这里的数据刚好对应的是atom.js里的密文


验证成功,继续分析


找到类似加密算法的密钥初始化,用findcrypt看一眼发现了AES的S盒和逆S盒,推测这里应该是AES的密钥,而且长度为32个字节,猜测是256位模式


接着找AES解密线索,找到F4E0偏移处函数


里面有S盒和异或的继续分析,确定下ECB模式还是CBC模式


进入3A8F偏移处函数分析,在这里先猜测block应该是密文(void 指针数组)


函数里面又出现了一个循环异或,可以肯定这是个CBC模式下的异或偏移量了,那偏移量又是怎么来的呢,追踪a2(密文地址)进行判断的话,函数里面是复制了一份a2给v3,也就是说v3可能指向了密文


那么result就是偏移量了,偏移量来自密文地址+v5处,进行16次循环,也就是说偏移量可能来自密文的0-15个字节位?

3. CyberChef验证猜测

依据之前的猜测,main.node通过base64解码,再AES,CBC模式解码,密钥IDA动调得到

0x4E, 0xE1, 0xB3, 0x82, 0x94, 0x9A, 0x02, 0x4B, 0x80, 0x2F, 0x52, 0xB4, 0xB4, 0xFE, 0x57, 0xF1, 0xBE, 0xF4, 0x08, 0x53, 0x10, 0x92, 0x56, 0xE2, 0xC2, 0x0D, 0xEC, 0xA3, 0xDD, 0x8D, 0xD5, 0x6D

偏移量为密文的前16个字节,带入CyberChef检验


这下应该是得到了License.js源码,下载得到文件,找在线js美化工具美化

4. 最终的Patch

简单审计了下代码,不懂的找Bing问就是。首先应该patch掉网络验证类似request的东西,找到了几处
patch掉网络验证,对doActivation的验证直接改成永恒真,使得邮箱和序列号随便填即可激活,再改写hasLicense的值,使得下次登录时访问许可证信息时得到软件已被激活的信息,再打包生成app.asar,打开软件随便输入序列号和邮箱即可

5. 破解成功

免费评分

参与人数 57威望 +2 吾爱币 +156 热心值 +50 收起 理由
yuxuan1311 + 1 + 1 我很赞同!
MinuxCyber + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
seamusyang + 1 + 1 谢谢@Thanks!
ayuitheima + 1 + 1 我很赞同!
wangyongdesign + 1 + 1 谢谢@Thanks!
GuizhenYesou + 1 + 1 谢谢@Thanks!
slmgr.vbs + 1 + 1 用心讨论,共获提升!
jjkkii + 1 热心回复!
allspark + 1 + 1 用心讨论,共获提升!
ag129 + 1 + 1 谢谢@Thanks!
swsjjdcs + 1 + 1 热心回复!
无尘浪子 + 1 谢谢@Thanks!
bingshen + 1 + 1 谢谢@Thanks!
ind + 1 + 1 谢谢@Thanks!
Van42 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zheke520 + 1 我很赞同!
ioyr5995 + 1 + 1 我很赞同!
bingyue + 1 谢谢@Thanks!
Ruomeng + 1 谢谢@Thanks!
gaosld + 1 + 1 热心回复!
许我浅笑而安 + 2 + 1 用心讨论,共获提升!
湛蓝冰羽 + 1 + 1 怪不得之前下线过火绒剑
l23612080 + 1 + 1 谢谢@Thanks!
温馨提示 + 1 + 1 热心回复!
涛之雨 + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
心渊魔角 + 1 + 1 用心讨论,共获提升!
fengfeel + 1 + 1 谢谢@Thanks!
initSys + 1 + 1 赞赞赞
luckilygou + 1 + 1 谢谢@Thanks!
overlight + 1 我很赞同!
Cave + 1 + 1 热心回复!
abclihongzhi + 1 谢谢@Thanks!
summer20191 + 1 热心回复!
ohohxie1992 + 1 + 1 我很赞同!
Carinx + 1 + 1 用心讨论,共获提升!
Issacclark1 + 1 谢谢@Thanks!
LuckyClover + 1 + 1 谢谢@Thanks!
zealat + 1 + 1 我很赞同!
hazy1k + 1 + 1 我很赞同!
MFC + 1 + 1 谢谢@Thanks!
五行阿尔法 + 1 + 1 热心回复!
peesan + 1 + 1 用心讨论,共获提升!
fs000x + 1 + 1 谢谢@Thanks!
Night1918 + 1 + 1 热心回复!
DRZH + 1 + 1 用心讨论,共获提升!
ALBIHZEM + 1 + 1 热心回复!
lfm333 + 1 + 1 谢谢@Thanks!
eric + 1 + 1 谢谢@Thanks!
冥界3大法王 + 1 用心讨论,共获提升!
waitingle + 1 + 1 谢谢@Thanks!
满不懂 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wenzijun + 1 + 1 热心回复!
chinawolf2000 + 1 + 1 热心回复!
琵琶语 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
LoveCode + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
小朋友呢 + 2 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

推荐
张向华 发表于 2024-9-27 21:37
虽然我很仔细的看了,还是没有看明白
推荐
chishingchan 发表于 2024-9-29 09:10
旧版本注册机源码:
[Java] 纯文本查看 复制代码
function randomSerial() {
    var $chars = 'L23456789ABCDEFGHJKMNPQRSTUVWXYZ';
    var maxPos = $chars.length;
    var serial = '';
    for (i = 0; i < 22; i++) {
        serial += $chars.charAt(Math.floor(Math.random() * maxPos));
    }
    serial += (e => {
        for (var t = "", i = 0; i < 2; i++) {
            for (var a = 0, s = 0; s < 16; s += 2) a += $chars.indexOf(e[i + s]);
            t += $chars[a %= $chars.length]
        }
        return t
    })(serial)
    return serial.slice(0, 6) + "-" + serial.slice(6, 12) + "-" + serial.slice(12, 18) + "-" + serial.slice(18, 24);
}
console.log(randomSerial());

免费评分

参与人数 5吾爱币 +7 热心值 +5 收起 理由
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
dadao815 + 1 + 1 用心讨论,共获提升!
tingol + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
liyitong + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
小朋友呢 + 2 + 1 热心回复!

查看全部评分

推荐
小朋友呢 发表于 2024-9-27 21:36
有一个问题,打包回去的时候,是AES加密再base64编码一下这样?还是直接用解密后的源码打包成app.asar
沙发
落尘大大和你呢 发表于 2024-9-27 18:49
大佬牛逼
3#
buyaozc 发表于 2024-9-27 19:35
大佬,图挂 了,飞书上的图?
4#
Hmily 发表于 2024-9-27 19:42
@Kvancy 图片盗链无法显示,上传本地吧。
5#
ABCDWWWc123 发表于 2024-9-27 19:56
感谢楼主分享的原创教程
6#
erqie 发表于 2024-9-27 20:15
大佬牛逼,可惜我不懂分析,哈哈。
7#
冥界3大法王 发表于 2024-9-27 20:45
一张图片我也没看到
8#
 楼主| Kvancy 发表于 2024-9-27 20:51 |楼主
Hmily 发表于 2024-9-27 19:42
@Kvancy 图片盗链无法显示,上传本地吧。

感谢提醒
9#
justwz 发表于 2024-9-27 21:07
跟着大佬学逆向
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-10-7 11:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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