Initialize encryption and JavaScript reverse-engineering study repository
Document the project structure and setup while excluding local dependencies and IDE settings. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
34
webpack-2026-09-04/1.自执行函数.js
Normal file
34
webpack-2026-09-04/1.自执行函数.js
Normal file
@@ -0,0 +1,34 @@
|
||||
// function run_task(attr) {
|
||||
// console.log(attr);
|
||||
// }
|
||||
//
|
||||
// run_task(123)
|
||||
|
||||
|
||||
// !(function (attr) {
|
||||
// console.log(attr);
|
||||
// })(1)
|
||||
//
|
||||
// !(function (attr) {
|
||||
// console.log(attr);
|
||||
// })(2)
|
||||
|
||||
// !(function (attr) {
|
||||
// // console.log(attr);
|
||||
// attr[0]()
|
||||
// })([
|
||||
// function () {console.log("1")},
|
||||
// function () {console.log("2")},
|
||||
// function () {console.log("3")}
|
||||
// ])
|
||||
|
||||
|
||||
!(function (attr) {
|
||||
// attr["2"]();
|
||||
attr["2"].call();
|
||||
attr["1"].apply();
|
||||
})({
|
||||
"1": function () { console.log("模块1") },
|
||||
"2": function () { console.log("模块2") },
|
||||
"3": function () { console.log("模块3") },
|
||||
})
|
||||
19
webpack-2026-09-04/2. webpack的基本结构.js
Normal file
19
webpack-2026-09-04/2. webpack的基本结构.js
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* webpack 的基本结构有两种(数组结构 / 对象结构)
|
||||
*
|
||||
* !(function ( 形参) { 加载器 }) ([模块1, 模块2, ...])
|
||||
* !(function ( 形参) { 加载器 }) ({"1": 模块1, "2": 模块2, ...})
|
||||
* */
|
||||
|
||||
|
||||
!(function (function_location) {
|
||||
function inner_run_func(key) {
|
||||
return function_location[key].call()
|
||||
}
|
||||
|
||||
inner_run_func("1")
|
||||
})({
|
||||
"1": function () { console.log("模块1"); },
|
||||
"2": function () { console.log("模块2"); },
|
||||
"3": function () { console.log("模块3"); },
|
||||
})
|
||||
55
webpack-2026-09-04/3. webpack逆向时会遇到的问题.js
Normal file
55
webpack-2026-09-04/3. webpack逆向时会遇到的问题.js
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* 模块有上千个
|
||||
* 模块分布在不同的文件
|
||||
* */
|
||||
|
||||
|
||||
// 1. 如何在自执行webpack函数外部调用模块
|
||||
// 2. 加载器初始化问题(浏览器环境检测问题)
|
||||
// 3. 模块丢失问题
|
||||
|
||||
window = global
|
||||
|
||||
!(function (func_object) {
|
||||
function inner_func(key) {
|
||||
// 打印模块调用日志
|
||||
console.log("被调用的模块是:", key);
|
||||
func_object[key].call();
|
||||
}
|
||||
|
||||
|
||||
// 调用模块加载器
|
||||
// inner_func("encrypt")
|
||||
|
||||
//将内部加载器挂在到全局
|
||||
window.loader = inner_func;
|
||||
|
||||
// inner_func("web_env"); 如果在内部加载器中调用了环境检测直接注释
|
||||
|
||||
})({
|
||||
"encrypt": function () {
|
||||
console.log("加密...");
|
||||
},
|
||||
"decrypt": function () {
|
||||
console.log("解密...");
|
||||
},
|
||||
"web_env": function () {
|
||||
console.log("浏览器环境检测...");
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
// 问题1:将内部加载器挂载到顶级对象上
|
||||
/*
|
||||
window.loader("encrypt")
|
||||
window.loader("decrypt")
|
||||
*/
|
||||
|
||||
|
||||
// 问题2:对于加载器初始化出现环境问题,直接注释
|
||||
// inner_func("web_env")
|
||||
|
||||
|
||||
// 问题3:模块丢失(在真实的网站模块调用当中可能存在模块是动态加载过来的)
|
||||
// 解决方式就是模块定位(在内部加载器中打执行日志)
|
||||
window.loader("339b")
|
||||
5
webpack-2026-09-04/实战案例-36Kr/加密位置
Normal file
5
webpack-2026-09-04/实战案例-36Kr/加密位置
Normal file
@@ -0,0 +1,5 @@
|
||||
接口:
|
||||
https://gateway.36kr.com/api/mus/login/byMobilePassword
|
||||
加密参数:
|
||||
查询字符串,sign加密
|
||||
请求负载,nonce,mobileNo,password
|
||||
Reference in New Issue
Block a user