利用IDA對dex檔案進行動態除錯過程

2021-07-30 05:57:09 字數 1396 閱讀 4987

0x01.除錯的過程。

1、首先androidmanifest.xml裡面

android

:debuggable="true"。

2、將classes.dex拖入ida中。

3、選擇debugger->debugger options->set specific options,在package name和activity中填入主activity的包名和類名。

4、選擇debugger->process options,將port改為8700。

5、下斷點,在相應需要除錯的函式的位置下斷點。

6、手機端開啟android_server

具體方法,

c:\>adb shell push android_server /data/local/tmp/ (android_server需到ida安裝目錄./dbgsrv下拷貝 )

c:\>adb shell

#su //獲取root許可權

#chmod /data/local/tmp/android_server //給android_server新增可執行許可權

#/data/local/tmp/android_server //啟動android_server

7、埠**

c:\>adb forward tcp:23946 tcp:23946 //把手機上的埠**到pc上

8、開啟要除錯的activity

c:\>adb shell am start -d -a 包名/入口 //以除錯的方式期待除錯的程式

9、選擇debugger->attach to process,attch到應用,選擇包名單擊即可。  接下來,出現的介面全部cancel。程式執行到斷點處。

0x02.檢視和跟蹤流程記憶體值.

f9執行

f8單步除錯

f7進入函式

1.debugger

->

debugger windows

->

locals

檢視變數的值

0x03.遇到的問題(型別轉換的問題)

1.遇到ida暫存器中的值bad type

使用 ida 除錯 apk 時經常遇到變數無法識別的情況,需要在watchview裡面手動加入型別轉換,如下圖

然後在彈出的視窗中自己為變數新增乙個型別,類似這樣:

(object*)v0

(string)v0 (

char

*)v0 (

int)v0

(int*)v0

0x04.修改某個暫存器的值

修改記憶體中的程式和值

修改程式一般都是ida的修改方式

修改記憶體中的值,在lcoals中直接修改即可

0x05 dump記憶體中的dex指令碼

對Hive的大表進行動態分割槽

分割槽是在處理大型事實表時常用的方法。分割槽的好處在於縮小查詢掃瞄範圍,從而提高速度。分割槽分為兩種 靜態分割槽static partition和動態分割槽dynamic partition。靜態分割槽和動態分割槽的區別在於匯入資料時,是手動輸入分割槽名稱,還是通過資料來判斷資料分割槽。對於大資料批...

對現有Hive的大表進行動態分割槽

分割槽是在處理大型事實表時常用的方法。分割槽的好處在於縮小查詢掃瞄範圍,從而提高速度。分割槽分為兩種 靜態分割槽static partition和動態分割槽dynamic partition。靜態分割槽和動態分割槽的區別在於匯入資料時,是手動輸入分割槽名稱,還是通過資料來判斷資料分割槽。對於大資料批...

多檔案上傳,並且可以進行動態刪除

由於業務要求一次上傳很多個excel,並且可以進行篩選,刪除不用的,查了 許多上傳,大多是新增多個不能一次選擇,不能使用multiple屬性,最後想到獲取檔案的名稱,將刪除的檔案的索引放到陣列中,傳給後台,後台遍歷檔案時,如果與刪除檔案索引相同,對此檔案不進行處理 操作 衝收賬期 sp資料匯入 後台...