android 5.0.1 libdvm.so,Android逆向进阶—— 脱壳的奥义(基ART模式下的dump)
本文作者:i春秋作家HAI_ZHU
0×00 前言
市面上的資料大多都是基于Dalvik模式的dump,所以這此準備搞一個ART模式下的dump。
Dalvik模式是Android 4.4及其以下采用的模式,之后到了Android 5.0 之后就是ART模式,關于這兩個模式的詳細內容,請自行百度,如果在文章看不來的地方,可以翻翻之前的文章。如果有問題也可以私聊我。
廢話不多說,直接上操作。
內容:demo 動態 dump 出 dex文件
環境說明
1.系統 小米 9.0
2.ida 7.0
0×01 demo 動態 dump 出 dex文件
1.啟動ida 端口監聽
1.1啟動Android_server 服務
1.2端口轉發
1.3軟件進入調試模式
2.ida 下斷
2.1 attach??附加進程
2.2 斷三項
2.3 選擇進程
2.4 打開Modules
搜索art
PS:小知識
Android 4.4版本之前 系統函數在libdvm.so
Android 5.0之后 系統函數在libart.so
2.5 打開Openmemory()函數
在libart.so中搜索Openmemory函數并且跟進去。
PS:小知識
一般來說,系統dex都會在這個函數中進行加載,但是會出現一個問題,后面說。
2.6 下斷點
3.運行程序到下斷處
3.1 jdb轉發運行程序
3.2 查看IDA運行
成功下斷,并且運行到我們下斷的地方。
3.3 查看 dex的位置
打開寄存器窗口,可以看到R1就是我們的dex
然后在Hex窗口打開R1。
很明顯就看到了dex文件的二進制結構。如果不明白可以看看之前的dex文件分析。
3.4 提取關鍵信息
第一個關鍵信息:地址偏移:0xF35CA328
第二個關鍵信息:文件偏移:70 35 01 00,轉換一下就是 0×00013570
使用16進制加法器進行相加,F35DD898
4. dump
4.1 使用腳本進行dump
staticmain(void){? ? auto fp, begin, end, dexbyte;? ? //打開或創建一個文件fp = fopen(“d:\\dump.dex”, “wb”);? ? //dex基址begin=??0xF34C6320;? ? //dex基址 + dex文件大小end= begin+ 0×00013570;? ? for( dexbyte = begin; dexbyte < end;? ???dexbyte ++ ){//按字節將其dump到本地文件中fputc(Byte(dexbyte), fp);? ?? ???}}
4.2 腳本dump run
腳本填寫好了之后,點擊run即可。
4.3 成功dump
0×02 后續
這里dump出來的dex還是和原來的dex有一些區別的,要進行一些修復才可以。關于修復的內容還在探討中,如果有大佬路過指教一二,感激不盡。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android 5.0.1 libdvm.so,Android逆向进阶—— 脱壳的奥义(基ART模式下的dump)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络热词拴Q被申请注册商标:出处竟是一位
- 下一篇: 交行信用卡以卡办卡需要什么条件 额度是多