This commit is contained in:
cilame 2021-10-20 23:05:06 +08:00
parent 02355d42b0
commit be3bae18d5
3 changed files with 80 additions and 13 deletions

View File

@ -42,6 +42,40 @@ function injectfunc(e, window) {
function get_log_at(log_at){
return attoggle?(' '.repeat(30)+log_at):''
}
if (e["config-hook-random"] && e["config-hook-random-freeze"]){
Math.random = saf(function random(){ return 0.5 })
}
if (e["config-hook-random"] && e["config-hook-random-fake"]){
Math.random = saf((function(seed){ return function random() { return (seed = (seed * 9301 + 49297) % 233280) / 233280 } })(123))
}
if (e["config-hook-random"] && e["config-hook-time-freeze"]){
var v_Date = Date
var ftime = +e["config-hook-time-freeze-number"]
Date = function(_Date) {
var bind = Function.bind;
var unbind = bind.bind(bind);
function instantiate(constructor, args) {
return new (unbind(constructor, null).apply(null, args));
}
var names = Object.getOwnPropertyNames(_Date);
for (var i = 0; i < names.length; i++) {
if (names[i]in Date)
continue;
var desc = Object.getOwnPropertyDescriptor(_Date, names[i]);
Object.defineProperty(Date, names[i], desc);
}
return saf(Date);
function Date() {
var date = instantiate(_Date, [ftime]); // 固定返回某一个时间点
return date;
}
}(Date);
Date.now = saf(function now(){ return ftime })
}
if (e["config-hook-random"] && e["config-hook-time-performance"]){
var v_perfnow = 1024 // 固定返回一个数字
Performance.prototype.now = saf(function now(){ return v_perfnow })
}
var toggle = true
if (e["config-hook-alt-w"]) {
@ -150,6 +184,7 @@ function injectfunc(e, window) {
if (expurl.v_test(expstr=Error().stack.v_split('\n')[2])){
window.v_log(..._mk_logs('[cookie get]', r, get_log_at(expstr.trim())))
}
if (e["config-hook-cookie-add-debugger"]){ debugger }
}
}
return r
@ -163,6 +198,7 @@ function injectfunc(e, window) {
if (expurl.v_test(expstr=Error().stack.v_split('\n')[2])){
window.v_log(..._mk_logs('[cookie set]', v, get_log_at(expstr.trim())) )
}
if (e["config-hook-cookie-add-debugger"]){ debugger }
}
}
return _old_cookie_set.apply(this, arguments)
@ -347,11 +383,18 @@ var hookers = [
"config-hook-Function",
"config-hook-eval",
"config-hook-remove-dyn-debugger",
"config-hook-cookie",
"config-hook-cookie-get",
"config-hook-cookie-set",
"config-hook-settimeout",
"config-hook-setinterval",
"config-hook-random",
"config-hook-random-freeze",
"config-hook-random-fake",
"config-hook-time-performance",
"config-hook-time-freeze",
"config-hook-time-freeze-number",
"config-hook-cookie",
"config-hook-cookie-add-debugger",
"config-hook-cookie-get",
"config-hook-cookie-set",
"config-hook-encrypt-normal",
"config-hook-JSON.parse",
"config-hook-JSON.stringify",

View File

@ -35,6 +35,24 @@
<br/>
<label ><input type="checkbox" data-key="config-hook-remove-dyn-debugger">remove-dyn-debugger(need selected "hook-Function" or "hook-eval")</label>
<br/>
<label ><input type="checkbox" data-key="config-hook-settimeout">hook-settimeout</label>
<br/>
<label ><input type="checkbox" data-key="config-hook-setinterval">hook-setinterval</label>
<br/>
<label ><input type="checkbox" data-key="config-hook-random">是否启用启用下面三种调试功能</label>
<br/>
<label style="margin-left: 20px"><input type="checkbox" data-key="config-hook-random-freeze">config-hook-random让 random 函数固定返回 0.5</label>
<br/>
<label style="margin-left: 20px"><input type="checkbox" data-key="config-hook-random-fake">config-hook-random让 random 变成伪随机函数。如果已经配置了该伪随机,则会覆盖上面的 0.5</label>
<br/>
<label style="margin-left: 20px">
<input type="checkbox" data-key="config-hook-time-freeze">config-hook-time时间函数返回的值固定成一个数字
<input style="width: 150px" type="text" data-key="config-hook-time-freeze-number" id="show_now">
<button style="padding: 0px" id="get_now">获取当前时间戳用于固定时间 (注意由于固定时间可能会影响到cookie设置所以请生成一个当前时间戳再行使用)</button>
</label>
<br/>
<label style="margin-left: 20px"><input type="checkbox" data-key="config-hook-time-performance">config-hook-performance-now这个时间函数返回的值固定成一个数字</label>
<br/>
<div style="border: 1px solid red; margin: 1px">
<div style="margin: 1px; color: red">
此处的两个配置会影响后面的全部挂钩操作
@ -45,21 +63,18 @@
<div style="margin: 1px">
<input style="width: 98%" type="text" data-key="config-hook-regexp-url">
</div>
<div style="margin: 1px">
<label ><input type="checkbox" data-key="config-hook-log-at">hook-log-at是否输出函数触发地址</label>
</div>
</div>
<label ><input type="checkbox" data-key="config-hook-cookie">hook-cookie</label>
<label ><input type="checkbox" data-key="config-hook-log-at">是否在调试输出时,输出函数出发的地址</label>
<br/>
<label ><input type="checkbox" data-key="config-hook-cookie">是否对 cookie 进行挂钩调试输出</label>
<br/>
<label style="margin-left: 20px"><input type="checkbox" data-key="config-hook-cookie-add-debugger">hook-cookie-add-debugger</label>
<br/>
<label style="margin-left: 20px"><input type="checkbox" data-key="config-hook-cookie-get">hook-cookie-get</label>
<br/>
<label style="margin-left: 20px"><input type="checkbox" data-key="config-hook-cookie-set">hook-cookie-set</label>
<br/>
<label ><input type="checkbox" data-key="config-hook-settimeout">hook-settimeout</label>
<br/>
<label ><input type="checkbox" data-key="config-hook-setinterval">hook-setinterval</label>
<br/>
<label ><input type="checkbox" data-key="config-hook-encrypt-normal">hook-自带加解密函数</label>
<label ><input type="checkbox" data-key="config-hook-encrypt-normal">是否启用下面几个加解密函数挂钩输出功能</label>
<br/>
<label style="margin-left: 20px"><input type="checkbox" data-key="config-hook-JSON.parse">hook-JSON.parse</label>
<br/>
@ -81,7 +96,7 @@
<br/>
<label style="margin-left: 20px"><input type="checkbox" data-key="config-hook-btoa">hook-btoa</label>
<br/>
<label ><input type="checkbox" data-key="config-hook-domobj">hook-domobj</label>
<label ><input type="checkbox" data-key="config-hook-domobj">是否启用挂钩 DOM 对象的原型的功能调试输出</label>
<br/>
<label style="margin-left: 20px"><input type="checkbox" data-key="config-hook-domobj-get">hook-domobj-显示get输出</label>
<br/>

View File

@ -149,3 +149,12 @@ fetch_hook.addEventListener("change", function(v){
[v.target.dataset.key]: v.target.value
})
})
var get_now = document.getElementById('get_now');
get_now.addEventListener("click", function(){
var show_now = document.getElementById('show_now')
show_now.value = +new Date+''
chrome.storage.local.set({
[show_now.dataset.key]: show_now.value
})
})