寒假自學安卓安全,東西看了不少,例子都看了看試了試,自己動手就是另一碼事了,這也是寒假弄得東西,現在都過了兩個月了我也沒弄新的= =真是慚愧
測試環境:win8.1+華爲MATE7手機(5.1.1已root)
測試目的,在登錄界面獲取密碼
對登陸界面下面顯示的文字進行定位,參數爲”login_info”。在public.xml文件中搜索可得到R.java文件中所定義的id值0x7f0601b2。搜索所有的smali文件可定位到登陸頁面是
LoginActivity.smali。進入該文件查看samli格式語言,閱讀查找輸入密碼的EditText。
不過因爲代碼沒有經過混淆,所以我們可以很方便的定位到經過dex2jar後的java源代碼中查看相應實現,可以看出是通過doLogin()方法實現的將輸入的用戶名和密碼讀入。
通過在smali文件中找尋代碼我們可以找到如下代碼,可以看出
v0即我們想要的密碼。
先將寄存器修改爲4個,然後添加如下代碼
const-stringv3,"PW"
invoke-static{v3,v0},Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
會在調試時用log輸出我們想要的v0的值,即密碼。
(特別注意,華爲手機默認關閉log日誌,我之前試了半天沒正常輸出但是換到模擬器上正常,百度後,進入撥號界面:*#*#2846579#*#*,進入projectmenu--後臺設置--LOG設置)
重新編譯後安裝在手機上,打開DDMS,設置過濾規則,Tag設爲PW。
可以看出成功的獲取到了密碼。