某网站破解备忘

news/2024/4/27 9:01:24/文章来源:https://blog.csdn.net/weixin_33901926/article/details/88691383

某网站采用了多种反破解手段,特此开贴记录分析破解过程。

工具和参考

  • awesome-java-crawler - 我收集的爬虫相关工具和资料
  • java-curl - 本人写的java HTTP库,可用来替换chrome网络后端,更方便控制底层行为,如缓存、代理、监控、修改请求和应答等
  • cdp4j - java版的Chrome Devtools Protocol实现,用于控制Chrome浏览器,没有特征哟
  • beautifier.io - js代码在线格式化
  • 类似网站的破解 - 神箭手云的大佬写的
  • 很早的一篇分析文 - 看特征是这种加密的早期版本

网站反破解手段

反动态分析(即反调试)

  • Chrome中,F12打开开发者控制台,发现立即停在断点上了
  • 断点处源码为:
(function() {var a = new Date(); debugger; return new Date() - a > 100;}())
  • 此处可能有两种作用:

    1. 使用debugger调用显式设定断点,且使用定时器高频次调用此段代码,如果破解者不厌其烦,禁用调试,那么破解者等于自缚手脚,也无法设定断点进行动态分析了
    2. 此方法返回了debugger语句的执行时间是否大于100毫秒,意味着可以根据返回值判断出是否有破解者正在试图调试当前脚本

代码动态混淆

  • 代码经过混淆,所有变量,方法都被更名为形似"_$xx",代码中所有字符串和部分常量也被替换,部分常用方法也被替换。因此基本上不可读
  • 以上述方式加密的代码共分4部分。

    • 一部份代码加密混淆后放在html文档内部,同时还在文档头部有大量高度混淆的纯数据,此部分估计也是加密的代码,类似

      <meta id="9DhefwqGPrzGxEp9hPaoag" content="LotupvYp..."/>
    • 一代码直接在页面加载js获取
    • 还有两小段代码应是页面js执行过程中动态加载
  • 以上述方式加密的4段js代码,每次刷新都会变化,不仅仅是变量名有变化,方法顺序也有变化,估计要么是服务端有一堆预先生成的js,或者是每次服务器端根据AST重新命名并乱序后生成等价的js
  • 此手段导致很难动态跟踪分析,因为在pretty print后的某行代码上设定断点后重新刷新执行,由于js变化了,之前设的断点就失败了
  • 对策,本地代理+自定义缓存,避免每次代码变动,这样既可进行动态跟踪分析

客户端生成Cookie

  • 页面加载完成后,分析cookie,发现有一个FSSBBIl1UgzbN7N80T的值和前面应答中Set-Cookie的值不一致,说明客户端js对cookie进行了修改
  • 此Cookie的值很长,估计包含浏览器特征等关键信息
  • 常规手段无法对cookie的读写设定断点,不过github上找到几个可以增强js断点能力的库/插件
  • 目前采用javascript-breakpoint-collection来在cookie修改处设定断点
  • 具体方法是用Page.addScriptToEvaluateOnNewDocument()把上述库js代码注入,这样可以确保在其它脚本加载前注入
  • 设定断点后,发现页面首次加载会设定一次cookie值,然后每隔1分钟左右还会更新该值
  • 但是因为代码高度加密,尚无法解析cookie值生成算法

反PhantomJS, Selenium

  • 通过动态分析调试,可知此种加密算法将全部字符串常量保存在全局对象中,其变量名特征为_$xx
  • 因此,可以在控制台运行一小段程序遍历window对象中所有前缀为_$的变量,从而获取到字符串映射表
  • 通过此方法导出的映射表中包含以下内容:
    "_$iQ": "_Selenium_IDE_Recorder,_selenium,callSelenium","_$cv": "__driver_evaluate,__webdriver_evaluate,__selenium_evaluate,__fxdriver_evaluate,__driver_unwrapped,__webdriver_unwrapped,__selenium_unwrapped,__fxdriver_unwrapped,__webdriver_script_func,__webdriver_script_fn","_$a6": "webdriver-evaluate","_$bs": "callPhantom,_phantom",
  • 由以上代码可知,前端代码对phantomjs, selenium等常用浏览器自动化框架的特征有判断或采集行为,并可采取针对性措施,比如应答错误数据等
  • 因此,如果使用基于浏览器的破解方案,只能采取以下述方案之一:

    • 自行修改自动化框架,修改特征
    • 修改前端js代码,改掉特征检测逻辑
    • 使用其它不基于webdriver (selenium), phantomjs的浏览器自动化框架

禁用桌面版浏览器

  • 以前用cdp4j控制chrome模拟整个流程是ok的,但是某网最近一次更新后,彻底禁用了桌面版chrome,其表现为可以打开前几个页面,但是登录和计费提交时返回201,404等非正常应答
  • 估计是在前面步骤收集浏览器特征,加密后放到cookie中,在若干关键步骤如登录和计费的服务端处理中,解析出浏览器特征,禁用掉桌面版浏览器
  • 试过覆盖User-Agent, navigator.platform='Linux armv7l'和window.width/height等,但无效,在未能分析完整特征收集代码的情况下,很难猜测其逻辑

