Mac上反编译Android-apk傻瓜式记录。
2016-03-19 14:28
621 查看
下载我上传的资源就可以省去一些操作步骤,为了方便更新强迫症在这里也会给出资源下载地址
我的资源下载地址点击打开链接;
官方下载地址,有三个工具需要下载:
Apktool:http://ibotpeaches.github.io/Apktool/install/
dex2jar:https://github.com/pxb1988/dex2jar
jd-jui:http://jd.benow.ca
操作步骤:
打开Apktool网址,点击图片中1位置,将弹出的内容复制到sublime(这是我的文本编辑工具)保存为apktool,注意去掉扩展名.sh,如果保存后仍然有扩展名那么就重命名并去掉
点击图片中2位置下载apktool_x.x.x.jar(x是一个代号而已,找你需要的版本下载就可以了),将下载好的jar包改名为apktool.jar
将以上两个文件放到"/usr/local/bin"目录下。并修改这两个文件的可执行权限
做起来有点麻烦:
目录是隐藏的所以-->打开Finder然后快捷键shift+command+G通过前往文件夹进入
修改权限时需要在这个文件夹中操作终端命令,如果不知道怎么进入这个文件夹可以有简单方法
打开系统偏好设置-->键盘-->快捷键-->左边找到服务-->看图勾选
然后就可以用这种方式进入终端了:
通过命令:chmod a+x file(file就是上面那两个文件)
然后执行命令:shell apktool;验证成功apktool -v看到下面信息就说明成功了
下载dex2jar;进入到github以后向下拉找到如图位置,两个下载都可以,我是下载的第一个download中的
下载jd-jui
这两个直接保存成文件夹形式就可以
接下来就是反编译的步骤了
创建个文件夹apk(文件夹名字随意)将待反编译的apk放进去(我的待反编译apk是bob.apk)
终端进入这个文件夹执行命令:apktool d bob.apk(apktool d 后面跟着的bob是我的待反编译apk名字,你改成你自己的)
接下来回编译apk。命令apktool b bob
上面的build和dist两个文件夹就是回编译apk过程中生成的,编译出来的apk在dist目录下,打开build/apk文件夹你会发现少了original文件夹下的META-INF文件夹--这说明dist文件夹中的apk文件是没有签名的(最后在说这个)
将dex2jar-2.0文件夹里的d2j_invoke.sh和d2j-dex2jar.sh两个文件增加可执行权限(同上)。然后进到dex2jar-2.0这个文件夹下执行命令:
./d2j-dex2jar.sh /Users/mr.chen/apk/aaa.apk
反编译好的文件在这里
打开jd-jui将的到的文件拖进去就看到源码了
反编译就结束了,接下来说下签名问题
回编译生成的apk是不能安装的,因为没签名所以会提示:Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]
生成签名命令:
给apk增加签名
结束。。。。。。。。。。。
我的资源下载地址点击打开链接;
官方下载地址,有三个工具需要下载:
Apktool:http://ibotpeaches.github.io/Apktool/install/
dex2jar:https://github.com/pxb1988/dex2jar
jd-jui:http://jd.benow.ca
操作步骤:
打开Apktool网址,点击图片中1位置,将弹出的内容复制到sublime(这是我的文本编辑工具)保存为apktool,注意去掉扩展名.sh,如果保存后仍然有扩展名那么就重命名并去掉
点击图片中2位置下载apktool_x.x.x.jar(x是一个代号而已,找你需要的版本下载就可以了),将下载好的jar包改名为apktool.jar
将以上两个文件放到"/usr/local/bin"目录下。并修改这两个文件的可执行权限
做起来有点麻烦:
目录是隐藏的所以-->打开Finder然后快捷键shift+command+G通过前往文件夹进入
修改权限时需要在这个文件夹中操作终端命令,如果不知道怎么进入这个文件夹可以有简单方法
打开系统偏好设置-->键盘-->快捷键-->左边找到服务-->看图勾选
然后就可以用这种方式进入终端了:
通过命令:chmod a+x file(file就是上面那两个文件)
然后执行命令:shell apktool;验证成功apktool -v看到下面信息就说明成功了
Last login: Sat Mar 19 12:05:10 on console ➜ ~ apktool -v Apktool v2.0.3 - a tool for reengineering Android apk files with smali v2.1.0 and baksmali v2.1.0 Copyright 2014 Ryszard Wiśniewski <brut.alll@gmail.com> Updated by Connor Tumbleson <connor.tumbleson@gmail.com> usage: apktool -advance,--advanced prints advance information. -version,--version prints the version then exits usage: apktool if|install-framework [options] <framework.apk> -p,--frame-path <dir> Stores framework files into <dir>. -t,--tag <tag> Tag frameworks using <tag>. usage: apktool d[ecode] [options] <file_apk> -f,--force Force delete destination directory. -o,--output <dir> The name of folder that gets written. Default is apk.out -p,--frame-path <dir> Uses framework files located in <dir>. -r,--no-res Do not decode resources. -s,--no-src Do not decode sources. -t,--frame-tag <tag> Uses framework files tagged by <tag>. usage: apktool b[uild] [options] <app_path> -f,--force-all Skip changes detection and build all files. -o,--output <dir> The name of apk that gets written. Default is dist/name.apk
下载dex2jar;进入到github以后向下拉找到如图位置,两个下载都可以,我是下载的第一个download中的
下载jd-jui
这两个直接保存成文件夹形式就可以
接下来就是反编译的步骤了
创建个文件夹apk(文件夹名字随意)将待反编译的apk放进去(我的待反编译apk是bob.apk)
终端进入这个文件夹执行命令:apktool d bob.apk(apktool d 后面跟着的bob是我的待反编译apk名字,你改成你自己的)
Last login: Sat Mar 19 15:12:55 on ttys000 ➜ apk apktool d bob.apk I: Using Apktool 2.0.3 on bob.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... I: Loading resource table from file: /Users/mr.chen/Library/apktool/framework/1.apk I: Regular manifest package... I: Decoding file-resources... I: Decoding values */* XMLs... I: Baksmaling classes.dex... I: Copying assets and libs... I: Copying unknown files... I: Copying original files...
接下来回编译apk。命令apktool b bob
➜ apk apktool b bob I: Using Apktool 2.0.3 I: Checking whether sources has changed... I: Smaling smali folder into classes.dex... I: Checking whether resources has changed... I: Building resources... I: Building apk file... ➜ apk
上面的build和dist两个文件夹就是回编译apk过程中生成的,编译出来的apk在dist目录下,打开build/apk文件夹你会发现少了original文件夹下的META-INF文件夹--这说明dist文件夹中的apk文件是没有签名的(最后在说这个)
将dex2jar-2.0文件夹里的d2j_invoke.sh和d2j-dex2jar.sh两个文件增加可执行权限(同上)。然后进到dex2jar-2.0这个文件夹下执行命令:
./d2j-dex2jar.sh /Users/mr.chen/apk/aaa.apk
➜ dex2jar-2.0 ./d2j-dex2jar.sh /Users/mr.chen/apk/bob.apk dex2jar /Users/mr.chen/apk/bob.apk -> ./bob-dex2jar.jar ➜ dex2jar-2.0
反编译好的文件在这里
打开jd-jui将的到的文件拖进去就看到源码了
反编译就结束了,接下来说下签名问题
回编译生成的apk是不能安装的,因为没签名所以会提示:Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]
生成签名命令:
keytool -genkey -keystore bob.keystore -keyalg RSA -validity 10000 -alias bob
使用 "keytool -help" 获取所有可用命令 ➜ dex2jar-2.0 keytool -genkey -keystore bob.keystore -keyalg RSA -validity 10000 -alias bob 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: chen 您的组织单位名称是什么?注:实际上-keystore后面跟的是签名文件的名字,而-alias后看跟的是别名,一般情况下-keystore后面跟-alias是一样的,但其实两者没有关系,可以不同。
给apk增加签名
jarsigner -digestalg SHA1 -sigalg MD5withRSA -tsa -verbose -keystore bob.keystore -signedjar bob-signed.apk bob.apk bob
结束。。。。。。。。。。。
相关文章推荐
- Conversion to Dalvik format failed with error 1 in Android on export
- Android常用控件——Dialog之AlertDialog和ProgressDialog
- Android Audio系统分析1(获得最小buffer部分)
- Android内存优化
- Android手机通讯录的读取、添加、删除、查找
- Android:控件AutoCompleteTextView 自动提示
- Android之Window和Activity和View
- android开发之路11(用SharedPreferences存储数据)
- Android进阶之大话设计模式
- Android常用设计模式
- android AsyncTask介绍
- android studio 使用问题小小结(1)
- LruCache,DiskLruCache实现相关研究记录
- Android Developers:控制你的应用程序音量和播放
- andorid与ros互操作的关键点
- android 耳机线控的实现方法
- android studio gradle 空项目
- Android音量控制调节
- Android客户端与服务器端数据同步
- Android&前端 学习资料