yjj 瑞数6.5 rpc + 补环境 cookie sign 后缀处理 (1)
·
声明:
本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
有相关问题请第一时间头像私信联系我删除博客!
前言
实习了小3个月,昨天跟学长说了准备12月中旬走人,感觉轻松多了,感觉太对不起他这三个月指导。我有太多事要处理论文项目做的前后端只搞了一半,同时也准备深入学习一下安卓补充一下技术栈缺陷。等过完年搞完所有事情在出来接着实习。
逆向过程
补环境要补的太多的我就简单贴一部分主要检测环境。
Object.defineProperties(Window.prototype, {
[Symbol.toStringTag]: {
value: "Window",
writable: true,
enumerable: false,
configurable: true
}
})
Object.defineProperty(window, 'Window', {
configurable: true,
enumerable: false,
writable: true,
value: function Window() {
}
})
Object.defineProperty(Window.prototype, 'PERSISTENT', {
configurable: false,
enumerable: true,
value: 1,
writable: false,
})
Object.defineProperty(Window.prototype, 'TEMPORARY', {
configurable: false,
enumerable: true,
value: 0,
writable: false,
})
window.__proto__ = Window.prototype
ondevicemotion = null
Object.defineProperty(window, 'outerHeight', {
configurable: true,
enumerable: true,
get: function outerHeight() {
return 834
},
set: function outerHeight(value) {
this.outerHeight = value
},
})
Object.defineProperty(window, 'outerWidth', {
configurable: true,
enumerable: true,
get: function outerHeight() {
return 1536
},
set: function outerHeight(value) {
this.outerWidth = value
},
})
Object.defineProperty(window, 'innerHeight', {
configurable: true,
enumerable: true,
get: function innerHeight() {
return 760
},
set: function innerHeight(value) {
this.innerHeight = value
},
})
Object.defineProperty(window, 'innerWidth', {
configurable: true,
enumerable: true,
get: function innerWidth() {
return 1470
},
set: function innerWidth(value) {
this.innerWidth = value
},
})
Object.defineProperty(window, 'screenLeft', {
configurable: true,
enumerable: true,
get: function screenLeft() {
return 0
},
set: function screenLeft(value) {
this.screenLeft = value
},
})
Object.defineProperty(window, 'screenTop', {
configurable: true,
enumerable: true,
get: function screenTop() {
return 0
},
set: function screenTop(value) {
this.screenTop = value
},
})
Object.defineProperty(window, 'screenX', {
configurable: true,
enumerable: true,
get: function screenX() {
return 0
},
set: function screenX(value) {
this.screenX = value
},
})
Object.defineProperty(window, 'screenY', {
configurable: true,
enumerable: true,
get: function screenY() {
return 0
},
set: function screenY(value) {
this.screenY = value
},
})
// delete global
delete require
delete __filename;
delete __dirname;
ActiveXObject = undefined
Object.defineProperty(window, 'Storage', {
configurable: true,
enumerable: false,
writable: true,
value: function Storage() {
}
})
Object.defineProperties(Storage.prototype, {
[Symbol.toStringTag]: {
value: "Storage",
writable: true,
enumerable: false,
configurable: true
}
})
Object.defineProperty(Storage.prototype, 'setItem', {
configurable: true,
enumerable: true,
writable: true,
value: function setItem(key, value) {
this[key] = value
}
})
Object.defineProperty(Storage.prototype, 'getItem', {
configurable: true,
enumerable: true,
writable: true,
value: function getItem(key, value) {
return this[key]
}
})
还有很多就不全部弄出来了,主要是打算说一下rpc实现。看了某个大佬的感觉很牛。
结果

总结
1.出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来。
更多推荐
所有评论(0)