JS逆向之HOOK

hook的原意是钩子。
我理解替换或者拦截原有方法去修改和处理。
1.怎么去替换原来的方法
这里我自己写一个方法去替换。实例

function myfunction(x, y) {
    if (x > y) {
        return "是原来的方法";
    } else {
        return "方法参数被修改了";
    }
    myfunction(2, 1) //原来方法的执行结果
    "是原来的方法"
    
    
    var xxx = myfunction //这里开始替换原来的方法,吧myfunction辅助给xxx
    myfunction = function(x, y) //这里再修改原来的myfunction这方法,一样的给他传两个值,在后面的函数里面去修改这两个值
    {
        var x = 5,
            y = 6; //这个位置就是把xy值改了,覆盖原来的方法的值
        return xxx(x, y) //这个再把修改过后的值传给原来的myfunction方法。
    }
    myfunction(1, 2) //这里是hook过后的方法执行结果,和原来执行传的值一样,但是返回值却变了
    "方法参数被修改了"

上面讲这一种就是hook替换原来的方法去改变它的执行结果,传值一样但是获取的结果不一样。
还有两个方法其实我个人感觉都差不多的,这两种都是拦截

1.Object.defineProperty
2.Porxy

使用方法比较简单,太多人说这两个方法了我就不说了,这里我重点讲的一个,刚刚说了一种替换。这里我再讲一个实例。还是自己写的代码

这里讲这么去hook内置的函数,eval,这个函数是现在很多混淆的都爱用的。把这个hook对我们分析代码帮助很大

eval("function ccc(){return 22;};ccc()")
//我这里比较简单,传的都是明文,要是在混淆里面传的肯定都是混淆的变量

首先我们要在代码执行之前在浏览器控制台打上我们的hook代码

var sss = eval; //把eval赋值给sss,sss是自己建的全局变量
eval = function(x) { //一样的处理方法,重写这个方法
    debugger; //这里发现调用就让他断下来
    console.log(x) //这里把值打印出来![请添加图片描述](https://img-blog.csdnimg.cn/51aca9b0611243f0aa7c4261b2999259.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbHpoZW55dTEyMw==,size_20,color_FFFFFF,t_70,g_se,x_16)

    return sss(x) //返回原来的eval方法
}

下面我截图跑一遍你们看看效果
请添加图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值