android ida多线程调试,C/C++知识点之ida动态调试.so 动态加载(必须真机)
本文主要向大家介紹了C/C++知識點之ida動態調試.so 動態加載(必須真機),通過具體的內容向大家展示,希望對大家學習C/C++知識點有所幫助。
第一步連接安卓手機?查看設備
localhost:~ liuhailong$ adb devicesList of devices attachedCVH7N15A28004365??? devicelocalhost:~ liuhailong$
第二步?上傳調試器的服務端?可以?32?位?64?位都上傳這里?32?位命令
adb?push?/Applications/IDA\?Pro\?7.0/ida.app/Contents/MacOS/dbgsrv/android_server?/data/local/tmp/server
上傳?apk?到?app目錄下?或者直接安裝進入?android先提權?修改/server? 777 命令
安裝命令例如:adb install /Users/liuhailong/Desktop/testandroid/4010.apk 上傳命令例如:adb pull /data/app/c1.apk進入?androidadb shell提權?su修改屬性chmod 777 server?root用戶運行server運行monitor?調試必須要啟動它monitor &以調試方式啟動?apk?例如:localhost:~ liuhailong$ adb shell am start -D -n com.ReverseMe2015/com.ReverseMe2015.MainActivityStarting: Intent { cmp=com.ReverseMe2015/.MainActivity }localhost:~ liuhailong$ 映射端口localhost:~ liuhailong$ adb forward tcp:23946 tcp:23946localhost:~ liuhailong$ 調試運行??端口默認為8700?可以在monitor上面看localhost:~ liuhailong$ jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700設置未捕獲的java.lang.Throwable設置延遲的未捕獲的java.lang.Throwable正在初始化jdb...>
用?ida (mac版本用?6.8 7.0?有?bug?不能動態調試多線程)?附加它? 先反編譯?apk?再把.so?文件拖入?ida(mac?下如果直接附加的話顯示不出函數)
選擇調試器?(真機用?arm?模擬器用?linux)
選擇服務端
上面?啟動服務器時?mac上默認端口?:23946
附加
記得點擊運行
!///修改onload部分///1.找到?onload
進去
只有一個參數?很定是?javaVM類型(注意大小寫要一致)的?vm修改類型?按?y鍵
往下看出來一個GetEnv 繼續往下?v9很定是一個?evm
修改
然后回上面修改evm的類型?JNIEnv
全部出來
點擊那些函數?點?force call type
點擊
對應函數原型?修改注意:?ida中都是用的?c?所有都會多一個參數也就是?cpp?中的?this
jint??????? (*RegisterNatives)(JNIEnv*, jclass, const JNINativeMethod*,??????????????????????? jint);
修改
進去函數數組根據最后一個參數知道它只有一個函數
結構體的定義
修改
進去?c?函數
繼續修改?對比?java源碼與規則
修改
本文由職坐標整理并發布,希望對同學們有所幫助。了解更多詳情請關注職坐標編程語言C/C+頻道!
總結
以上是生活随笔為你收集整理的android ida多线程调试,C/C++知识点之ida动态调试.so 动态加载(必须真机)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android studio 加载ffm
- 下一篇: mqtt 域名连接_中国移动OneNet