apk包的破解与反编译

原文:http://www.jianshu.com/p/78cac8e9ddf1


关于apk包的破解,首先需要下载这三个反编译的工具:

1. 提取资源:apktool, http://ibotpeaches.github.io/Apktool/install/
2. 反编译:dex2jar, https://github.com/pxb1988/dex2jar
3. 查看源码工具:jd-gui, http://jd.benow.ca/

这里以开源中国的android版本为例,看下怎么进行破解和反编译apk。

apktool

apk-tool是apk反编译的神器,用来提取apk内的资源。
下载apk-tool之后会得到一个jar包,运行:

java -jar apktool_2.1.0.jar decode oschina/osc-android-app-2.4.apk

I: Using Apktool 2.1.0 on osc-android-app-2.4.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /Users/jjz/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...

提取资源成功:


提取资源

这里有一个smali目录,它对应的是原始Android项目的src目录,就是Java的源代码。smaliDalvik虚拟机指令语言,可以在https://github.com/JesusFreke/smali 这里查看smali的更多内容。

dex2jar

dex2jar是一个能操作Android的delvik(.dex)文件格式和Java的(.class)的工具集合。主要功能有:

1. d2j-dex2jar:执行dex到class的转换
2. dex-reader-2.0/dex-writer-2.0:用于读写dex文件。
3. smali/baksmali:smali工具

这里使用dex2jar主要是将apk的.dex反编译成java源码,方便阅读。
首先将apk文件改名为.zip文件。
解压zip包,可以看到一个classes.dex文件,这个就是java文件编译再通过dx工具打包而成的。
dex2jar目录下:

./d2j-dex2jar.sh ../oschina/osc-android-app-2.4/classes.dex

得到文件classes-dex2jar.jar,得到的这个.jar文件可以使用jd-gui打开阅读代码。

jd-gui

jd-gui是java的反编译器Java Decompiler project,把二进制的可执行文件翻译成代码。
jd-gui提供了一个图形化的界面:


jd-gui

可以通过jd-gui直接打开上面得到的文件classes-dex2jar.jar浏览代码:


阅读代码

这样就得到apk的资源文件,也可以直接阅读apk内的源代码了。



文/姜家志(简书作者)
原文链接:http://www.jianshu.com/p/78cac8e9ddf1
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ApkTool』简要介绍 提供1.3.5测试版源码。 此程序在其基础上完善并添加一些功能,此版本号定位2.0 最终版。 定为最终版的原因是支持动态加载最新的内置工具: ..\Bin\*.*目录下的所有工具如果有最新版本的,替换Bin目录内的程序即可应用最新版。 [注意:不要更改目录内的文件名,否则不会被加载。],判断是否使用最新版本的程序, 可以看启动日志中每个文件的路径。日志内容如下: 加载apktool.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\apktool.jar 加载aapt.exe的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\aapt.exe 加载signapk.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\signapk.jar 加载testkey.pk8的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.pk8 加载testkey.x509.pem的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.x509.pem 加载baksmali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\baksmali.jar 加载smali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\smali.jar 加载dex2jar.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\dex2jar.jar 加载asm-debug-all.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\asm-debug-all.jar 加载commons-io.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\commons-io.jar 加载slf4j-simple.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-simple.jar 加载slf4j-api.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-api.jar ============================================================== 华丽的分割线 ============================================================== 使用说明: =========================================================== 使用环境:须安装 java,下载地址:http://www.java.com/zh_CN/ 1、反编译APK 拖拽APK程序到"反编译APK"按钮前的输入区,点击"反编译APK"按钮 2、重建APK 把第一步得到 文件夹 拖拽到"重建APK"按钮前面的输入区,点击"重建APK"按钮, 至此会自动生成已经签名好的"XXOO(已签名).apk" 3、签名 拖拽APK程序到"签名"按钮前的输入区,点击"签名"按钮,自动生成已经签名好的"XXOO(已签名).apk" 4、反编译dex 拖拽dex文件或odex到"反编译dex"按钮前的输入区,点击"反编译dex"按钮, 会在dex文件所在目录外生成一个与dex文件名相同的目录 5、重建dex 拖拽要重建的目录到"重建dex"按钮前的输入区,点击"重建dex"按钮,会生成与目录名相同的dex文件 6、dex转jar 拖拽dex文件或odex到"6、dex转jar"按钮前的输入区,点击"6、dex转jar"按钮, test.dex 会生成 test.dex.dex2jar.jar 文件 7、jar,class转java 拖拽保护class的目录,或.class文件或 jar文件到"jar,class转java"按钮前的输入区,点击"jar,class转java"按钮, 会生成相应的 java文件。 ========================== 内置软件版本: | apktool 1.4.3 | aapt r04 | baksmali 1.3.2 | smali 1.3.2 | dex2jar 0.0.7.9 | asm-debug-all 3.2 | commons-io 2.0 | slf4j 1.5.6 | jad 1.5.8e2 | ========================== ^_^ Enjoy! 2012.3.16 By:漏网之鱼 QQ:530747686

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值