某音乐逆向

本文深入探讨了JavaScript中的arguments对象和函数表达式的用法,包括立即执行函数表达式(IIFE)。同时,展示了涉及密码加密的复杂函数示例,如md5或sha等加密算法的实现过程,详细解释了函数的执行流程和参数处理。
摘要由CSDN通过智能技术生成

补充js知识:

(1)arguments是一个对应于传递给函数的参数的类数组对象。

arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。


(2)对函数表达式加上(),是可以直接调用的 
但是如果是对声明式的后部加上()则是会被编译器忽略。
var fn2 = function(){}();//对,就是这样
而平常的function(){}则是一种声明式,如果加上()括号后,则会被编译器认为是函数表达式,(加上+-号都可以),从而可以用()来直接调用.

(function(a){})(1)相对与在执行之前赋值给a。

function(){}()是一种立即执行函数的写法,即IIFE等设计模式。这种函数在函数定义的地方就直接执行了。

!function(){}()写法和(function(){})()是相同的
①函数后的();表示要执行这个函数;

②而();要求前面必须是一个表达式。(最后有js表达式的定义)。

③所以“!”的作用是将function(){}函数体转为一个函数表达式。
 

第一步:从栈堆找到密码传输的初始栈堆,发现密码属性是.password

第二部:搜素并下断点,看时候能断住,并且是没加密之前(有个设想,就是所有函数arguement都发送console,然后观测值的产生,但怕值太多)

第三步,去跟值,并确定

function re(e) {
            return e % 32;
}
function oe(e) {
            return 24 - e % 32;
}
function ne(e, t) {
            for (var n = [], r = t ? re : oe, o = 0, i = 8 * e.length; o < i; o += 8)
                n[o >> 5] |= (255 & e.charCodeAt(o / 8)) << r(o);
            return n;
}
function $(e, t, n, r, o, i) {
            return q((i = q(q(t, e), q(r, i))) << o | i >>> 32 - o, n);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值