您好,登錄后才能下訂單哦!
這是最簡單的題目,都在java層。
反編譯后看關(guān)鍵源代碼:
由于對android程序不熟悉,完全忽略了android.util.Log.i函數(shù)。后來看了大牛的writeup,才知道onClick函數(shù)里面的3個android.util.Log.i用輸出日志信息的方式告訴了密碼本、密碼,以及猜測的結(jié)果。
我用的是標準的分析方法。跟進access$0函數(shù)。
密碼生成規(guī)則是
這個代碼的意思就是將用戶的輸入轉(zhuǎn)成字節(jié)數(shù)組p4,以p4的每一個字節(jié)為索引,在密碼本p3中找出對應(yīng)的字符。這里需要注意的是p3是utf8編碼,中文對應(yīng)3個字節(jié)(一個字符),而ascii對應(yīng)1個字節(jié)。
密碼本和題目設(shè)置的密碼(winhex提?。?/p>
逆推用戶的輸入就是找passwd的每一個字在密碼本中的索引,輸出索引對應(yīng)的ascii值就可以了。
由于本人的python處理中文編碼不過關(guān),所以老老實實在winhex里面3個字節(jié)3個字節(jié)的搜索,手工計算了。
因為utf8中文字符3個字節(jié),所以winhex里面的偏移要除以3.
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。