发票查验平台JS混淆文件反编译原理分析兼谈obfuscator反编译步骤分析

发票查验平台JS混淆文件反编译原理分析兼谈obfuscator反编译步骤分析


发票查验平台JS混淆文件反编译原理分析兼谈obfuscator反编译步骤分析之所以带上 发票查验平台,是因为,这个 发票查验平台的大多数JS是经过 obfuscator加密混淆的处理过的,对于我自己练练手比较合适。本文只分析 obfuscator混淆反编译的原理方法及步骤,权当是静态分析的一种尝试,不讨论动态调试分析。

obfuscator混淆的特征及几种格式。

为了能够使读者可以明白分析的过程,主要举例几个js例子文件。eab23.js,validate.js 属于一种类型。 eaPqe3.js, VM649.js 属于另外一种类型,

阅读本文前,请注意如下说明:

1. 本文主要使用 eab23.js 和 eaPqe3.js 中的 变量名进行分析说明,否则,只靠文字说明,很难讲明白。
2. 本文属于静态反编译JS文件,对于反编译出来的js文件,再次替换加载到网站中时,会报错,查原因: 可能是js语法有问题,本人对js语法不精通,故不在为了js语法问题,对反编译出来的js文件进行修改。
3. 本人使用EditPlus文本编辑软件,对js文件进行 UTF8 -> ANSI,或 ANSI -> UTF8 格式转换。
4. 使用本文方法之前,请先将js文件存成ANSI编码格式,UTF8格式反编译可能会出错,待反编译js成功后,在使用EditPlus转成UTF8格式。
5. 本文方法适用:无格式化(美化)的js文件。若你的js已经格式化(美化),请自己先处理为无格式化(美化)的js文件,反编译后的文件,为阅读方便,在进行格式化(美化)操作。

一. 特征

先看eab23.js文件头部,是个定义的大数组大概这个样子:(不是这个样式的头部,不适合本文)

var _0x4d2a = ['A8kXwSouyG', 'i2zWzg0', 'W6Smpta', 'jmoCyNb0', 'amkyBSoCW5y', 'W47dTLGTW4JcRNi', 'i3L6Bv91BNvZzv9PBwC', 'pYZdOsG', 'W4bvhtFdRXFcQGa', 'W67dRCojoG', 'mYldOsVdPG', 'rK9Hy0S', 'WORcPmkTW7y', ... ... , 'EgnNC2i', 'W4mboWug', 'WPbecc0', 'CCo7W5/cLa', 'z2v0vgLTzq'];
var _0x5e21 = function(_0x4d2ad2, _0x5e214d) {
    _0x4d2ad2 = _0x4d2ad2 - 0x0;

再看eaPqe3.js文件头部,是个定义的大数组大概这个样子:(不是这个样式的头部,不适合本文)

var _0xc03f = ['YnRuLXBpbmsgYnRuLXdoaXRl', 'd2hpdGU=', 'bm8tc2tpbiBza2luLTEgc2tpbi0yIHNraW4tMw==', 'YnRuLXByaW1hcnkgYnRuLXdoaXRl', 'c2tpbg==', 'bm8tc2tpbg==', 'c2tpbi0x', 'MnwxfDB8NHwz', 'LmJ0bg==', ... ... ... , 'YnRuLXN1Y2Nlc3M=', 'YnRuLWluZm8=', 'YnRuLXdhcm5pbmc=', 'YnRuLWRhbmdlcg==', 'bm8tYm9yZGVyIG1hcmdpbi0x', 'LnNpZGViYXItc2hvcnRjdXRzIC5idG4=']; (function(_0x4cd309, _0x19a697) {
    var _0x4b7cf2 = function(_0x341b9a) {
        while (--_0x341b9a) {
            _0x4cd309['push'](_0x4cd309['shift']());
        }
    };

有了这个样式的头部,基本可以确定是 obfuscator混淆了。

在反编译时,这个变量_0x4d2a或_0xc03f 定义成:ABC 一个大数组,

正确加载这个大数组数据:

eab23.js:定义的数组 _0x4d2a 就是可以拿来使用的数组。

eaPqe3.js: 定义的数组 _0xc03f 经过下面的函数,运算,成为可以正常使用的数组。

(function(_0x4cd309, _0x19a697) {  ... ... ...     _0x328575(); } (_0xc03f, 0x114));

二. 归类几种加密形式

根据大数组,末尾 ]; 的不同,可以判断出来是哪种类型加密,一共可以归纳出来2种类型,4种加密函数加密。

  1. 类型一

eab23.js:

... , 'EgnNC2i', 'W4mboWug', 'WPbecc0', 'CCo7W5/cLa', 'z2v0vgLTzq'];
var _0x5e21 = function(_0x4d2ad2, _0x5e214d) {
    _0x4d2ad2 = _0x4d2ad2 - 0x0;
    • 0
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 3
      评论

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

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值