逆向頂象滑塊圖片還原


一、查找還原斷點

此逆向只針對以下網站:https://www.vivo.com.cn/service/authenticityCheck/index

1.選着事件中創建canvas打上斷點

 

 

 2.拖動滑塊再請求一次后,會斷在此處

 

 

 3.走到4420行就會出現混淆的圖片,還有一個h值,這個就是我們需要重組圖片的數組值

 

 4.從堆棧中去找到我們需要生成h的代碼,發現h傳入的是一個下划線_,再往前找

 

 5.需要在此處再打上斷點尋找,重新滑動請求一個

 

 6.這次找到了,就是這個i,生成的代碼也在上面,然后就是扣代碼了

 

 二、如何使用nodejs,將扣出的代碼還原圖片

使用npm安裝canvas

const {createCanvas, Image} = require('canvas')
var path = require('path');
var fs = require("fs");
// 創建canvas
var canvas = createCanvas(400, 200)
var ctx = canvas.getContext('2d')
var img = new Image()
img.onload = () => ctx.drawImage(img, 0, 0)
img.onerror = err => {
    throw err
}
img.src = 'p1.jpg'  //加載混淆的圖片

// 替換數組生成代碼
function ii(r, t) {
    let i;
    // console.log(r)
    if (r.length)
        return r.includes(t);
    for (var a = 0, o = r[(i = 'ht' + "gnel",
        i.split("").reverse().join(""))]; a < o; a++)
        if (r[a] === t)
            return !0;
    return !1
}

function Ir(r) {
    for (var t = [], n = 0; n < r.length; n++) {
        var e = r.charCodeAt(n);
        if (32 === n)
            break;
        for (; ii(t, e % 32);)
            e++;
        t.push(e % 32)
    }
    return t
}

tt = function (e) {
    return Ir(e['o']);
}
// 這個參數在請求獲取圖片地址時獲取
e={"o":"dingxiang651e04883e4b75fa6e2c692cee057d59"} //# 請求圖片地址時獲取

console.log(tt(e))
var t = tt(e) //替換數組
var v = 12
var f = 200

n = function (r, n) {
    var e = r * v
        , i = v;
    32,
        ctx.drawImage(img, e, 0, i, f, n * v, 0, i, f)
}

function u(t, n) {
    for (var o = 0, r = 32, i = []; o < r; o++)
        i[o] = n(t[o], o);
    return i
}

function restore() {
    u(t, n)
    canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'newp1.png'))) // 生成本地圖片(指定文件名)
}
restore()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM