2018年6月28日 星期四

Android Native Debugger - 2

這個章節是在Native還未執行就直接中斷到起始位址,這樣就可以完整的分析惡意程式加解殼的演算法,進而破解它。

大部分的步驟都會跟上一個章節相似,只是不會直接執行APP,而是讓它等待Debugger。

準備工具:
1. IDA Pro v6.6 以上
2. Android 模擬器 CPU armeabi-v7a (可使用Android Studio內建的)

一、Android Native Debugger環境設置
  • 從路徑C:\Program Files\IDA 7.0\dbgsrv 獲取android_server (這是CPU armeabi-v7a 的環境所使用的)
        
  • 開啟Android模擬器後再Android裡面創建資料夾 - adb shell mkdir /data/tmp
  • 將android_server移至Android裡面 - adb push android_server /data/tmp
  • 讓android_server有執行的權限 - adb shell chmod 777 /data/tmp/android_server
  • 執行android_server – adb shell、cd /data/tmp/、./android_server
  • 設定port forward (讓電腦端的IDA Pro 能和Android端的android_server通訊) - adb forward tcp:23946 tcp:23946

二、IDA Pro環境設置
  • 開啟IDA Pro 後,將 .so (由於Android Studio 在編譯時會有很多版本要確認是armeabi-v7a)檔案拖曳到IDA Pro視窗裡面

  • 在IDA Pro 上面的工具列選擇Debugger -> Select Debugger -> Remote ARM Linux/Android debugger
         
  • 設置Remote Debugger的連線,Debugger ->Process options,在Hostname填入localhost
         
  • 讓APP等待Debugger - adb shell am start -D -S -W com.example.jschen.myapplication/.MainActivity (Package/Activity)
       
  • Debugger APP – 在IDA Pro 工具列選擇Debugger -> Attach to process,然後再尋找要Debugger的APP
        
  • Debugger warning – 會跳出一些警告,都是詢問 .so檔是否與Android裡的 .so 是否一樣,都選擇Same就可以了
        
  • 設定中斷點,讓APP觸發時,就會直接斷下
     
  • 在IDA Pro按下F9快捷鍵運行程式

到目前為止還沒有Attach APP,因此下列步驟是讓APP運行起來,就可以中斷到Native裡面的程式碼:
  • 查詢APP的PID (Process ID) – adb shell ps
     
  • 設定Debugger Port - adb forward tcp:1234 jdwp:4918
  • Attach APP – jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=1234
     

這時就能成功的中斷到Native的初始化程式碼了



順便修改記憶體 (由於R1會指到Hello……的字串),將它改成Hacker