手动破解227版本的验证码是可行的,但是如果阿里每三个月更新一个版本,手动破解劳心费力。所以应该考虑自动破解。在fireyejs.js 文件中,o是一个功能,例如o=30是初始化,会发布几个对外函数,
r.push(723562350,523762464,2,1),
i(14,2,-1),Me=r.pop(),
xe[Me]=function()
{return 227},
Me="ge",Me+="tFY",
xe[Me+="Token"]=function(e){var o;return i(40,e)},
Me=(Me="nekoTdiUteg").split("").reverse().join(""),
xe[Me]=function(e){var o;return i(6,e)},
Me="re",Me+="setS",
xe[Me+="A"]=function(){i(29)}
o如果确定,接下来就是li的数值决定switch(31&li),再接下来的switch是ci,mi,这些都是根据li确定的,可以把整个代码分割为如下的结构:
根据当前的li就可以确定一个很小的代码块,再根据当前li运行到最后必须给li赋值以进行下一步运算,就可以确定当前li运行后的精确代码,
下面是o=30,o=25,o=40时提取的代码,粗糙,有大神可以一起合作,实现每次阿里更新版本,程序2小时内生成最新的破解代码。
ci = window,
Qo = s,
Yo = void 0,
mo = void 0,
li = (wo = o),
uo = (uo = "tcejbo").split("").reverse().join(""),
li = (co = typeof wo !== uo),
mo = void 0,
wo = mo,
mo = +o === o,
=o),
mo = void 0 === Yo,
wo = +o === o,
r.push(4, 3071828176897, 2, 1),
i(14, 2, -1),
uo = r.pop(),
co = uo,
uo = "",
So = "b",
Je = So += "ind",
So = "\u0219\u020c\u021b\u020f\u0206\u021b\u0204\u0208\u0207\u020a\u020c",
Ye = "",
we = 0,
we = (Y = P * fe)), Ce < _.length, Re = 262 ^ _.charCodeAt(Ce), ue += String.fromCharCode(Re), Ce++, li = (qe = (qe = (Oo = (P = P <= 27) + (fe = 9 == fe)) * Oo) >= (Y = P * fe)), Ce < _.length, Re = 262 ^ _.charCodeAt(Ce), ue += String.fromCharCode(Re), Ce++, li = (qe = (qe = (Oo = (P = P <= 27) + (fe = 9 == fe)) * Oo) >= (Y = P * fe)), Ce < _.length, Re = 262 ^ _.charCodeAt(Ce), ue += String.fromCharCode(Re), Ce++, li = (qe = (qe = (Oo = (P = P <= 27) + (fe = 9 == fe)) * Oo) >= (Y = P * fe)), ue += "ppen", ue += "d", ue += "Ch", Vo = ue += "ild", ue = "yx", ue += "o", ue += "rPo", ue = (ue += "n").split("").reverse().join(""), ho = ue, ue = "\u0330\u032c\u032c\u0328\u032b\u0362\u0377\u0377", Mo = "", ao = 0, ao - 216, No = Ke.charCodeAt(Eo), vo = No ^ Lo, Lo = No, To += String.fromCharCode(vo), li = Oo, Eo++, Eo - 216, No = Ke.charCodeAt(Eo), vo = No ^ Lo, Lo = No, To += String.fromCharCode(vo), li = Oo, Eo++, Eo - 216, No = Ke.charCodeAt(Eo), vo = No ^ Lo, Lo = No, To += String.fromCharCode(vo), li = Oo, Eo++, Eo - 216, No = Ke.charCodeAt(Eo), vo = No ^ Lo, Lo = No, To += String.fromCharCode(vo), li = Oo, Io = 428 ^ To.charCodeAt(Uo), vo += String.fromCharCode(Io), Uo++, Uo > 24), Q = 255 & (Pe = Co >> 16), le = 255 & (Pe = Co >> 8), Pe = 255 & Co, Te.push(ve, Q, le, Pe), Co = Ao = Te, Ao = void 0, Te = oo, oo = [], ve = 255 & (Pe = Te >> 24), Pe = Te >> 16, Q = 255 & Pe, le = 255 & (Pe = Te >> 8), Pe = 255 & Te, oo.push(ve, Q, le, Pe), oo = Ao = oo, Ao = Co.concat(oo), Me = Ao, Ko[48] = Me, Ko[5] = [], Ko[57] = [], oo = xe(), Me = oo[co](36), oo = Me[Re](2), Me = xe(), xe = Me[co](36), Me = xe[Re](2), Ko[6] = oo + Me, Ko[89] = 0, Ko[16] = 0, Ko[58] = 0, Ko[30] = 0, Ko[46] = -1, Ko[51] = -1, Ko[22] = uo, Ko[56] = {},
oo = void 0, xe = 0, Me = po;
var Ai = Ko;Ai[95] = 0, Ai[60] = 0, r.push(3384268058261, 1, 2), i(14, 2, -1), Ao = r.pop(), Co = Ao, Ao = "\u0148\u016a\u0167\u0170\u0171", Te = "", Pe = 0, Pe1, Me[32] = 2, globalOpt[ho], oo = void 0, Me = Ko, Te = (xe = po)[So], li = Te, ve = "\u0226\u0243\u0237\u0272\u021c\u0268\u021a\u0273\u0216\u0265", Q = "", le = 0, Z = 0, Z = (Y = P * fe)), Ce < _.length, _ = ue, ue = "sr", Ce = ue += "c", li = q, q = 30 === o, ue = "s", ue += "ub", ue += "stri", Re = ue += "ng", ue = "r", ue += "ota", ue += "giva", ue += "n", ue = ue.split("").reverse().join(""), _e = ue, r.push(83190, 56046782639, 2, 2), i(14, 2, -1), ue = r.pop(), ne = ue, ue = (ue = "yarrA").split("").reverse().join(""), me = ue, ue = "Ob", ue += "j", Qe = ue += "ect", ue = "R", ue += "egE", jo = ue += "xp", ue = (ue = "ytreporPenifed").split("").reverse().join(""), so = ue, ue = "ro", ue = (ue += "rrE").split("").reverse().join(""), He = ue, ue = (ue = "teg").split("").reverse().join(""), Ro = ue, ue = "cd", ue += "c_", ue += "adoQ", ue += "poas", ue += "nfa76pfc", ue += "Z", ue += "Lmcfl_Sym", ze = ue += "bol", ue = (ue = "tnemucod").split("").reverse().join(""), ei = ue, r.push(14645503911, 4408175443116, 2, 1), i(14, 2, -1), ue = r.pop(), Wo = ue, ue = "SC", ue += "RIP", zo = ue += "T", ue = "s", ue += "etT", ue += "im", ue += "e", _o = ue += "out", ue = "g", ue += "et", ue += "El", ue += "em", ue += "entsBy", Ho = ue += "TagName", ue = "HE", Fo = ue += "AD", ue = "a", ue += "ppen", ue += "d", ue += "Ch", Vo = ue += "ild", ue = "yx", ue += "o", ue += "rPo", ue = (ue += "n").split("").reverse().join(""), ho = ue, ue = "\u0330\u032c\u032c\u0328\u032b\u0362\u0377\u0377", Mo = "", ao = 0, ao - 216, No = Ke.charCodeAt(Eo), vo = No ^ Lo, Lo = No, To += String.fromCharCode(vo), li = Oo, Eo++, Eo - 216, No = Ke.charCodeAt(Eo), vo = No ^ Lo, Lo = No, To += String.fromCharCode(vo), li = Oo, Eo++, Eo - 185, yo = po, po = "b", $o = po += "lur", po = "__", po += "w", po += "xj", po += "s_env", po += "ironm", po += "ent", li = Y, Bo = po, po = "m", po += "in", po += "i", Jo = po += "program", po = "fe", po = (po += "rh").split("").reverse().join(""), ni = po, po = (po = "raelc").split("").reverse().join(""), ri = po, po = "r", po += "e", di = po += "place", r.push(4103, 3334310427378, 51291557964, 3, 2), i(14, 2, -1), po = r.pop(), ti = po, po = (po = "elyts").split("").reverse().join(""), ai = po, li = q, Ko = Qo, oo = (po = ci)[ge], xe = oo[Oe], oo = "fy", oo += "g", oo += "lobal", oo += "op", oo += "t", Me = window[oo], Me = {},
n = Me, globalOpt = n, oo = new po[ie], Ko[93] = +oo, oo = Ko[93], Me = void 0, Te = 0 | (Co = (Ao = oo) / (oo = 4294967296)), oo = Ao - (Co = Te * oo), Ao = void 0, Co = Te, Te = [], ve = 255 & (Pe = Co >> 24), Q = 255 & (Pe = Co >> 16), le = 255 & (Pe = Co >> 8), Pe = 255 & Co, Te.push(ve, Q, le, Pe), Co = Ao = Te, Ao = void 0, Te = oo, oo = [], ve = 255 & (Pe = Te >> 24), Pe = Te >> 16, Q = 255 & Pe, le = 255 & (Pe = Te >> 8), Pe = 255 & Te, oo.push(ve, Q, le, Pe), oo = Ao = oo, Ao = Co.concat(oo), Me = Ao, Ko[48] = Me, Ko[5] = [], Ko[57] = [], oo = xe(), Me = oo[co](36), oo = Me[Re](2), Me = xe(), xe = Me[co](36), Me = xe[Re](2), Ko[6] = oo + Me, Ko[89] = 0, Ko[16] = 0, Ko[58] = 0, Ko[30] = 0, Ko[46] = -1, Ko[51] = -1, Ko[22] = uo, Ko[56] = {},
oo = void 0, xe = 0, Me = po;
var Ai = Ko;Ai[95] = 0, Ai[60] = 0, r.push(3384268058261, 1, 2), i(14, 2, -1), Ao = r.pop(), Co = Ao, Ao = "\u0148\u016a\u0167\u0170\u0171", Te = "", Pe = 0, Pe1, Me[32] = 2, globalOpt[ho], oo = void 0, Me = Ko, Te = (xe = po)[So], li = Te, ve = "\u0226\u0243\u0237\u0272\u021c\u0268\u021a\u0273\u0216\u0265", Q = "", le = 0, Z = 0, Z(A = (qe = 199 | (Y = U !== q)) << 24)), ve(A = (qe = 199 | (Y = U !== q)) << 24)), ve(qe <<= 24)), Z - 254, le[40] = new xe[ie], li = qe, xe = le[35], oe = i[Je], li = oe, oe = i[Je](0, xe[co] = oe, xe = le[40], le = i[Je], li = le, le = i[Je](0, xe[co] = le, li = O, Q = void 0, A = (Y = (bo = bo > 11) * bo) + (A = (fe = so instanceof Object) * fe), Y = (Oo = !ee) * Oo, P = (qe |= 13) * qe, P = Y + P, P *= A, A = (Y = bo * Oo) + (A = fe * qe), li = (bo = P >= (A *= A)), xe = !oo, oo = "\u0195\u0198\u018f\u018d\u018f\u0194", Co = "", Q = 0, Q = (A = qe * Y)), pe = oe, pe = le[oo], li = (fe = (bo = (P = (Y = 16 != Y) + (Oo = Ee instanceof Object)) * P) >= (A = 2 * (P = Y * Oo))), mi < 12 ? (oe = pe), oe = le[lo] == le, pe = oe, oe = pe, xe = Q, i(18), Me = Ko, Te = (xe = po)[ei], r.push(748918169294, 48888119508, 2, 0), i(14, 2, -1), ve = r.pop(), Q = Te[ve], li = (Te = Q), Te = Q[Ce], ve = Te, Te = xe[So], li = Te, Q = xe[So], Te