拼刀刀店铺后台的参数Anti-content逆向分析
时间:2025-11-05 15:48:26 出处:人工智能阅读(143)
大家好,拼刀铺后我是刀店黑脸怪。今天给大家分享pin嘻嘻逆向。参数
分析网址:aHR0cHM6Ly9tbXMucGluZHVvZHVvLmNvbS9nb29kcy9nb29kc19saXN0
1.介绍-为什么要逆向anti-content参数
用代码访问后台数据不带anti参数的向分析话会提示“访问频繁”,所以需要逆向出这个参数!

2.开始逆向js
2.1 找参数所在位置-先在控制台全局搜索参数名字
搜索出来10个结果 不算多,拼刀铺后每个都点进去 在差不多的刀店关键词位置打上断点先。

因为它Ajax请求每个页面都要anti参数 所以我们下断点之后随便点个按钮都能用 已经断下来了,参数这个aa1d开头的向分析js文件(你们的不一定叫这名),可以把其他断点取消了,拼刀铺后现在来着重分析这个。刀店


return Promise.resolve(u(t.rawFetch, d).catch((function() {}
直接f8放过去 再重新点一次 会到达上面那个断点
f11单步调试进来 会跟到这里
getCrawlerInfo: function(t) {
return Promise.resolve(G((function() {
var e = I.a.getInstance(t);
return Promise.resolve(e.getServerTime()).then(F)
}
), (function() {
return ""
}
)))
}
对于异步不太懂的 我这里强行演示一波 (百度小抄一下改改) 
//1. Promise.resolve("111")
Promise.resolve("111")
//Promise {
// [[Prototype]]: Promise
// [[PromiseState]]: "fulfilled" 这是完成的状态
// [[PromiseResult]]: "111" 这是结果
//2.Promise.resolve("").then(函数())
Promise.resolve("我是参数?").then(function(a){console.log("111",a);return "123"})
//111 我是参数?
//Promise {
// [[Prototype]]: Promise
// [[PromiseState]]: "fulfilled"
// [[PromiseResult]]: "123"
所以e是时间戳,f是主要函数 下断点到这 f8直接过来 再单步两次到F


要的是里面的这串代码 :new一个对象 对象传入一个包含serverTime的云南idc服务商对象这里我也不太理解 最后messagePack肯定就是方法了。。向分析。拼刀铺后不管他直接复制在控制台跑一下出结果了。刀店
new (n("eDaA"))({
serverTime: t
}).messagePack()


n("eDaA") 我第一眼看这不就是参数个webpack吗 当时觉得还是以前的玩法 找到n方法的加载器 再复制eDaA这个模块就可以跑了。没想到跟进去发现 eDaA里面又是一个加载器和模块 第一次见到这样的 没玩过,研究了半天
eDaA导出fbeZ fbeZ又导出里面的整个webpack
所以最后我们只要fbeZ里面的webpack 跳过第一层直接取它, 因为它是第二层的 加载器不适用,需要找个通用的加载器

下面的加载器可以输出"111"就行
window=global;
!(function (e) {
var i = {}
, o = {
index: 0
}
function c(t) {
if (i[t])
return i[t].exports;
var n = i[t] = {
i: t,
l: !1,
exports: {}
};
// console.log(t)
return e[t].call(n.exports, n, n.exports, c),
n.l = !0,
n.exports
}
window.hliang1 = c
}
)([
function(e,t,n){
console.log("111")
}
])
window.hliang1(0)


复制过来后 把前面列表的[和屁股后面的}]删除掉一个 因为会复制多
因为用notepad++代码格式化的问题,有一个模块会提示代码有问题
去网站重新粘贴一下这串代码到vscode(pycharm)


这样就完成了,用window.hliang1 就可以调用模块了
下面开始复制qe对象
它new 的企商汇qe对象就在模块里面啊,我不知道怎么直接new 所以新建了一个函数 然后对它改写


全部复制下来
function hliang_qe(){
//复制进这里来
}
(function (e, t) {}).call(this,a,b) 这种就是 把a,b传参到e,t
所以改写 匿名删除去掉,.call去掉,传参的e,t直接设置成
var e=window.hliang1(3) 还有其他地方n() 这里加载器名字改一下
t原本的作用是导出(t.exports)那我这里不要t了 直接导出改成return
如下图


复制到浏览器执行,成功出结果。但是这个代码在node.js还需要补环境和改环境。

3.环境检测
在浏览器能跑 在node.js跑不了 需要补环境。
这都啥报错啊,看不懂。 先上环境吧。


算了懒得写了。
直接告诉你们要补啥吧。
cookie和localStorage.Item传入自己的就行了 过期的也没事
window = global
document={
addEventListener:function addEventListener(a,b){
// console.log("addevent",a,b)
return undefined
},
referrer:,
getElementById:function getElementById(a){
console.log("getbyid",a)
return ""
},
cookie://这里传一个自己的cookie 过期了的也没事
}
var Plugins={0:{}}
navigator={
webdriver:false,
plugins: Plugins,
languages:["zh-CN","zh"],
hasOwnProperty:function hasOwnProperty(a){
// console.log(a,"hasOwnProperty");
if (a=="webdriver"){
return false
}
},
userAgent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36"
}
screen={availWidth:1920,availHeight:1040}
history={
back:function back(){console.log("back",arguments)}
}
location={
href:"https://mms.pinduoduo.com/goods/goods_list",
port:""
}
chrome={}
localStorage={
getItem:function getItem(a){
// console.log("item",arguments)
if (a=="_nano_fp"){
return "" //这里也传一个自己的
}
}
}
window["chrome"]=chrome
window["location"]=location
window["navigator"]=navigator
window["history"]=history
window["document"]=document
window["screen"]=screen
window["localStorage"]=localStorage
Object.defineProperty && Object.defineProperty(window, "outerHeight", {
value: 1040,
writable: false
});
Object.defineProperty && Object.defineProperty(window, "outerWidth", {
value: 1920,
writable: false
});
function DeviceOrientationEvent(){
console.log("DeviceOrientationEvent",arguments)
}
window["DeviceOrientationEvent"]=DeviceOrientationEvent
function DeviceMotionEvent(){
console.log("DeviceMotionEvent",arguments)
}
window["DeviceMotionEvent"]=DeviceMotionEvent
//delete window.Buffer //e("0x3c", "anZ%")
document.getElementById.toString=function(){
return function getElementById() { [native code] }
}
可以了。环境+上面的代码就能跑了
{"success":true,"errorCode":1000000,"errorMsg":null,"result":{"sessionId":"e70ae011c9c64f8fbf0e70fada362385","total":0,"goods_list":[]}}
演示地址:
http://z.hl98.cn/index.php?share/file&user=102&sid=CiAXx7ry
小伙伴们,快快用实践一下吧!
猜你喜欢
- 你可能会有很多理由想要把一个应用、一个用户或者一个环境与你的 linux 系统隔离开来。不同的操作系统有不同的实现方式,而在 linux 中,一个典型的方式就是 chroot 环境。在这份教程中,我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境。这个功能主要可以用于测试项目,以下这些步骤都在 Ubuntu 14.04 虚拟专用服务器(VPS)上执行。学会快速搭建一个简单的 chroot 环境是一项非常实用的技能,绝大多数系统管理员都能从中受益。Chroot 环境一个 chroot 环境就是通过系统调用,将一个本地目录临时变成根目录。一般所说的系统根目录就是挂载点/,然而使用 chroot 命令后,你可以使用其它目录作为根目录。原则上,任何运行在 chroot 环境内的应用都不能访问系统中其他信息(LCTT译注:使用 chroot 把一个目录变成根目录,在里面运行的应用只能访问本目录内的文件,无法访问到目录外的文件。然而,运行在 chroot 环境的应用可以通过 sysfs 文件系统访问到环境外的信息,所以,这里有个“原则上”的修饰语)。Chroot 环境的用处 测试一个不稳定的应用服务不会影响到整个主机系统。 就算使用 root 权限做了些不当的操作,把 chroot 环境搞得一塌糊涂,也不会影响到主机系统。 可以在你的系统中运行另外一个操作系统。举个例子,你可以在 chroot 环境中编译、安装、测试软件,而不去动真实的系统。你也可以在64位环境下使用 chroot 创建一个32位环境,然后运行一个32位的程序(LCTT泽注:假如你的真实环境是32位的,那就不能 chroot 一个64位的环境了)。但是为了安全考虑,chroot 环境为非特权用户设立了非常严格的限制,而不是提供完整的安全策略。假如你需要的是有完善的安全策略的隔离方案,可以考虑下 LXC、Docker、vservers等等。Debootstrap 和 Schroot使用 chroot 环境需要安装 debootstrap 和 schroot,这两个软件都在 Ubuntu 的镜像源中。其中 schroot 用于创建 chroot 环境。Debootstrap 可以让你通过镜像源安装任何 Debian(或基于 Debian 的)系统,装好的系统会包含最基本的命令。Schroot 命令允许用户使用相同的机制去创建 chroot 环境,但在访问 chroot 环境时会做些权限检查,并且会允许用户做些额外的自动设置,比如挂载一些文件系统。在 Ubuntu 14.04 LTS 上,我们可以通过两步来实现这个功能:1. 安装软件包第一步,在Ubuntu 14.04 LTS 主机系统上安装 debootstrap 和 schroot:复制代码代码如下:$ sudo apt-get install debootstrap $ sudo apt-get install schroot2. 配置 Schroot现在我们有工具在手,需要指定一个目录作为我们的 chroot 环境。这里创建一个目录先:复制代码代码如下:sudo mkdir /linoxide编辑 schroot 的配置文件:复制代码代码如下:sudo nano /etc/schroot/schroot.conf再提醒一下,我们现在是在 Ubuntu 14.04 LTS 系统上。假如我们想测试一个软件包能不能在 Ubuntu 13.10(代号是“Saucy Salamander”) 上运行,就可以在配置文件中添加下面的内容:复制代码代码如下: [saucy] description=Ubuntu Saucy location=/linoxide priority=3 users=arun root-groups=root 根据你的系统要求,调整上面的配置信息。3. 使用 debootstrap 安装32位 Ubuntu 系统Debootstrap 命令会在你的 chroot 环境里面下载安装一个最小系统。只要你能访问镜像源,你就可以安装任何基于 Debian 的系统版本。前面我们已经创建了 /linoxide 目录用于放置 chroot 环境,现在我们可以在这个目录里面运行 debootstrap 了:复制代码代码如下:cd /linoxide sudo debootstrap --variant=buildd --arch amd64 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/ sudo chroot /linoxide /debootstrap/debootstrap --second-stage你可以将 --arch 的参数换成 i386 或其他架构,只要存在这种架构的镜像源。你也可以把镜像源 http://archive.ubuntu.com/ubuntu/ 换成离你最近的镜像源,具体可参考 Ubuntu 官方镜像主页。注意:假如你是在64位系统中创建32位系统,你需要在上面第3行命令中加入 --foreign 选项,就像下面的命令:复制代码代码如下:sudo debootstrap --variant=buildd --foreign --arch i386 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/下载需要一段时间,看你网络带宽性能。最小系统大概有500M。4. 完成 chroot 环境安装完系统后,我们需要做一些收尾工作,确保系统运行正常。首先,保证主机的 fstab 程序能意识到 chroot 环境的存在:复制代码代码如下: sudo nano /etc/fstab在文件最后面添加下面的配置:复制代码代码如下:proc /linoxide/proc proc defaults 0 0 sysfs /linoxide/sys sysfs defaults 0 0保存并关闭文件。挂载一些文件系统到 chroot 环境:复制代码代码如下:$ sudo mount proc /linoxide/proc -t proc $ sudo mount sysfs /linoxide/sys -t sysfs复制 /etc/hosts 文件到 chroot 环境,这样 chroot 环境就可以使用网络了:复制代码代码如下:$ sudo cp /etc/hosts /linoxide/etc/hosts最后使用 schroot -l 命令列出系统上所有的 chroot 环境:复制代码代码如下:$ schroot -l使用下面的命令进入 chroot 环境:复制代码代码如下:$ sudo chroot /linoxide/ /bin/bash测试安装的版本:复制代码代码如下:# lsb_release -a # uname -a为了在 chroot 环境中使用图形界面,你需要设置 DISPLAY 环境变量:复制代码代码如下:$ DISPLAY=:0.0 ./apps目前为止,我已经成功地在 Ubuntu 14.04 LTS 上安装了 Ubuntu 13.10。退出 chroot 环境:复制代码代码如下:# exit清理一下,卸载文件系统:复制代码代码如下:$ sudo umount /test/proc $ sudo umount /test/sys
- 替代Eureka,你可以试试Consul
- Vue 为什么要用虚拟 DOM ?
- 那么多微服务识别方法,究竟该怎么选?
- 如何辨别苹果5手机的真假?(通过关键特征来判断苹果5手机真伪)
- 如何在 Vue 中使用 Teleport
- 在Vue 3中使用v-model来构建复杂的表单
- 高阶 CSS 技巧在复杂动效中的应用
- 电脑开机错误应用更新问题解决办法(解决电脑开机时遇到错误的应用更新问题,让电脑运行更加稳定)