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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

android中SO文件动态调试

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android中SO文件动态调试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0X00 前言

為了增加APK文件的破解難度,很多比較重要的功能都是通過native實現,與反編譯不同的是,java的偽代碼可以很清楚的得到程序的邏輯關系,但是so文件反編譯得到的是匯編代碼,使用ida這樣的神器可以得到c的偽代碼。使用ida實現so的動態調試,可以在關鍵地方下斷點,對于一些變換,比如有的時候輸入的內容與經過一些列的變換后的結果比較,這個時候我們不需要關心中間的變換過程,在動態調試的時候,在比較的地方下個斷點,然后在內存中查看此時比較的常量。正好最近做了CTF的一個re。順便熟悉下ida的動態調試步驟。

0x01 APK邏輯的簡單分析

在apk的manifest文件里,我們得到apk的入口avtivity。包括包名和主類。

通過一步步分析,得知:用戶輸入 用戶名和 密碼, 其中用戶名必須是?<string name=”username”>secl-007</string> ,而密碼的判斷邏輯是調用了native函數(Java_com_ssctf_seclreg_Seclo0o_getpl )去判斷,這個時候用ida靜態分析,打開apk加載的so文件,通過分析,我們發現對于輸入的密碼沒有進行任何處理,只是判斷輸入密碼的長度,如果長度是39,然后和一個常量做比較,是否正確。而這個常量在運行過程經過一些列的變化,因此我們不需要關心變化的過程。有兩個方法:

  • 輸入任意長度為39的內容,然后dump整個程序的內存,這個時候在dump內容中尋找,(因為我們知道這個常量特定方式SSCTF{*****)
  • 使用IDA動態調試,在比較的地方下斷點,得到此時常量的內容。這篇文章我們使用第二種方法實現
  • 0x02 IDA動態調試SO

    關于IDA動態調試步驟,首先你的手機需要ROOT。

  • 把ida目錄下的android_server文件放到手機的目錄,adb pull android_server /data/local/tmp
  • 給與android_server 777 權限, chmod 777 android_server
  • 端口的轉發 adb forward tcp:23946 tcp:23946
  • 打開ddms
  • 運行android_server ./android_server
  • 將要調試的apk文件以調試的方式運行?adb shell am start -D -n com.ssctf.seclreg/.Seclreg ? 包名/.類名
  • 這個時候手機顯示等到調試連接模式,打開ida,debugger-attach-remote android server?
  • 選擇ok,并且F9運行,這個時候,jdb附加程序,jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
  • 這樣程序就可以動態調試了,我們根據SO基址和函數的偏址找到調試時候函數的地址,然后F2 下斷點,
  • 這個時候在APK輸入,然后程序運行到我們設置斷點的地方,

    然后我們在數據窗口里查看數據,得到FLAG:)

    原文地址:?https://www.ijiza.cn/2016/03/03/android%E4%B8%ADso%E6%96%87%E4%BB%B6%E5%8A%A8%E6%80%81%E8%B0%83%E8%AF%95/

    總結

    以上是生活随笔為你收集整理的android中SO文件动态调试的全部內容,希望文章能夠幫你解決所遇到的問題。

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