记录一次逆向小程序破解加密js的方法

SOJSONV5解密,SOJSON.V5解密方法,SOJSONV5解密分析 首先 JS加密只要给浏览器能运行就是可逆的。 只是难度和时间问题,如果一个加密他有规则,那么他就是可以系统化可逆。 我们来分析下 sojson.v5 ,sojsonv5解密,使用者较多,“百度”、“中国电信”等大公司,已知免费用户有“中国人民法院最高检”、“中国人民银行”、“中国移动” 知名企业都在使用,证明这个加密工具还是值得信奈的。 JS加密:https://www.sojson.com... 阅读详情

逆向js加密可以说是一项特别有难度的技能。小程序目前(以后就不知道)相对安卓来说是比较好逆向的,因为安卓app要上架应用市场,按国家规定必须得要加固的,所以反编译出安卓app的源码比较难,相比而言小程序源码就很容易反编译出来。

首先声明: 此次逆向Js只为学习交流使用,切勿用于其他非法用途,关键代码均打码
  • 首先找到小程序的安装包,可以找个手机,点开小程序后,找到手机文件目录。
#  一般是这样的目录, 当然有的手机我找了很多就是没有,
/data/data/com.tencent.mm/MicromMsg/3444assdaqwqeqwe..../appbrand/pkg/*.wxapkg

# 当然你如果用的某模拟器的话, 可以把问件复制到以下文件夹取出
# /mnt/shared/Other

然后剩下的就是反编译的事情了。

  • 反编译代码地址: https://github.com/qwerty472123/wxappUnpacker
  • 具体反编译步骤就不介绍了,照着github上面的说明就可以了。

需要安装node环境

开始逆向

准备工具

  • 微信开发者工具(需要任意的开发者账号登陆)
  • charles抓包工具(需要配置SSL证书)

首先源代码是这样的
在这里插入图片描述
里面全是这种 “0x3” 这种字符, 第一眼看上去非常蒙,0x开头看上去像16进制的,后面发现上面有一排定义变量的列表,看起来似乎有些奇怪。
在这里插入图片描述
然后在看下上面的js代码,发现列表里面的变量应该是放到下面 0x3这种字符串的。然后照着思路,用Python写了一段脚本,把变量给还原。如下图.
在这里插入图片描述

突破第一关,感觉感觉和打游戏一样,一关一关突破,特别有成就感。

后来才知道,这个代码使用 javascript-obfuscator 这种方式混淆的,就是变量的一些替换,参考 网站 http://blog.w3cub.com/blog/2019/04/01/js-confusion/

虽然目前突破了很多,但是依据不知道从何看起,于是我们开始从抓的接口入手,全局搜索关键的参数。接口返回值类似以下这种:

post https://xxx.xxx.com/xx/getList
# 一些header
# 请求json data
{
    "ct": "xxxxxxxxxxxxxxxxxxsTgmWw7daVIPgHybg4A5OzJk7SUsD+76+KshYmiwCxUfGh1XO2UkwAgcpAbIjNg2gOhVUlZYpDzxjLbmD7vExvZgCGiQ4G25Uftd/Pt/hVctE2lMMLVHY8xzyv3Qrf8MmldLzyCvc6olNKyIs4bY/nKTdyC3YM/4TkXNouLNWoGY/h618Mq0H+1pd2Co8e6NfiZ8+1axwkiebN8cagIG1yCdW4oH83zeK+AjCavorDVMm",
    "iv": "xxxxxxxxxxxac200a8059d86fc65651bbc68b",   // 长度32
    "s": "xxxxxx6dfb6e66"
}

# 返回的json 一样格式的json
{
    "ct": "特别长的字符串xxxxxxxxxxxxxxxxxxsTgmWw7daVIPgHybg4A5OzJk7SUsD+76+KshYmiwCxUfGh1XO2UkwAgcpAbIjNg2gOhVUlZYpDzxjLbmD7vExvZgCGiQ4G25Uftd/Pt/hVctE2lMMLVHY8xzyv3Qrf8MmldLzyCvc6olNKyIs4bY/nKTdyC3YM/4Txxx.....",
    "iv": "xxxxxxxxxxxxxxxxxxxxx",    // 长度32
    "s": "xxxxxxxxxexxxxxxx"
}


看到抓取的iv参数的时候,第一反应用的是aes加密,aes有好几种加密方式,光知道这个参数也毫无卵用,于是我全局开始搜索 post 地址的关键参数getList,果不其然,没有搜索到。
因为有时候别人为了防止被逆向,不会直接在代码里面写上getlist 这样的变量,而是通过单个字母,然后通过一系列的干扰操作,然后合成这个变量,所以全局搜索根本就搜不到。搜到的只是单个字母,而单个字母,在整个项目代码里面,跟没有一样。(tip: 有时候用ide配合正则全局搜索,会有意想不到的结果)

换个思路,着手试着启动下小程序hook一下,试着看看各个参数,跑起来究竟是什么。(其中有些小坑,比如设置不校验域名合法之类的)
稍微可行,但是还是有些盲目,于是我开始搜索发送post请求的地方,没想到居然给搜出来了。
在这里插入图片描述
但是还是不明白,没办法就只能一步步向上,看这个a函数在哪被引用,这时候就很枯燥了,其中还有很多js函数的小知识点,比如闭包函数呀,还有什么js的常量参数,没有js的知识,基本到这里 就劝退了。

…

经过很长时间,我终于找到了生成关键参数所在的位置!
在这里插入图片描述
我所打印的o就是生成的参数,e就是加密之前的原始参数,基本就和请求参数对上了。然后试着用这个参数,用Python requests函数,模拟着发送一次请求, 测试看看,测试发现成功返回了,参数看来是正确的。

于是就开始,往上找e这个参数经过的路由函数,一顿找,边找边调试。
…

终于找到了加密的地方所在。代码里面引入了很多加密的库文件,但是用到的只有md5 和 aes 库。

具体代码我就不贴出来了。写了很多干扰 无用的js函数,幸好能调试,一步步打印找到了。然后用node.js环境本地把关键的地方复制出来,跑一遍,测试能否生成一样的参数

本想着用Python还原aes加密解密的, 实现来实现去,还是和原始js生成的不一样。算了还是直接用 pyexecjs 库直接调用js函数,虽然性能上慢一些,但是不碍事。

至此加密解密就结束了。

  • 总结:
  • wx小程序的写法,文件目录结构都比较统一,而且基本都是js代码,但是安卓客户端就不一样了,难度一下子就高了起来。
  • 客户端的加密解密都是能破解的,这次逆向,我觉得最主要的就是能跑起来,可以调试。当然不能跑起来,也能找到加密解密方法,但是耗时和难度就更长一些。
  • 逆向js说实话,经验作用不是太大,无非就是工具熟练一些,因为要面对的是不同公司写的加密解密代码,所以每次逆向都是新的挑战。

关于还原sojson_v5加密的代码

使用Python正则还原了sojson_v5代码,算是半自动操作
https://github.com/CoderCharm/JsDecrypt/tree/master/sojson_v5

对应使用博客
https://www.charmcode.cn/article/2020-06-14_js_decryot

Cocos2dx-js 资源.jsc和.pkm反编译 阅读详情

相关推荐

记录一次得物App H5逆向

在分析过程中,发现大量明文对浏览器环境的监测,防止大家放到node里面一把梭,总的来说是做算法更容易一些。tip]对得物的防护建议:对关键字符串进行加密,此文件中多次出现encrypt关键字,并且AES加密也没有进行隐藏,很容易搜索定位到。建议取消无限debugger的防护,这样给人一种此地无银三百两的感觉,直接定位到了关键加密的函数。

jiqiu2021的博客 3556

sojson.v5 | jsjiami.com.v5 最新解密方法

sojson.com|jsjiami.com|最强js加密解密

mxd01848的博客 1万+

JS逆向实战:破解网易云音乐评论接口的AES与RSA加密

在Web开发与数据采集领域,JS逆向是应对前端加密与反爬机制的核心技术。其原理在于分析网页中JavaScript代码的执行逻辑,特别是对关键网络请求参数的生成过程进行解密与复现。这项技术的核心价值在于,当目标网站(如网易云音乐)对核心数据接口(如评论、歌单)采用非对称加密(RSA)与对称加密(AES)组合方案时,传统的简单HTTP请求将失效。通过逆向工程,开发者可以定位并模拟前端加密函数,从而在Python等后端环境中生成合法的请求参数,实现自动化数据获取。典型的应用场景包括音乐数据分析、舆情监控或学术研究

weixin_28622215的博客 936

python实现sojson V5反混淆

python实现sojson V5反混淆 在经过一些试验后,发现sojson几乎所有版本的混淆都包含这三部分,不同的只是。前提是js代码能在脱离浏览器环境下运行,可以先在fiddler中试运行一下。思路:调用函数b完成解密以上数据,还原过程是将b函数返回的数据替换还原即可。,因此我们只需要找到解密函数,然后进行手动调用就可以还原字符串。sojson V5方式的加密分为了。在知道加密方式后,我们可以知道。

qq_45812313的博客 2026

【JS逆向】实战演练!破解某电商sign签名与MD5加密的奥秘

本文通过一个典型电商平台案例,手把手教你进行JS逆向实战,破解其sign签名与MD5加密机制。文章详细拆解了从抓包定位、算法分析到Python复现的全过程,重点解析了参数拼接、加盐及标准MD5加密等核心步骤,并提供了实用的避坑指南,是逆向分析入门的绝佳实践。

rose2的博客 966

Python爬虫实战:逆向JS加密破解黑猫投诉数据抓取

在网络数据采集领域,JavaScript加密是常见的反爬虫技术手段,它通过前端混淆和动态生成参数来保护数据接口。其核心原理在于,网站将关键请求参数(如时间戳、查询条件)通过特定的JS算法进行编码或哈希处理,生成不可预测的签名(如sign、token),服务器端通过验证这些签名来区分合法请求与爬虫。这项技术的工程价值在于,它迫使爬虫开发者必须深入理解前端逻辑,模拟浏览器行为,从而提升了数据获取的技术门槛。在实际应用中,这常见于电商、社交、舆情等需要保护数据资源的平台。本文以黑猫投诉平台为例,详细拆解了如何通过

weixin_31364787的博客 1091

js逆向实战

最近遇到了很多加密问题,需要做js逆向,app逆向。 就简单写一个破解成功的js逆向案例吧 就我个人而言,不太喜欢写爬虫相关的实战方法,毕竟灰色地带。 首先声明,本文仅做技术交流,请不要用于商业用途。 如有侵犯,请联系删除。 1.定位问题 直入主题,我们首先发现这题在哪 看一下这段url 我们把params拿出来 jsv: 2.5.1 appKey: 12574478 t: 1588565848...

weixin_43145985的博客 4449

JS逆向实战:破解前端AES加密表单,Python爬取加密数据

在Web开发与数据采集领域,前端加密是保护数据传输安全、防止恶意爬虫的常见技术手段,其核心原理在于利用JavaScript在浏览器端对请求参数或数据进行混淆或加密处理后再发送至服务器。理解其技术价值,不仅有助于开发者构建更安全的Web应用,也是数据分析师、爬虫工程师应对反爬策略、合规获取公开数据的必备技能。典型的应用场景包括登录认证、表单提交、API接口防护等,其中AES对称加密因其安全性和效率被广泛采用。本文以一次真实的招标数据抓取为例,聚焦于前端AES-CBC加密表单的逆向分析与破解,详细拆解了如何通过

weixin_32234493的博客 817

js逆向破解 —— 懂车帝视频链接

背景 话说下午有一朋友发我一链接https://zjbyte.cn/i6615388842591518733/,让我帮忙看一下这个网页中视频链接是怎么获取的。我断断续续地花了两三个小时,最后终于把它给拿下了。在整个分析的过程中,我觉得还算是有点意思,所以写下这便博客,记录一下。 初步分析 话不多说,撸起袖子就是干。我打开了网页,并打开了 开发者工具 ,并在 network选项卡中清除掉请求,重新刷...

Mr.louis 7266

js逆向协议破解滑块验证

文章目录目标网址hook方式过掉无限debugger初步分析-验证滑块获取滑块图片再次分析验证滑块流程pointJson参数逆向分析滑块缺口距离识别AES加密python版实现整合一下整个流程 目标网址 https://bz.zzzmh.cn/index 这个网站从第二页开始会有滑块验证: 我们这次主要任务就是盘它! hook方式过掉无限debugger 打开开发者工具,有无限debugger反调试: 我们直接给它hook掉: var _constructor = constructor; Funct

自成背后的博客 7608

解密cocos creator jsc到js

可以把cocos creator加密的jsc解密成js cocos-jsc-endecryptor-2.0 需要先获取加密密码 然后使用cocos-jsc-endecryptor-2.0 解密jsc为js文件

【Js基础一】解密前端加密:掌握JavaScript逆向,轻松破解复杂数据!

jsjavaScript是一种弱类型语言,也就是说不需要指定变量的类型,JavaScript的变量类型由它的值来决定, 定义变量需要用关键字 'var', 一条JavaScript语句应该以“;”结尾var 变量名 = 值;//同时定义多个变量可以用","隔开,公用一个‘var’关键字函数就是可以重复使用的代码块, 使用关键字function定义函数。// 函数定义');定义函数时,函数如果有参数,参数放到小括号里面,函数如果有返回值,返回值通过return关键字来返回arguments。

kdayjj966的博客 3160

Cocos2dx-js android项目中.jsc文件反编译软件

第一步:打开apk文件的lib目录下libcocos2djs.so文件,用编辑器utf-b模式打开,搜索jsc文件,关键词:Cocos Game 紧接着的 22040xxx-xxx-xx就是密码 第二步:使用cmd命令,decrypt -pw 22040xxx-xxx-xx -f C:\tt\index.jsc,即可反编译出js文件源文件 反编译反馈下面代码即是反编译成功: cocos creator script decrypt version 1.0 C:\tt\index.jsc decrypt success Press Enter Exit 反编译的js文件和源文件在同一个目录下

某雷池waf demo版本逆向破解学习记录

某雷池waf公开的demo版本反爬点一般是防调试、浏览器指纹,在这基础上通过它的接口请求拿到有效cookie即可。

九月镇灵将的博客 2635

ADS 2024实战:手把手教你搞定CGH40010F的Doherty功放仿真与版图(附避坑指南)

本文详细介绍了使用ADS 2024进行CGH40010F Doherty功放从仿真到版图的全流程设计,涵盖器件建模、稳定性分析、负载牵引匹配和版图联合仿真等关键步骤。特别针对新手常见问题提供避坑指南,帮助工程师高效完成射频功放设计,提升5G基站和雷达系统的性能。

weixin_42528191的博客 221

用4690张图片搞定物流仓储难题:手把手教你训练YOLOv8纸箱检测模型(附完整源码)

本文详细介绍了如何利用YOLOv8目标检测技术解决物流仓储中的纸箱识别难题。通过4690张图片构建高质量数据集,提供完整的训练教程和源码,实现98.7%的mAP@0.5准确率。文章涵盖数据采集、模型训练、调参技巧到边缘计算部署的全流程,帮助读者快速构建智能仓储检测系统。

weixin_28717939的博客 378

记录一次破解前端加密参数的过程

爬虫——记一次破解前端加密详细过程 摘要:工作差不多快一年了,应工作需要爬过各种各样的航空公司网站,大到B2B平台,小到东南亚某某航空官网,从最初使用webdriver+selenium爬虫到现在利用http请求解析html,经历过各种各样的问题,webdriver+selenium这种办法虽然万能,而且可以用JS写解析脚本方便调试,但是用久了才发现这玩意不管是效率还是稳定性都非常差,放到服务器...

weixin_38859557的博客 2801

磁悬浮轴承控制策略设计及性能对比

摘要:针对高速磁悬浮转子控制问题,本文提出多方案对比分析。建立含陀螺效应的5自由度动力学模型,分析陀螺耦合、质量不平衡等关键挑战。对比四种控制策略:基础PID解耦、交叉反馈+自适应陷波、H∞鲁棒+前馈补偿、滑模控制+观测器,从实时性、鲁棒性等维度评估优劣。推荐采用交叉反馈+H∞+自适应陷波的混合方案,通过内环电流环与外环位置环协同,实现陀螺效应动态解耦和扰动抑制。实施步骤包括系统辨识、控制器设计、硬件部署等,需配合实验验证与参数整定。该方案综合性能最优,适用于高转速、强扰动场景。

技术工作者 1776

初探js逆向:全流程记录AI辅助爬虫加密参数解密

那么猜测当然是不准的,这里其实有个关键点,他告诉我这些加密函数是从外面导入的,比如g函数就是由a(‘6738’)导入的,我们直接在所有js中搜索6738。(如图 5 所示)图 5:在所有 js 中搜索加密函数导入关键字 “6738” 的结果就能看到这里有一个疑似函数定义,把这段代码发给ai一问,果然是的。在此郑重强调,本文纯粹是为了记录技术思路而撰写,整个过程仅用于技术研究和分享,笔者在后续也并未通过破解加密的方式非法获取数据。

m0_62498496的博客 1685

一阶电路基础知识

一阶电路(First-order circuit)是指由一个电感(L)或一个电容(C)和一个电阻(R)组成的电路。根据电感或电容的位置,一阶电路可以分为RC电路、RL电路、LC电路、RLC电路。一阶电路常用于滤波、放大、时序控制等各种电子设备和系统中。通过调整电阻、电容或电感的数值,可以改变电路的频率响应、滞后/提前相位等特性,实现不同的功能和性能一阶、二阶电路区别一阶电路由一个电容或一个电感与一个电阻组成,而二阶电路则由两个电容或两个电感与一个电阻组成。

weixin_45365488的博客 1万+

WIFI基础入门--802.11g--增强速率物理层ERP--15

WIFI基础入门--802.11--增强速率物理层--191.802.11g的组件保护机制 1.802.11g的组件 802.11g其实是将好几种物理层规范合而为一。虽然统称为增强速率物理层(Extended Rate PHY简称ERP),但是实际上ERP有好几种不同的方式: ERP-DSSS与ERP-CCK 这两种模式向下兼容于原始直接序列规范(1Mbps与2Mbps),以及所提到的802.11...

香蕉一号 4619

js逆向学习记录某真气网

爬取某真气网气象数据,破解对方反爬手段。例如 无限debuger,JS文件实时变化,eval混淆,数据加密,数据解密等其它反爬手段。

m0_68222168的博客 1500

19、英国模式:银行体系的演变与现代金融架构

本文深入探讨了英国银行体系从专业化向全能银行的演变过程,分析了自律监管模式的优劣,并解析了围栏制度对金融稳定的影响。同时,文章还介绍了信用合作社、建筑协会和投资银行的角色与转型,全面展示了英国金融体系的多样性与复杂性,以及其在全球金融市场中的重要作用。

embedding5hiker的博客 105

python爬虫之逆向破解_js逆向爬虫实战(2)--新快之加密参数破解

爬虫js逆向系列我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现。我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路。怎么突破的,遇到这个问题怎么思考,尝试的方法有哪些。这样就可以有的放矢。希望对大家有用爬虫认知在程序猿所有的方向中,爬虫是离money最近的一个方向,你的明白?而且爬虫可发展的方向很多,前可走大数据,人工智能,后可...

weixin_39994949的博客 877

论文阅读:Training language models to follow instructions with human feedback

这篇论文的目标是通过引入一种基于人类反馈的训练方法,来让语言模型更好地按照用户意图行事。这是因为大规模语言模型虽然强大,但有时候会生成不准确、有偏见或者对用户无帮助的内容,这说明它们和用户的需求之间存在一定的“错位”。论文提出了一个新方法,将 GPT-3 进行优化,称为示例数据与监督学习:让人类标注员生成一些正确行为的示例,并使用这些示例来初步优化模型。比较数据与奖励模型:让标注员比较模型生成的多个输出,并将其排序,从中学到模型输出的优劣规则。强化学习优化:基于这些规则,使用强化学习算法进一步优化模型。

CSPhD-winston的博客 1717

相机Camera日志分析之二:高通CamX架构对应Google原生Camera HAL3架构的标准API接口一级日志详细分析注释

【思维决定成长高度】当前讲述的是Camera领域log分析梯度分级讲解,讲究的是一种分析技巧,分析思维,一种感悟。技术路线的提升空间,需要更多开发技巧和开发学习能力去提升。技术大拿分析问题,可以从日志快速定位问题并解决问题,有充分的时间去学习更多知识,成长速度极快。同一起跑线,学习能力,开发效率等等都决定了程序员的成长提升空间。记得我毕业三年,同学之间的差距无限拉大,一些人还在几千块薪水,你已经是他的四五倍了,人与人的差距就是短短几年就拉开了。

431
上一篇: Python 用字符串名调用方法
下一篇: 《日常踩坑系列》关于使用charles抓包工具
wgPython
博客等级 码龄9年 100粉丝 69原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值