【安卓逆向】360殼過反調試+dump dex文件以及簡單修復
mmap函數下段,然後F9運行斷下,然後F8往下,一直運行到這裡:
![安卓逆向--360殼過反調試+dump dex文件以及簡單修復](http://p2.ttnews.xyz/loading.gif)
F7進來,在R2寄存器這裡打一個斷點:
![安卓逆向--360殼過反調試+dump dex文件以及簡單修復](http://p2.ttnews.xyz/loading.gif)
F9運行到這裡,然後F7進來;
F8往下走,這裡有比較指令:
這個函數的返回值在R0裡面存儲,(可以直接把光標放在cmp那條指令然後F4跳過去 )
把R0置零:
置零之後呢,F9:
再一次F8:繼續在mmap函數末尾斷下,然後繼續F8:來到這裡:
緊接著F9,繼續來到mmap
然後繼續F8:發現還是libc.so,繼續F9,然後F8,直到來到libjiagu.so:
(注意,這是第二處反調試的點,雖然後邏輯代碼和第一處的一樣,但是是不同的區段,所以還需要進去看看是不是上一次哪兩個下斷的函數,不要直接f9,以為和第一次一樣,不一樣!)
繼續F8往下,來到這裡:
然後F9在這裡斷下:
然後F7進去,然後F9在這個 LR 處斷下,
然後F7進去:進去後一路F8,繼續來到cmp比較指令,
繼續修改上面函數的返回值R0寄存器的值;從而過掉反調試
直接置零即可;
修改後,繼續F9:在mmap函數處斷下:
同樣的,繼續往下走,來到libjiagu.so,來時和上面一樣,來到這裡比價的地方:這是第三次修改R0 和cmp處比較:
繼續F9,在mmap函數處斷下,然後在函數頭位置下一個斷點;然後ctrl+S,可以看一下各個區段:
到這裡,已經三次反調試的點已經過去了,現在要做的,就是找到棧去存放dex文件的地方;
在mmap函數的函數頭和函數尾部分別下斷點,尾部斷下後,直接F9運行,在頭部斷下,然後F8單步,一直單步到函數尾部,時刻觀察棧窗口;
在棧區發現:
此時同步R0寄存器,一直單步,知道十六進制彙編窗口出現dex文件;也就是執行完上面這個函數;
觀察dex的區域:
我們ctrl+s找到該區域跳過來看一下:在zero這個區域裡面;
解密後的數據就放在這個區域,也就是R4寄存器存放的值;
這個dex文件的大小就是:19837C
也就是此時R4和R5寄存器的值;
接下來,我們用腳本來dump一下;
修改起始地址和大小
然後點擊run運行即可;
打開壓縮包,然後丟進去替換;
把安裝包使用androidkiller進行反編譯,在xml裡面修改這兩個屬性:
然後保存,回編
深入瞭解學習諮詢vx:15772466640
閱讀更多 信息安全教學 的文章