之前的笔记搬运
安卓反汇编工具介绍
Java Decompiler 反编译java
dex是class转过来的, 可以把dex转成class再用反编译工具
JEB
JEB, 强大的smali反编译工具, 可以把apk的dex文件转换成smali, 反编译出资源等等文件,正确率高达99%, 并且在翻译成java源码时自动反混淆;
选中函数Q键可以把函数翻译成java源码
还可以把整个工程翻译成java源码导出
baksmali与smali
但是由于JEB只可以查看反汇编, 并不提供修改的功能, 所以就有了以下两个工具
baksmali.jar dex –> smali
smali.jar smali ->dex
使用方法:
java -jar baksmali.jar -o HelloWorldOut HelloWorld.dex
——————————————————————————————————
命令执行成功后会在 HelloWorldOut 目录下生成相应 smali 文件,我们在修改完
smali代码后,使用 smali.jar 重新汇编成 HelloWorld.dex,输入命令:
——————————————————————————————————
java -jar smali.jar -o HelloWorld.dex HelloWoldOut
apktool
但是由于baksmali和smali只可以对源码进行操作, 不能对资源,文件等操作,
所以就有了这个工具: apktool
apk的反编译和回编译, 命令如下
apktool d xxx.apk 这是反编译命令。xxx.apk就是在E:/apktool目录下欲反编译的apk文件
apktool b xxx 这是回编译命令。
xxx就是反编译后的文件所在文件夹,这个文件夹一般是以之前反编译的文件名为名称,例如我反编译SystemUI.apk,就会在E:/apktool目录下生成一个SystemUI文件夹,回编译命令就可以这样写“apktool b SystemUI”。回编译完成会在SystemUI文件夹生成一个dist**文件夹和一个build**文件夹。
dist文件夹里面存放的就是回编译后不带有签名的apk文件,签名后就可以安卓执行了
build文件夹里面还有一个apk文件夹,里面存放的就是回编译后没有打包成apk的文件。
ApkTools打包出错异常:Could not decode attr value, using undecoded value instead
解决办法: c:\user\yourname\apktool\framework\ 这个目录下!删掉之后,
在apktool反编译的时候加上-f 重新写入就可以了