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資料匯入 後台...