您好,登錄后才能下訂單哦!
前段時間我寫了一篇 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靜態分析,找到關心函數的地址
通過ida發現這個函數在 libsocketclient.so 中的開始地址是 ea0
而我們關心的數據的在這個函數的地址如下圖,標記的紅圈
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的靜態分析的過程,其實調試方法只是找到最終答案的一個重要步驟,而通過對系統的熟悉,撥開層層迷霧,找到關鍵的庫,找到關鍵的函數,才是整個逆向分析中最重要的一步。
注:附件和開頭列出的鏈接地址的博文附件相同,就不添加了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。