日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用android的smali注入代码,android smali代码注入 实战一

發布時間:2024/1/23 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用android的smali注入代码,android smali代码注入 实战一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有同學在通服里面干活,最近一直忙著4g基站搭建的干活,測試設備(android)測量移動網絡數據,沒有自動保存記錄的功能,只能手動記錄各種測試參數,不知道測試軟件供應商是怎樣想的,竟然不提供的這樣的功能! 要我幫忙把測試數據自動導入excel表格中,我硬著頭皮去嘗試下。網上有smali的語法和注入的介紹,但參考價值不大,分享下自己的smali注入的過程和心得(這里smali語法就不講了)。

案例

1.需求

需要提取數據界面如下:

提取數據字段信息: 地點address 小區識別碼 cellId,區位碼aresId 信號強度rx

2.確定應用數據中是否有需要的數據表,導出sqlite數據。

1) 手機沒有root權限,可以從smali 注入應用內部復制dada/data/xxxxx/的目錄文件的功能代碼。

2) ?手機有root權限,adb pull /data/data/inet.GDTEL.com/ e:\不成功(沒有權限),而adb shell中沒有pull,cp指令,當然安裝下 busybox ?,先cp到sdcard中去,在pull到 ? ? ?電腦上去,或者通過手機助手pull電腦中去。

有相應的表對應需求數據實體,不必從界面提取,那可以從數據庫拿數據,轉化為excel文檔;沒有,則從界面上一個個提取數據,在轉excel文檔。

3.打開需要提取的界面,確定界面所在的activity,方法:查看手機當前活動activity,adb指令

adb shell dumpsys activity activities | sed -En -e ‘/Running activities/,/Run #0/p‘

查詢結果如下:

從查詢結果可以看出 這個界面所在項目進程:inet.GDTEL.com,所在activity:com.wellcell.inet.Cust.CustTestActivity

4.apktool 反編譯apk,確定所需數據的數據來源

1)進入com.wellcell.inet.Cust.CustTestActivity,搜索onCreate ,setContentView,確定layout.xml

比如:

.line 100

const v0, 0x7f03000f //layoutId

invoke-virtual {p0, v0}, Lcom/wellcell/inet/Cust/CustTestActivity;->setContentView(I)V

根據layoutId,在R(不存在的話,把反編譯的文件導入eclipse中,不管有沒有錯,運行這個工程之后就生成R類,根據這個R類,可能有問題,我測試了,沒有問題)類中搜索 ? ? ? ? ?layouId對應的layout.xml。

2)在eclipse中查看layout.xml界面,確定所需數據所在的控件的id name,再在R類中查詢控件id的具體數值。

3)在所在activity或者fragment中根據控件id確定控件的屬性名稱比如

4)根據控件名稱確定數據來源,搜索m_txLacGsm,setText

可知cellId,lacId來自TelStrengthInfo實體,其他數據類推。

5.注入代碼

1)注入代碼實現:

方法1:直接根據smali語法寫注入的代碼

方法2:先按照注入的項目包名新建工程,根據注入的類名命名類,編寫注入功能的模塊代碼,并測試,然后反編譯apk,從smali文件的拷貝代碼到注入點,再apktool打包即使對smali語法不行,也可以勝任.

2)常見錯誤:

1.類的包名不對

比如:包命名混亂的時候就容易犯錯

2.打包時,屬性忘記申明定義

3. .line 行數(方法調用在java文件所在行數) 有重復

4.引用三方jar包或者添加新類,忘記拷貝到反編譯項目中去。

6.smali調試

smali調試是個蛋疼的事,即使注入的代碼出問題了也不出崩潰。

調試方法:

1)通過eclipse 調試smali。過程好像比較麻煩,嘗試了下,會出現各種問題,jdk版本問題,遠程jvm拒絕鏈接等,可能跟開發環境有關系。

2)通過強大的adb 功能,解決運行時錯誤,常用的三種方法,VFY的信息會給出Smali代碼出錯的文件、函數以及錯誤原因,dalvikvm的信息可以給出調用棧,以及上下文執行過 ?程。

adb logcat > e:\log.txt | grep inet.GOTEL.com

adb logcat > e:\log.txt | grep dalvikvm

adb logcat > e:\log.txt | grep VFY

比如使用 adb logcat > e:\log.txt | grep inet.GOTEL.com

3)在注入點通常加入log,追蹤代碼路徑,和方法參數,執行結果等。

7.注入建議

1)盡量在注入點,以函數調用一行代碼注入,且把注入的函數實現放在走后面,避免對其他原有代碼 .line 有影響。

2)把注入代碼封裝的成類,避免注入的時候,要手動修改很多的.line。

參考網址:

原文:http://www.cnblogs.com/sihaixuan/p/4372625.html

總結

以上是生活随笔為你收集整理的常用android的smali注入代码,android smali代码注入 实战一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。