91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android安全講座第九層 android gdb 調試實例演示(無源代碼篇)

發布時間:2020-06-13 23:28:52 來源:網絡 閱讀:1578 作者:sunzeduo 欄目:移動開發

   前段時間我寫了一篇 android gdb 調試實例演示(有源代碼篇)見下面的鏈接

http://sunzeduo.blog.51cto.com/2758509/1388555


    主要是總結一下開發人員調試ndk編譯出來的so來用的,對于破解人員,可能就不會有源代碼,也不會有帶符號表的so庫文件了,這個時候破解人員要找到so中的關鍵函數,并且動態的調試,就需要一些手段了。


下面,還就著上面的一篇博文的例子展開,描述一下沒有源代碼的時候如何調試so


一  前置條件:

1  ida工具 主要用于靜態分析

2  android版本的 gdbserver(同前一篇)

3  android版本的 gdb (同前一篇)



二  開始分析:

因為本身這篇博文主要描述調試過程,而不是描述破解的思路,所以假定我們已經找到例子代碼中的關心的so庫文件 libsocketclient.so

并且是關心的

Java_com_example_socketcomm_JniSocketClient_cliensocket

這個jni函數,想知道通過socket返回的數據是神馬。


2.1 找到 libsocketclient.so 這個庫在進程中的映射地址


shell@android:/ # cat /proc/30646/maps | busybox grep libsocketclient         
58ead000-58eb0000 r-xp 00000000 103:04 627350    /data/data/com.example.socketcomm/lib/libsocketclient.so
58eb0000-58eb1000 r--p 00002000 103:04 627350    /data/data/com.example.socketcomm/lib/libsocketclient.so
58eb1000-58eb2000 rw-p 00003000 103:04 627350    /data/data/com.example.socketcomm/lib/libsocketclient.so


這個庫可執行段映射的地址是 0x58ead000


2.2 通過ida靜態分析,找到關心函數的地址

Android安全講座第九層 android gdb 調試實例演示(無源代碼篇)



通過ida發現這個函數在 libsocketclient.so 中的開始地址是 ea0

而我們關心的數據的在這個函數的地址如下圖,標記的紅圈


Android安全講座第九層 android gdb 調試實例演示(無源代碼篇)


0x1040 這個是接收到 socket數據的地址,所以我們應該在這個地方打上斷點,然后動態調試。

我們實際應該打斷點的地址應該是


58ead000 + 1040 = 58eae040


2.2 利用gdb調試,找到關心的值

0x4008aa40 in ?? ()
(gdb) b *0x58eae040
Breakpoint 1 at 0x58eae040
(gdb) c
Continuing.
[New Thread 30769]
[Switching to Thread 30769]
Breakpoint 1, 0x58eae040 in ?? ()


     設置斷點以后,再點擊發送數據 ok ,進程停止到了設置斷點的地方了


   

(gdb) info reg
r0             0x12 18
r1             0x5ef8e85c   1593370716
r2             0x0  0
r3             0x0  0
r4             0x58eaf690   1491793552
r5             0x0  0
r6             0x31 49
r7             0x5c051db8   1543839160
r8             0x400cda4c   1074584140
r9             0x5ef8ec60   1593371744
r10            0x5c06bec0   1543945920
r11            0x5ef8ec94   1593371796
r12            0x5ef8e830   1593370672
sp             0x5ef8e840   0x5ef8e840
lr             0x40096ec9   1074360009
pc             0x58eae040   0x58eae040
cpsr           0x10 16
(gdb) print (char*)0x5ef8e85c
$1 = 0x5ef8e85c "server back buff 5"
(gdb) c
Continuing.


  查看寄存器的值,然后打印寄存器的值的數據,ok 我們想要的值已經獲取。



三 小結

本篇博文主要是描述無源碼的gdb調試方法,所以不針對so的靜態分析的過程,其實調試方法只是找到最終答案的一個重要步驟,而通過對系統的熟悉,撥開層層迷霧,找到關鍵的庫,找到關鍵的函數,才是整個逆向分析中最重要的一步。


注:附件和開頭列出的鏈接地址的博文附件相同,就不添加了。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大名县| 西安市| 阿图什市| 乌拉特中旗| 卢湾区| 丽水市| 山阴县| 大邑县| 扶余县| 宁武县| 保靖县| 同仁县| 金平| 清流县| 鸡西市| 重庆市| 博客| 九台市| 太仆寺旗| 全椒县| 扶沟县| 社旗县| 淳安县| 衢州市| 铜陵市| 布尔津县| 乐都县| 定南县| 察哈| 龙门县| 天祝| 金川县| 襄汾县| 南岸区| 交城县| 广昌县| 加查县| 长宁区| 政和县| 河源市| 保康县|