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,然后和一個常量做比較,是否正確。而這個常量在運行過程經過一些列的變化,因此我們不需要關心變化的過程。有兩個方法:
0x02 IDA動態調試SO
關于IDA動態調試步驟,首先你的手機需要ROOT。
這個時候在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文件动态调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xposed如何实现类中函数的调用
- 下一篇: 管家病毒查杀模块逆向分析