使用安卓版浏览器的坑

  • 使用真实手机安装Chrome69版,确保adb连接后,使用这篇文档的方法,即可从桌面浏览器连接到手机Chrome并可使用inspector页面远程控制
  • 但是安卓版inspector的地址在blogspot上,在墙外,因此还需要翻墙……
  • 因为真实手机对整个程序的架构和成本有重大影响,因此尝试改用模拟器
  • 测试过逍遥和夜神,后来选用逍遥
  • 使用前面的chrome apk包可以正常安装,但打开页面空白
  • 经搜索发现需要x86版的chrome,在apkmirror下载到69版,模拟器安装后可以正常使用
  • 使用cdp4j连接,发现连接成功的几率非常低,Target.createTarget返回的targetId无法正常连接
  • 在连接成功的一次中,发现模拟鼠标滑动失效,怀疑是桌面版和安卓版的坐标计算方法不同
  • 可能需要综合分析inspector的api调用顺序后,自己编写cdp连接chrome的代码。需要借助chrome-protocol-proxy分析inspector的具体逻辑
  • 或者验证下chrome-remote-interface能否正常连接chrome,如正常则可以参考node版本编写java版本

IP限制

  • 注册用户/修改密码的SSO站点和主站地址不一样,估计是另一批人做的,这个站点对IP进行限制
  • 目前发现的规则是:

    • 所有的ISP(机房)IP 直接封掉,这一招干掉了所有用云主机和肉鸡做代理的
    • 芝麻代理等几家的收费IP也大部分不可用,估计是同行用过被加入黑名单了

鼠标动作收集

  • 使用注入js代码模拟点击按钮即可实现大部分页面的操作
  • 但是在计费对话框页面上,直接js代码导致服务器返回错误
  • 发现需要模拟真实鼠标点击,而且不能简单直接点击按钮,需要在页面的其它部分先点击一下再点击提交按钮才能生效,估计是js收集了鼠标动作,提交时将数据加密后放到"MmEwMD"参数中

目前已发现使用此手段加密的网站收集:

  • 食品药品监督管理局
  • 中国商标网
  • 裁判文书网
  • 咪咕阅读
  • 神州租车
  • 湖南移动
  • 网上房地产

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_700711.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PrestaShop 网站漏洞修复如何修复

2019独角兽企业重金招聘Python工程师标准>>> PrestaShop网站的漏洞越来越多&#xff0c;该网站系统是很多外贸网站在使用的一个开源系统&#xff0c;从之前的1.0初始版本到现在的1.7版本&#xff0c;经历了多次的升级&#xff0c;系统使用的人也越来越多&#xff0c…

RubyGems 库发现了后门版本的网站开发工具 bootstrap-sass

安全研究人员在官方的 RubyGems 库发现了后门版本的网站开发工具 bootstrap-sass。该工具的下载量高达 2800 万次&#xff0c;但这并不意味着下载的所有版本都存在后门&#xff0c;受影响的版本是 v3.2.0.3&#xff0c;研究人员呼吁用户尽可能快的更新&#xff0c;认为可能有数…

一:搭建一套免费的serverless网站

因为公司需求&#xff0c;需要快速搭建一个公司内部能够访问的资源查看管理的 PC网站&#xff0c;因为没有服务器&#xff0c;没有后端开发&#xff0c;又要快速上线使用&#xff0c;那么 serverless 就成了我的首选方案&#xff0c;下面从零开始搭建。 步骤一. 准备工作 1. …

二:serverless网站数据库操作

操作数据库API文档 第一篇&#xff0c;搭建一套免费的serverless网站 一&#xff0c;创建集合&#xff0c;进入控制台 登录腾讯云后台 打开云开发控制台 可以新建集合&#xff0c;新建集合后点击集合名称即可批量导入导出数据库集合的数据&#xff0c;还可以设置数据库访问的…

前端开发学习常用网站网址及介绍(都是免费的)

在开发的时候&#xff0c;想记住所有的单词基本是不可能的&#xff0c;所以就需要进入文档&#xff0c;只要理清需求能做出来&#xff0c;就很不差了&#xff01;&#xff01; 扫码加博主微信 1.百度&#xff0c;俗称度娘&#xff0c;有不懂的就问百度&#xff0c;有问必答&am…

arial unicode ms字体_5个检测商用字体和免费字体合集的网站

对于做新媒体和设计的小伙伴来说&#xff0c;最恐慌的就是加班、改稿、脱发、没钱...侵权问题了。一个不注意就是律师函警告。正所谓律师函不是不到&#xff0c;只是晚到。所以&#xff0c;皮皮特意为小伙伴们搜集了这5个远离字体侵权的网站&#xff0c;有检测字体版权的&#…

大型网站采用什么系统架构保证性能稳定性

from http://www.bobd.cn/design/web/Theory/200904/31145.html 千万级的注册用户&#xff0c;千万级的帖子&#xff0c;nTB级的附件&#xff0c;还有巨大的日访问量&#xff0c;大型网站采用什么系统架构保证性能和稳定性&#xff1f; 首先讨论一下大型网站需要注意和考虑的问…

