Java层算法通杀hook.js

本文探讨了在MacOS环境下,如何利用Java层实现对JavaScript的全面控制,通过hook.js技术,实现两者之间的高效交互,揭秘这一跨语言协同的秘诀。
摘要由CSDN通过智能技术生成
Java.perform(
    function() {

        //从这里开始是算法hook            
        var secretKeySpec = Java.use('javax.crypto.spec.SecretKeySpec');
        secretKeySpec.$init.overload('[B', 'java.lang.String').implementation = function(a, b) {
            showStacks();
            var result = this.$init(a, b);
            send("======================================");
            send("算法名:" + b + "|Dec密钥:" + bytesToString(a));
            send("算法名:" + b + "|Hex密钥:" + bytesToHex(a));
            return result;
        }
        var mac = Java.use('javax.crypto.Mac');
        mac.getInstance.overload('java.lang.String').implementation = function(a) {
            showStacks();
            var result = this.getInstance(a);
            send("======================================");
            send("算法名:" + a);
            return result;
        }
        mac.update.overload('[B').implementation = function(a) {
            showStacks();
            this.update(a);
            send("======================================");
            send("update:" + bytesToString(a))
        }
        mac.update.overload('[B', 'int', 'int').implementation = function(a, b, c) {
            showStacks();
            this.update(a, b, c)
            send("======================================");
            send("update:" + bytesToString(a) + "|" + b + "|" + c);
        }
        mac.doFinal.overload().implementation = function() {
            showStacks();
            var result = this.doFinal();
            send("======================================");
            send("doFinal结果:" + bytesToHex(result));
            send("doFinal结果:" + bytesToBase64(result));
            return result;
        }
        mac.doFinal.overload('[B').implementation = function(a) {
            showStacks();
            var result = this.doFinal(a);
            send("======================================");
            send("doFinal参数:" + bytesToString(a));
            send("doFinal结果:" + bytesToHex(result));
            s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

f4ck3sdn

初心:希望为更多人知识解惑

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值