j
東h5st
參數多局部多次ob
加密(js_security_v3_0.1.4.js
)
大家好呀,我是你們的好兄弟,【星云horseAK
】,今天的主題真的是千呼萬喚始出來,某東東的h5st
參數,這個加密的js
文件使用了obfuscator
進行了混淆,而且是局部多次加密,不算嵌套,直接進行調試的話,看著確實頭疼,沒事,且看我一步一步帶你還原、手撕這個參數的加密過程,記得關注我,并加入粉絲群呀:qq群:529528142
1.接口預覽
2.接口分析
3.js
調試
如何找到加密代碼的位置,我列舉幾個,這個步驟就是經驗的問題了,經驗充足,就容易定位【/斜眼笑/】
看啟動器
搜關鍵字
使用
hook
+debugger
關鍵位置
如圖,搜索到h5st
的位置,這里就是典型的ob
混淆的switch
控制流平展化混淆,可以跟著我一步一步用AST
思想使用@babel
解混淆,當然你也可以直接剛它。
解混淆效果對比:
h5st
加密部分的解混淆效果:
那么我們就得到了,比較關鍵的加密邏輯如下:
var c = "";var z = kp.Wzsfy(Km);var v = pb(z, kp.qbgpB);var a = kp.TWGdv(v, "04");if (this._isNormal) {var f = {code: 0};f.message = kp.nrOom;this["_onRequestToken"](f);c = this.__genKey(this._token, this["_fingerprint"], a, this._appId, this.algos).toString() || "";} else {this["_defaultToken"] = kp.AqAHu(a_, this["_fingerprint"]);var s = {code: 1};s.message = kp.yFtEs;this["_onRequestToken"](s);c = this["__genDefaultKey"](this["_defaultToken"], this["_fingerprint"], a, this._appId);}var C = {};if (!c) {if (this._token || this["_defaultToken"]) {var l = {};l.code = yb["GENERATE_SIGNATURE_FAILED"];l.message = "generate key failed";this._onSign(l);} else {var h = {};h.code = yb["TOKEN_EMPTY"];h.message = kp.tjKSX;this._onSign(h);}return C;}var b = this.__genSign(c, t);var y = kp.vJFed(mg, t).call(t, function (t) {return t.key;}).join(",");var _ = this["__genSignParams"](b, z, v, r);var g = {};g.key = c;g.signStr = b;g._stk = y;g._ste = 1;g.h5st = _;
接下來就是扣代碼環節,今天時間有點晚了,后面的內容我會放在下一篇文章里,謝謝~記得加群,精彩內容提前嘗鮮哦。
先放一張運行截圖: