上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

[大兴土木]CFW的asar文件逆向工程(一)

[复制链接]
  • TA的每日心情
    开心
    前天 00:00
  • 签到天数: 53 天

    [LV.5]常住居民I

    352

    主题

    3091

    帖子

    3100

    积分

    管理员

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    3100

    猫咪币纪念章国庆纪念章中秋纪念章荣誉开发者家财万贯管理员

    发表于 2021-1-30 00:30:19 | 显示全部楼层 | 阅读模式

    简介

    由于最近比较无聊,发现了cfw小猫咪,因为不放心别人汉化的文件因为asar里存在bat文件然而百度了一下,0.39.2版本之后的asar文件是加密的,所以我决定以0.42.1版本开始试图反推js并拿到正确的翻译内容,最后还原部分解密部分的代码,目前能做到哪里尚未可知。总体来说重在参与吧

    至于为什么叫大兴土木系列呢,因为这种事情吃力不讨好,并且没钱没意义

    首先参考https://bbs.tampermonkey.net.cn/thread-241-1-1.html

    我们创建一个bat执行asar extract app.asar ./

    自动解压

    再创建一个bat执行asar pack app apptest.asar

    逆向工程

    根据互联网资料找到了renderer.js

    图片.png

    观察代码发现所有的函数都在赋值 a0_0x1b2f

    说明 a0_0x1b2f可能是解密函数

    图片.png

    我们对其进行一个大致的整理

    图片.png

    目前可以猜测是对上方的 a0_0x5a56进行某种操作

    获取字符串组后判断解密程序是否进行初始化

    如果解密初始化后就进行处理

    然后返回内容

    我们测试的方法很简单

    在a0的返回处

    
      return (
        _0x216b60 === undefined
          ? (a0_0x1b2f["JbUzuS"] === undefined && (a0_0x1b2f["JbUzuS"] = !![]),
            (_0x5a567b = a0_0x1b2f["wovbXq"](_0x5a567b, _0x332a52)),
            (a0_0x1b2f["MchjJm"][_0x35e82c] = _0x5a567b))
          : (_0x5a567b = _0x216b60),
        _0x5a567b
      );

    把这段代码改为

      let rettext= (
        _0x216b60 === undefined
          ? (a0_0x1b2f["JbUzuS"] === undefined && (a0_0x1b2f["JbUzuS"] = !![]),
            (_0x5a567b = a0_0x1b2f["wovbXq"](_0x5a567b, _0x332a52)),
            (a0_0x1b2f["MchjJm"][_0x35e82c] = _0x5a567b))
          : (_0x5a567b = _0x216b60),
        _0x5a567b
      );
      console.log('rettext',rettext,_0x231e56,_0x332a52)
      return rettext

    然后打包回asar放进cfw进行测试

    //Continue....

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。

    发表回复

    本版积分规则

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