記一次利用動態除錯so包破解協議 (1)
前期工作:
1.設定手機為除錯模式,我這裡用了 mprop
相關命令:
1.chmod 755 /data/local/tmp/mprop
2.data/local/tmp/mprop
3.setprop ro.debuggable 1
4./data/local/tmp/mprop -r
5.檢視 getprop ro.debuggable
這樣程式碼成功了
2.修改selinux的許可權
相關命令:執行setenforce 0, 執行成功的話會變為Permissive
3.將IDA裡面的android_server檔案 push 進 這個目錄/data/local/tmp
並且要設定許可權
chmod 777 /data/local/tmp/android_serve
下面可以進入動態除錯的相關操作了
第一步:啟動android_server服務
會出現的問題就是地址被使用了:
解決辦法就是檢視其的程序,kill掉在執行啟動就ok了
第二步:再啟動一個命令視窗
1.埠轉發,因為IDA預設埠是23946: adb forward tcp:23946 tcp:23946
2.啟動app的頁面: adb shell am start -D -n cn.mama.cityquan/cn.mama.cityquan.activity.SplashActivity
之後app會停留在
第三步:
去sdk裡面開啟ddms工具
之後在ddms工具裡面顯示的app包名列表中找到你要除錯的包名
看到埠是8623,之後做連線偵錯程式
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8623
這裡的埠一定是在ddms裡面看到的埠
注意:中途android_server監聽有可能會斷開,需要重新啟動android_server
第四步:啟動32位的IDA,因為32位的才能按F5檢視原始碼
進去之後操作 Debugger -> Attach -> Remote ARMLinux/Android debugger
配置引數:
點選Debug options
點選ok,進入等待一會
如果顯示無法連線,那就重啟一下手機,重新來過所有操作
如果成功進入的就會到選擇包
成功進入,找到要除錯的so包,就可以進行除錯了
進去之後先按F9過掉,之後才在需要打點地方打點,我這裡是除錯他的加密演算法
由於第一次動態除錯so,還沒有完全分析成功, 裡面的加密演算法都是md5 加密,只不過是新增引數/混亂引數進行MD5加密而已
這裡有兩種引數組合,我只分析出用來登入的那個的,另一種組合不知道為啥加密的引數一直會變,所以就還沒有分析成功,後續看吧
格式:
device_id +key+password + t + username + ver + 9fd8b9cb5d31e7c6efef4bba1c5eb145(這裡是固定的)
加密的內容從箭頭指向的v33裡面可以看到
注意:進入程式碼除錯的時候操作 按F5 再 按F8,反正就是要按F8才能在原始碼裡面進行F7下一步的
①除錯快捷鍵:
F2設定斷點,F4執行到滑鼠位置,F7單步步入,F8單步步過,F9執行程式
F5/Tab 將相應的簡單彙編代表粗略轉換為C/C++程式碼