『网站升级』PHPWind8.0至8.3升级过程及问题种种回顾录

上星期的PHPWind杭州峰会之后&#xff0c;PHPWind发布了8.3版。紧接着淘连接&#xff0c;淘满意&#xff0c;团购PHPWind的一系统ARP应用开始进入我们公司技术苦力的耳朵里&#xff08;也就是偶&#xff09;&#xff0c;偶知道有大事要发生了。于是乎。领导悠然降至&#xff0c…

vs中将网站aspx.cs文件打包成一个dll

vs中将网站aspx.cs文件打包成一个dll 23小时前 vs中将网站asp.net cs文件打包成一个dll。 在vs2008以上的版本中可以建立web应用来开发网站&#xff0c;这样网站aspx.cs文件【生成网站】的时候就会自动生产单个dll&#xff0c;如果使用的是网站的话那就不能。那介绍一种微软提…

一些与算法有关的网站

//转自&#xff1a;http://www.cnblogs.com/a180285/archive/2012/01/15/2290290.html //------------------------------------------------------------------------------------------------------------------------------------------------------------ 我在网上到处找了…

让你的网站提速:图片优化网站推荐

页面的加载时间是每一个设计师都担心的数据&#xff0c;或者至少是每个设计师都应该担心的问题。图片的大小肯定是一个需要留意的问题。这就是为什么在这里写了几个有助于优化页面中的图片的小技巧&#xff0c;这些小技巧将有助于大家解决这个问题&#xff0c;这些小技巧也可以…

编程学习网站收集

目录 1. 菜鸟教程 1.1 Java 教程 1.2 HTML 教程 1.3 CSS 教程 1.4 JavaScript 教程 1.5 JSP 教程 1.6 Servlet 教程 1.7 jQuery 教程 1.8 AJAX 教程 1.9 MySQL 教程 2. 易百教程 3. w3school 在线教程 1. 菜鸟教程 菜鸟教程 (www.runoob.com) 提供了编程的基础技术…

Chrome(谷歌)插件开发 监听网站的异步请求

为什么要开发这样的一个插件&#xff1a;微信小程序用户反馈 不能知道那些问题是被回复了以及回复了什么内容&#xff0c;所以需要去监听这个网站的回复内容。由于它的客服系统获取聊天信息都是异步的&#xff0c;可以通过监听网站的异步请求 获取到参数、响应结果&#xff0c;…

Java项目:旅游网站管理系统设计和实现(java+springboot+jsp+mysql+spring)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 运行环境: java jdk 1.8 IDE环境&#xff1a; IDEA tomcat环境&#xff1a; Tomcat 7.x,8.x,9.x版本均可 主要功能说明&#xff1a; 管理员角色包含以下功能&#xff1a;管理员登录,用户管理,旅游路线管理,…

Java项目:家政服务网站系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 本系统主要实现的功能有&#xff1a; 项目功能较多&#xff0c;包括用户的注册登录&#xff0c;家政0员务的查看&#xff0c; 分类&#xff0c;预订&#xff0c;以及支付&#xff0c;订单信息…

页面布局让footer居页面底部_网站各页面该如何布局关键词优化提升排名?

在网站优化中&#xff0c;最值得关注的一个事情就是关键词的布局&#xff0c;因为关键词的布局直接影响着网站的排名。那么怎样布局关键词才能提高页面和关键词的相关性&#xff0c;并提高网站排名呢&#xff1f;下面一起来看看。一、利用HTML标签布局关键词众所周知&#xff0…

Java项目:在线美食网站系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能&#xff1a;用户的注册登录&#xff0c;美食浏览&#xff0c;美食文化&#xff0c;收藏百 科&#xff0c;趣味问答&#xff0c;食谱等等功能等等。 二、项目运行 环境配置&#xff1a;…

关于大型网站技术演进的思考(五)--存储的瓶颈(5)

上文里我遗留了两个问题&#xff0c;一个问题是数据库做了水平拆分以后&#xff0c;如果我们对主键的设计采取一种均匀分布的策略&#xff0c;那么它对于被水平拆分出的表后续的查询操作将有何种影响&#xff0c;第二个问题就是水平拆分的扩容问题。这两个问题在深入下去&#…

5个在线调试代码的网站

对于编程开发的人来说&#xff0c;有个快速测试代码的地方是非常方便重要的&#xff0c;这里&#xff0c;我们收集了5个很好用的在线调试网站。 1.codepad 是一款简单的在线 IDE 编辑器服务&#xff0c;你只需要把代码粘贴进去就可以编译运行了&#xff0c;连工程也不需要新建&…

[转载]从100PV到1亿级PV网站架构演变

首页最新文章在线课程业界开发IT技术设计创业IT职场投稿更多 - 导航条 -首页最新文章在线课程业界开发- Web前端- Python- Android- iOS- Java- C/C- PHP- Ruby- GoIT技术- Linux- UNIX- MySQL- NoSQL- 数据库- Git- 算法- 测试- 信息安全- Vim设计- 网页设计- UI设计- 交互设计…