反编译之将脱壳后的dex文件从新打包成apk

前言:经过上一篇文章反编译之脱去乐固加固的壳,已经能够拿到dex文件了,那么咱们怎么将dex文件从新打包回新的apk呢?若是有这样的疑问,就看看这篇文章吧!必定会帮到你的!html

获得dex文件以后该作什么?

  说实话在我刚获得脱壳后的dex的文件的时候,有点懵,我在想拿到这个dex文件以后该作什么呢?怎么将这个真正的dex文件从新打包回apk呢?咱们都知道没有加固的app反编译以后,源码是smali文件,但如今我拿到的是dex文件,因此在拿到dex文件以后,咱们要作的就是将dex文件编译成smali文件,而后从新编译成apk。java

将dex文件编译成smali文件

  将dex文件编译成smali文件,咱们须要下载baksmali.jar文件,下载baksmali.jar文件以后,就能够经过如下命令将dex文件编译成smali文件了:android

java -jar baksmali.jar smaliTest.dex
复制代码

如:你要编译的dex文件是testSmali.dex则输入的命令是sass

java -jar basksmali.jar testSmali.dex
复制代码

若是编译成功,此时会生成一个out目录,out目录里面的文件就是smali文件了。有时可能会遇到下面的错误bash

Exception in thread "main"app

com.beust.jcommander.MissingCommandException: Expected a command, got classes.dexatui

com.beust.jcommander.JCommander.parseValues(JCommander.java:725)atspa

com.beust.jcommander.JCommander.parse(JCommander.java:304)atcode

com.beust.jcommander.JCommander.parse(JCommander.java:287)at org.jf.baksmali.Main.main(Main.java:90)cdn

这时你只要将上面的命令换成

java -jar basksmali.jar disassemble testSmali.dex
复制代码

便可解决。

回编译的注意事项

  回编译通过加固后的app,还须要修改AndroidManifest.xml文件,具体的修改内容以下

须要将android:name="xxx"里面"xxx"的内容换成android:value="yyy"里面的"yyy",同时须要删除那行。

  可能一个apk会有几个dex文件,在将dex文件编译成smali文件时会有好几个文件夹,这时咱们要按下图来命名smali文件夹

好了,下面你就能够用apktool b xxx来打包通过你脱壳后的apk了。

注意:这时猴的apk还不能直接安装哦,还须要进行签名,而后才能安装。

结束语

  这篇文章有点短,其实将dex文件编译成smali文件原本就不复杂,这篇文章的主要目的是告诉在得到dex文件后,怎样将dex文件塞回去,从新打包生成新的apk,在这个过程当中若是有什么问题,欢迎在下面留言讨论。

  转载请注明出处:www.wizardev.cn

欢迎关注个人公众号
扫码关注公众号,回复“获取资料”有惊喜
相关文章
相关标签/搜索