1. 程式人生 > 其它 >[SWPU2019] Android3

[SWPU2019] Android3

先反編譯出java程式碼檢視,發現沒有坑,直接呼叫了庫檔案裡的check

把so檔案直接丟到ida中查詢check函式,看到

這是說明flag是11位,剛好發現11個ascii碼

60,108,51,79,129,56,44,94,84,69,64

這裡也有 11個值,拿下來

6,2,5,0,7,3,10,9,1,4,8

往下發現一個判斷,令v1=x,v3*v5=y,則有(x^2-y^2)/(x+y)x-y就是對應的data

後面想了半天都不知道如何繼續了,因為有個pow不知道如何解

後來再去翻so檔案,發現有的so檔案大小並不一樣,我這個開的是 10kb的,還有個18kb的。。。

把18kb的so檔案放入ida,就明瞭了

看了別人的wp說是取i和i在之前列表裡的下標,但是也搞不懂為什麼是這樣。。問了學re的大佬,也是一知半解。。。

那按照下標的話,就能得到程式碼:

a = [60,108,51,79,129,56,44,94,84,69,64]
index = [6,2,5,0,7,3,10,9,1,4,8]
res = []
for i in range(len(a)):
    y1 = pow(-1,(index.index(i)+i)%2)
    res.append(chr(a[i]+y1*(index.index(i)+i)))
for v in index:
    print(res[v],end=""
)

得到結果2019SWPUctf