美文网首页Android开发
反编译apk的步骤

反编译apk的步骤

作者: kross | 来源:发表于2018-12-26 19:44 被阅读2次

1.先要获取目标应用安装包(.apk)文件

1.1. 在rom中找

1.2. 通过adb pull/system/app/目录找搞出来

1.3. 在网上搜,看看有没有xxx.apk的下载

2.反编译apk工具与准备

2.1. 需要/system/framework/里面的东西,直接adb pull出来

2.2. 需要7za (这里面有个oat2dex附件里面有这个 http://forum.xda-developers.com/android/software-hacking/guide-android-l-5-0-lollipop-deodex-t2967242

2.3. apktool(HP: https://ibotpeaches.github.io/Apktool/documentation/

2.4. aapt(这个在android sdk里有)

2.5. baksmali,smali(HP: https://github.com/JesusFreke/smali

2.6. jd-gui(HP: http://jd.benow.ca/

3.步骤

3.1. 先解压安装包apk文件,一般会得到.odex.odex.xz文件。
面对.odex.xz文件的时候,需要用7za将它变成.odex文件。
具体命令:

7za x *.odex.xz

3.2. 接下来使用aapt工具和apk文件得到targetSdkVersion,具体命令类似于下面:

aapt d badging xxxx.apk | grep version

记下这个sdkVersion,比如是23

3.3. 接下来使用baksmali.odex文件变成一堆smali文件。具体命令类似于下面(各个版本不一样):

baksmali deodex xxxxx.odex -a 23 -d system\framework -o output

// 上面不行试试这个
baksmali -x arm\temp.odex -a 21 -o output -d system\framework

// 还是不行试试这个
baksmali xxx.odex -a 23 -x -c boot.oat -d system\framework\arm -o output

总之这个工具用起来还是有点不顺畅,有点坑,需要自己多尝试,多研究。
-a 后面跟api版本,就是3.2步骤得到的那个数字,-d后面跟adb pull出来的/system/framework这个目录

然后,如果你遇到Unsupported oat version: 45这种错误或者类似的错误,这个没辙。具体看这里:https://github.com/JesusFreke/smali/issues/392

如果遇到类似于找不到什么class啊,core-junit.jar什么的,还可以抢救一下,尝试上面第三行的那个命令。

如果遇到

Error occurred while loading class path files. Aborting.
java.util.MissingFormatArgumentException: Format specifier '%s'

这个错误的话,你应该用的是上面第一行那个命令,考虑重新下载个低一点版本的smali,然后再试试第二行,第三行的指令。

如果啥都没显示,那应该是成功了,你会得到一个文件夹,里面有一些类似于java包的组织形式的文件夹和文件,文件是smali后缀。

3.4. 上一步成功了之后,你需要用smali工具将上一步的输出转换成一个dex文件。

smali -o classes.dex output

output指的是3.3步骤产出的output文件夹。这个步骤我基本没有失败过,成功后,你得到了一个dex文件。

3.5. 最后使用d2j-dex2jar工具就可以将dex转换成jar文件了。

3.6. 最后使用jd-gui.exe工具打开jar文件,就可以查看到代码了。

4.其他

4.1. 如果遇到rom里面是system.new.data这种形式的文件,要用SystemExtract这个工具将它解压出来。

SystemExtract下载:http://forum.xda-developers.com/showpost.php?p=60193809&postcount=14
参考链接:http://forum.xda-developers.com/android/help/how-to-extract-dat-lollipop-dat-files-t3049185

相关文章

  • Android smali动态调试

    调试步骤 反编译apk 使用apktool工具反编译apk 在AndroidManifest.xml里面的Appl...

  • Mac系统下Android Apk反编译

    Apk反编译需要3个工具,对应三个步骤: apktool:反编译apk中的资源文件 dex2jar:将apk中的c...

  • Apk反编译步骤

    今天原来一php同事让我帮忙反编译一个app,想了解一下其中的算法,就反编译了一下。顺便把步骤记录下来。 1. 下...

  • APK反编译步骤

    一、使用的工具 apktool(资源文件获取) 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看 de...

  • 反编译Android APK及防止APK程序被反编译

    反编译Android APK及防止APK程序被反编译 怎么逆向工程对Android Apk 进行反编译 googl...

  • Apk反编译

    APK反编译流程 对我们来说,apk 就是一个压缩包 。反编译 apk 就是反编译 dalvik(Dalvik 是...

  • 反编译apk的步骤

    先下载好这两个工具 dex2jar这个工具用于将dex文件转换成jar文件下载地址:http://sourcefo...

  • 反编译apk的步骤

    1.先要获取目标应用安装包(.apk)文件 1.1. 在rom中找 1.2. 通过adb pull从/system...

  • APK反编译工具的使用

    前言 处理反编译,首先先要了解apk文件的结构,然后是编译过程,最后是反编译。反编译Apk的目的就是Apk拆成我们...

  • Android apktool最新版反编译apk

    获取资源文件 方法步骤 获取Java文件 方法步骤 将要反编译的APK后缀名改为.rar或则 .zip,并解压,得...

网友评论

    本文标题:反编译apk的步骤

    本文链接:https://www.haomeiwen.com/subject/lseklqtx.html