加載的子產品libdvm.so,找到其中的函dvmdexfileopenpartialPKviPP6DvmDex,在這個函數下斷點。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuIWb1hGdfZDN0MTOw8FMz0yNw0SNxAjMvwlQxIDMx8VLtQWavJHZuF0LcNXZnFWbp9CXzRWYvxGc19CX05WZ052bj1Cc39CXt92YuUmchh2cmd2bsJmL3d3dvw1LcpDc0RHaiojIsJye.png)
為什麼要在這個函數下斷點,因為這個函數是加載dex檔案的,R0就是加載的dex檔案的位址。
然後點選IDA的繼續,程式便會斷在這個函數上面。
這時檢視R0的值,然後顯示其記憶體如下:
我們看到了dex檔案的标志。
然後打開idc腳本,修改dump的記憶體起始位址和結束位址,起始位址就是R0的值,結束位址就是R0加上dex檔案的大小,然dex檔案的大小在dex header的0×20處,也就是0xFAEB4。
點選run,之後會在D盤下面生成一個1M左右的dex檔案,這就是我們dump出來的dex檔案。
使用dex2jar轉成jar檔案,再使用jd-gui.exe打開,得到程式代碼:
也可以把dex檔案替換回去,打包運作。