標籤:const shu net ret 自己 sdn http 手機 條件
Android逆向工程 實踐篇
上篇給大家介紹的是基礎+小Demo實踐. 如果沒有看過的同學可以進去看看.(逆向工程 初篇)
本篇主要給大家介紹如何反編譯後修改源碼, 並打包運行在手機上.
先介紹下本篇文章用到的工具和資源.
1: Android Killer 1.3.1.0 (工具)
2: crackme.apk
還沒有破解之前會提示隨意輸入使用者名稱密碼會提示下面的資訊.
下面我們來開啟apk, 看看源碼是怎麼回事.
我先用工具(Android Killer) 開啟creckme.apk
這個是項目概要. 我們主要看的就是MainActivity 這個類, 其它的不看也沒什麼關係. 如果有耐心和興趣的,朋友可以去看看MainActivity裡面具體寫了什麼, 判斷機制是什麼.
破解步驟:
1: 點擊註冊按鈕後,彈出的toast 資訊,這裡可以分析出來,是什麼條件觸發,使程式彈出toas. [關鍵詞搜尋]
2: 這個程式,就上面那一步已經足夠破解了.
下面開啟MainActivity看看具體邏輯.
如果看不懂smali可以使用
下面我們找到程式入口 onCread 方法. 為什麼要早這個入口呢? 我們要在這裡找到初始化控制項的函數,對於這個程式來說, 只有一個Buttong(按鈕)比較容易找到,我們可以在onCread裡面找到Button的監聽(setOnClickListener)
中間是有幾句代碼沒有.
接下來是重點, 大家看到 我前面提到了的方法, setOnClickListener 沒有?? 這裡就是一個點擊事件, 但是這裡沒有發現Toast 相關的資訊. 這個MainActivity.smali都沒有發現. 難道搞錯了??. 同志,別灰心, 看看項目列表,是不是還有一個MainActivity$1.smali, 這個是一個內部類,我們開啟這個smali可以看到有一個onClick方法, 這裡就是在點擊onClick後,觸發的地方.那麼我們要具體的看看裡面的邏輯.
getText()方法代表是得到我們輸入的內容. trim()方法代表去除多餘的空格.
if-nez v0, :cond_0 條件判斷語句, 當滿足某些條件之後會做什麼.
const v0, 0x1 定義一個整形4位元組的局部變數v0 它的值是1. 假如條件瞞足,也就是v0!=0 會跳轉到 :cond_0 執行另一段代碼. 假如我們修改一下v0 的值,那麼他就不會跳轉到 :cond_0的裡面. 也就是破解成功.const v0, 0x0 這樣就可以讓程式彈出 註冊成功的Toast.
程式到這裡已經破解完成了. 感覺步驟很繁瑣…
下面教大家一個簡單一點的方法.一分鐘左右就可以搞定.
大家看到第一張圖片, 程式提示: 無效使用者名稱或註冊碼 這個是最直接的破解資訊.我們可以在程式裡面搜尋下這個關鍵詞.
*搜尋範圍記得換成整個項目
文本轉Unicode 後如果搜尋不到,就轉回來搜尋.
上面是我搜尋的結果. 下一步搜尋下 0x7f05000b 這個是unsuccessed的id,程式會通過這個id 來找到[無效使用者名稱或註冊碼]字串.
我用箭頭標出來的大家還熟悉嗎??? 就是上面我們改過的地方.這麼容易就找到了.
工具
如果沒有找到,就自己去下載把. 我上傳了csdn, 沒有那麼 快顯示出來的.
連結: http://pan.baidu.com/s/1hsunUcc 密碼: rfbn
大家新年快樂. 早日脫單!!
http://blog.csdn.net/QQ541159192/article/details/54755685 原創地址
Android 逆向工程 實踐篇