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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5349|回复: 41
收起左侧

[Web逆向] 【JS逆向】逆向某学英语网站老外开发的刷经验插件

  [复制链接]
zhouvip666 发表于 2020-7-20 01:16
本帖最后由 zhouvip666 于 2020-7-20 19:49 编辑

背景介绍

某英语网站有经验排行榜,每周更新一次。前十位可以进阶。但是有的时候没时间学习,所以经验值不够。在机缘巧合下,发现某该插件可以刷经验,但是该插件是收费,仅试用一天,于是本人开始逆向之旅。

0x1 安装插件

注册该插件需要用到英语网站的用户ID。通过抓包发现,插件运行时会向某URL发送请求,参数正是用户ID,以获取可以执行的JS文件,如果该ID绑定的账号没有充值,在该请求返回一个无效的JS文件,也就无法进行刷经验。如下图提示账号到期:

续费提醒

续费提醒

下面是网站返回的续费提醒JS:

续费提醒代码

续费提醒代码
可以看到,如果账号没有续费,则返回一个alert 提醒JS代码。如果是续费的账号,会返回一个几KB大小的JS文件,该文件可以刷经验值。

0x2 获取有效的JS文件

既然自己的账号到期无法获取到有效的JS文件,那么有没有其他方法获取到有效的JS文件呢?
答案是可以。原因是该插件是通过一个类似于YY的频道激活账号的,每天都会有一些用户在频道内发送自己的账户ID进行自助激活。我可以利用这些新用户的ID进行获取到有效的JS文件,如下图所示:

返回的有效JS

返回的有效JS
返回一个600多KB的JS文件

JS文件截图

JS文件截图
JS文件内容截图,可以看到是被混淆过

0x3 修改插件的请求地址

从步骤2可以知道,该插件是获取网站的用户ID向服务器发送请求。所以能在插件内找到请求的代码,将请求的链接改为我们已经下载好的js文件。当然需要自己在本机上假设一个HTTP服务,并放上下载好的JS文件,这样才能获取到服务器返回的JS文件。

请求服务器JS流程图

请求服务器JS流程图
请求服务器JS流程图

但是你以为这样就成功了吗?当然不是。JS文件会读取token,从token解析出用户ID,然后根据用户ID判断当前是否有续费。由于token会一直被英语网站刷新并写入,所以我们不能修改token,否则会造成网站账号退出登陆。

完整文件付费提醒

完整文件付费提醒
完整的JS付费提醒

0x4 破解付费弹窗提醒

那怎么办?
当然是继续逆向JS文件。
由于JS文件都已经被混淆,所以不能通过搜索字符串来定位到这个弹窗。

仔细观察发现,这个是一个alert提醒。既然是alert,那么久好办了。

通过Chrome的debug命令,在console里下断点:debug(alert),刷新网页,页面会自动断点到该弹窗处,如下图:

alert断点

alert断点

复制里面的代码,通过编辑器打开该JS文件,搜索,找到IF判断,将IF的判断条件改为:if(true),这样不管什么时候都会判断成功,也就跳出弹窗。

iftrue

iftrue
至此完活,收工。

0x5 总结

  1. 获取到原始的JS文件
    方法是借用别人的用户ID
  2. 加载原始的JS文件
    自己搭建HTTP服务器,修改CRX插件的请求链接到自己的HTTP服务器的JS文件
  3. 定位关键代码
    通过debug命令断点alert,定位到关键代码
  4. 移除判断条件
    将if判断的条件改为true,即跳过了判断

本次逆向有很多地方没有介绍。
例如如何给crx插件进行抓包。
如何分析插件的JS代码。

但是本文只是自己摸索逆向的过程中一个记录,并不是多高深的技术,更多的是思路和工具的灵活配合,还希望大家互相交流学习。



某英语网站刷经验脚本.7z

545.43 KB, 下载次数: 6, 下载积分: 吾爱币 -1 CB

需要逆向的脚本

免费评分

参与人数 11吾爱币 +13 热心值 +10 收起 理由
vip11699 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kfd + 1 用心讨论,共获提升!
tail88 + 1 谢谢@Thanks!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
cube + 1 + 1 文章不错,讲思路的就是好文!
大山洞 + 1 已经处理,感谢您对吾爱破解论坛的支持!
幻象 + 1 谢谢@Thanks!
JuDei + 1 + 1 谢谢@Thanks!
sdaza + 1 我很赞同!
youngmonkey + 1 + 1 热心回复!

查看全部评分

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

爱飞的猫 发表于 2020-7-20 04:48

好歹把 JS 解密一下呀…

另外可以在左侧右键条件断点,条件可以填 _0x17db90 = _0x352464 = true, false,就可以自动在那一行修改这两个值然后继续了

免费评分

参与人数 1热心值 +1 收起 理由
幻象 + 1 谢谢@Thanks!

查看全部评分

fushanpupil 发表于 2020-7-20 19:16
zhouvip666 发表于 2020-7-20 19:11
是如何知道它是用sojson混淆的呢?

看混淆风格。。。主要是以前sojson为了版权第一行会写sojson还不让删,你发的把sojson隐去了,同时感觉改过混淆方式,可能版本不一样
 楼主| zhouvip666 发表于 2020-7-24 22:03
jixun66 发表于 2020-7-22 00:28
右键行号,条件断点

false 是为了不断下来,就等于直接执行了代码而不断点。

问题一开始都不知道是判断哪个变量,怎么能按条件断点呢?
mymy69 发表于 2020-7-24 12:49
感谢分享
vip11699 发表于 2020-7-23 18:54
我对JS一窍不通 不知道 应该从哪里开始
领域 发表于 2020-7-22 13:25

通用加密,好解!!!!!!
hbdljt 发表于 2020-7-22 08:46
感谢分享,学习一下。
头像被屏蔽
白云15053 发表于 2020-7-22 08:40
提示: 作者被禁止或删除 内容自动屏蔽
爱飞的猫 发表于 2020-7-22 00:28
zhouvip666 发表于 2020-7-20 15:57
一开始也不知道是判断'_0x17db90 和 _0x352464' 的值。所以怎么添加这个条件断点呢?另外你这个条件断点 ...

右键行号,条件断点

false 是为了不断下来,就等于直接执行了代码而不断点。
bigkingman 发表于 2020-7-21 23:18
感谢分享!
 楼主| zhouvip666 发表于 2020-7-21 21:49
xmhwws 发表于 2020-7-21 08:32
你的开发者工具是中文版?官方不是英文版吗?有汉化?

chromium内核的edge
 楼主| zhouvip666 发表于 2020-7-21 21:48
wg521125 发表于 2020-7-21 06:58
没服务器可以用fidder拦截自动返回修改后的js

这个也试过,但是还是服务器方便些。http服务器软件apache安装简单,拖入js文件即可。我服务器软件基本不管。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

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

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

GMT+8, 2024-5-16 14:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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