js逆向代码是什么意思_javascript调用python脚本

js逆向代码是什么意思_javascript调用python脚本免责声明:本文旨在学习交流,严禁用于非法用途

免责声明:本文旨在学习交流,严禁用于非法用途。如侵犯您的合法权益,还请告知删除,谢谢

先上一段JavaScript代码:

String["prototype"]["unsbox"] = function() {
    var _0x4b082b = [15, 35, 29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, 27, 22, 23, 25, 13, 6, 11, 39, 18, 20, 8, 14, 21, 32, 26, 2, 30, 7, 4, 17, 5, 3, 28, 34, 37, 12, 36];
    var _0x4da0dc = [];
    var _0x12605e = '';


    for (var _0x20a7bf = 0; _0x20a7bf < this["length"]; _0x20a7bf++) {
        var _0x385ee3 = this[_0x20a7bf];


        for (var _0x217721 = 0; _0x217721 < _0x4b082b["length"]; _0x217721++) {
            if (_0x4b082b[_0x217721] == _0x20a7bf + 1) {
                _0x4da0dc[_0x217721] = _0x385ee3;
            }
        }
    }


    _0x12605e = _0x4da0dc["join"]('');
    return _0x12605e;
}

这段代码是给 String类添加一个 unsbox 方法,代码中的this 代表 String类实例,已知String类实例定义如下:

var arg1 = "73BDCDA6CC766F44B9ADC7AE81ECD668B194C94D";

那么调用该 unsbox 方法的结果是:

3df31225524dc7eaeafafd27a2e7244e.png

下面就来讲这段代码改写为Python代码,如果你会改写,则下面的内容不需要看了。

下面逐步来分解这个String类的新方法:

String["prototype"]["unsbox"] = function() {
....
}

在改写时,直接定义成函数,将实例通过参数传递进来就可以了:

def unsbox(strTmp):
    pass

再来看函数体,先是变量定义,直接照抄即可:

def unsbox(strTmp):
    _0x4b082b = [15, 35, 29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, 27, 22, 23, 25, 13, 6, 11, 39, 18, 20, 8, 14, 21, 32, 26, 2, 30, 7, 4, 17, 5, 3, 28, 34, 37, 12, 36]
    _0x4da0dc = []
    _0x12605e = ''

再就是这么一个函数体:

for (var _0x20a7bf = 0; _0x20a7bf < this["length"]; _0x20a7bf++) {
        var _0x385ee3 = this[_0x20a7bf];


        for (var _0x217721 = 0; _0x217721 < _0x4b082b["length"]; _0x217721++) {
            if (_0x4b082b[_0x217721] == _0x20a7bf + 1) {
                _0x4da0dc[_0x217721] = _0x385ee3;
            }
        }
    }

按照它的规则老老实实进行改写:

def unsbox(strTmp):
    _0x4b082b = [15, 35, 29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, 27, 22, 23, 25, 13, 6, 11, 39, 18, 20, 8, 14, 21, 32, 26, 2, 30, 7, 4, 17, 5, 3, 28, 34, 37, 12, 36]
    _0x4da0dc = []
    _0x12605e = ''


    for i in range(len(strTmp)):
        _0x385ee3 = strTmp[i]
        for j in range(len(_0x4b082b)):
            if (_0x4b082b[j] == i+1):
                _0x4da0dc[j] = _0x385ee3

依葫芦画瓢,改写成了这样,但是,这段代码运行会报错,因为还没有给 list类型的变量 _0x4da0dc 分配空间,直接赋值肯定是要报错的,在JS中运行没问题,但是Python不行。那能不能 用append 方法呢? 也是不行的,因为这里的并不是从前往后append,逻辑不对。

既然没有分配空间,那就提前分配空间呗!

可以看到,它第二个for循环遍历的长度 是 _0x4b082b 的长度,因此可以尝试先分配 _0x4b082b 的长度的空间,考虑到后面有个join操作,先初始化为 空字符,代码修改如下:

def unsbox(strTmp):
    _0x4b082b = [15, 35, 29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, 27, 22, 23, 25, 13, 6, 11, 39, 18, 20, 8, 14, 21, 32, 26, 2, 30, 7, 4, 17, 5, 3, 28, 34, 37, 12, 36]
    _0x4da0dc = [''] * len(_0x4b082b)
    _0x12605e = ''


    for i in range(len(strTmp)):
        _0x385ee3 = strTmp[i]
        for j in range(len(_0x4b082b)):
            if (_0x4b082b[j] == i+1):
                _0x4da0dc[j] = _0x385ee3

再就是后面的join操作和返回了,同样加入到代码中:

def unsbox(strTmp):
    _0x4b082b = [15, 35, 29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, 27, 22, 23, 25, 13, 6, 11, 39, 18, 20, 8, 14, 21, 32, 26, 2, 30, 7, 4, 17, 5, 3, 28, 34, 37, 12, 36]
    _0x4da0dc = [''] * len(_0x4b082b)
    _0x12605e = ''


    for i in range(len(strTmp)):
        _0x385ee3 = strTmp[i]
        for j in range(len(_0x4b082b)):
            if (_0x4b082b[j] == i+1):
                _0x4da0dc[j] = _0x385ee3
        
    _0x12605e = ''.join(_0x4da0dc)
    return _0x12605e

至此,代码修改完成,请读者自行验证代码的准确性。

这段代码还可以进行优化改写,使之更优雅,我就不炫技了

73fd75ad35864861a199396051ad944a.png

今天的文章js逆向代码是什么意思_javascript调用python脚本分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/68440.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注