Android反编译APK -- Ubuntu下

#APK构建过程
###我们知道生成一个APK所经历的过程为以下四步

  1. 设计(编码布局的过程)
  2. 编译(把你的resource通过aapt打包, .java编译成.class再编译成.dex)
  3. 打包(把resource和.dex打包成apk)
  4. 签名(给你的apk打sign)
    ###那么经历上面的步骤你的apk就生成好了。

#APK反编译
###根据前面所说的,其中2步和3步是我们需要逆向做的
###首先我们需要的工具有dex2jar、JD-JUI。
dex2jar -->这个是把.dex转变为.jar的
JD-JUI -->这个是用来翻译.jar的
###dex2jar
https://github.com/pxb1988/dex2jar/releases/tag/2.1-nightly-26
或者也可以在下列路径下载
http://download.csdn.net/download/qq_33717425/9960758
下载好之后解压。(eg:A.apk)

cd dex2jar-2.1
d2j-dex2jar.sh A.apk

现在dex2jar会有版本的检测如下:

009
M3 releases of the Android platform (November–December 2007)
013
M5 releases of the Android platform (February–March 2008)
035:
android 7.0 之前
037
android 7.0 
038
android 8.0 

如果版本不对应则会出现以下错误:

com.googlecode.d2j.DexException: not support version.
	at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java:149)
	at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java:209)
	at com.googlecode.d2j.reader.MultiDexFileReader.open(MultiDexFileReader.java:36)
	at com.googlecode.dex2jar.tools.Dex2jarCmd.doCommandLine(Dex2jarCmd.java:105)
	at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:290)
	at com.googlecode.dex2jar.tools.Dex2jarCmd.main(Dex2jarCmd.java:33)

则我们需要用二进制编辑软件对dex文件的版本做相应的调整,对应关系前文已说明。
在Ubuntu下使用bless对二进制文件编辑如下图:
图中037就为对应版本,根据需求做相应更改图中037就为对应版本,根据需求做相应更改
最后运行之前命令生成: A-dex2jar.jar

接着我们用JD-JUI去读
###JD-JUI
http://jd.benow.ca/
下载之后就直接点击安装就好了。
打开后把前面生成的A-dex2jar.jar导入就可以看见了

到此,反编译成功!!

猜你喜欢

转载自blog.csdn.net/qq_33717425/article/details/77775716