APK反编译打包签名

一、JDK安装和环境配置
1. jdk1.6下载地址:http://download.java.net/jdk6/ 
 jdk-6u17-windows-i586.exe
2. 安装,一路默认即可。
3. 环境变量设置
 xp系统:我的电脑 -> 属性 -> 高级 -> 环境变量
 新建JAVA_HOME变量,变量值为:C:\Program Files\Java\jdk1.6.0_17
 新建CLASSPATH变量,变量值为:C:\Program Files\Java\jdk1.6.0_17\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_17\lib\tools.jar;.(最后有个.号)
 修改Path变量,加上:C:\Program Files\Java\jdk1.6.0_17\bin
 
 两次确定值后,环境变量就设置ok了
 可以去cmd中输入javac,列出很多java命令就表示正常安装了。

参考网址:http://bbs.gfan.com/thread-1218428-1-1.html
windows下配置java环境

二、反编译Apk得到Java源代码(这个没弄成功)

1. 工具下载:需用到dex2jar和JD-GUI这2个工具
 dex2jar下载地址:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
 JD-GUI下载地址:
    windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
    Linux版JD-GUI:http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz

2. 步骤:
 首先找到Android软件安装包中的classes.dex,把.apk文件改名为.zip,然后解压缩,得到其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件

把classes.dex拷贝到dex2jar.bat所在目录。在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex  ,生成classes.dex.dex2jar.jar 
 
 运行JD-GUI工具(它是绿色无须安装的)打开上面的jar文件,即可看到源代码。

参考网址:http://www.eoeandroid.com/thread-90027-1-1.html
如何反编译APK

三、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件。

1. 工具下载:在http://code.google.com/p/android-apktool/下载获得apktool1.4.1.tar.bz2和apktool-install-windows-r04-brut1.tar.bz2这两个包。

2. 将上面的两个包解压到统一个目录下:aapt.exe(apktool-install-windows-r04-brut1.tar.bz2)、apktool.bat(apktool-install-windows-r04-brut1.tar.bz2)、apktool.jar(apktool1.4.1.tar.bz2)。

3. 打开cmd窗口,进入apktool.bat所在的目录,输入:
 apktool d E:\h200\APK_Decompile-Package_Dexopt\Decompile-Package\apks\Ltv2.2.3.apk E:\h200\APK_Decompile-Package_Dexopt\Decompile-Package\apks\Ltv   // 命令行解释:apktool d 要反编译的文件 输出文件夹
 如果没有写上输出文件夹的话,那么将会在apktool.bat所在的目录下新建一个apk同名的目录,apk的内容内反编译到这里。
 特别注意的是,如果有类似下面的错误的话:
 Exception in thread "main" unacceptable character #FFFD special characters are n
ot allowed
  in "<reader>", position 28
        at org.yaml.snakeyaml.reader.StreamReader.checkPrintable(StreamReader.ja
va:68)
        at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:159)
        at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:117)
        at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:106)
        ...
     这个貌似是由于apk的名字是中文引起的,用英文命名就没有这个错误了。
     
     打开输出目录,可以看到women需要的各种资源了。

4.  可以对这些资源源码进行修改,重新打包成apk。

5. 编译打包apk,输入apktool b E:\h200\APK_Decompile-Package_Dexopt\Decompile-Package\apks\Ltv E:\h200\APK_Decompile-Package_Dexopt\Decompile-Package\apk\Ltv_new2.2.3.apk (apktool b apk目录 apk输出文件)
 如果没有指定输出目录和文件,那么会在apk目录下的dist目录中有一个out.apk就是打包出来的了。
 E:\h200\APK_Decompile-Package_Dexopt\Decompile-Package\apks\Ltv\dist\out.apk
 
参考网址:
http://www.eoeandroid.com/thread-90027-1-1.html
http://hi.baidu.com/%C5%F4%C8%A5%C8%CB%C1%F4/blog/item/ee2a5310ad7118c1c3fd78be.html
一个APK反编译利器Apktool(android汉化)

四、签名
 上面apktool打包出来的apk还没有签名,所以需要对其进行签名才能使用。
 签名工具和方法见http://www.hiapk.com/bbs/thread-21261-1-1.html
 这里我用的签名工具是:APK-sign.rar,解压之后得到一个sign_pack.bat的批处理文件与一个_Data的文件夹。
 本工具对AndroidManifest.xml中设置了android:sharedUserId的apk签名无效,如android:sharedUserId="android.uid.system"。
 
 1. 将apk改成以zip结尾的后缀,然后解压
 2. 将解压之后的文件夹拷贝到APK-sign目录下(与sign_pack.bat统一目录)
 3. 我们可以直接将这个apk解压后的目录拖到sign_pack.bat脚本上,或者在cmd命令下输入:sign_pack.bat apk解压目录
 4. 最后APK-sign目录下得到一个有安卓网_www.hiapk.com名字的文件夹了,签名打包好的APK程序就在这文件夹里了

参考网址:http://bbs.hiapk.com/thread-21261-1-1.html
个性玩转小绿人——从APK图标开始(个性图标傻瓜教程)

另外一种签名如下:
 签名我们需要用到的工具是Auto-sign。它主要是利用批处理命令,使用signapk.jar对APK文件进行签名的。你可以用记事本打开Sign.bat,看看它的具体调用关系。关键如下:
java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk

所以pk8和x509.pem文件都是放在目录:build/target/product/security下的:
$ ls
common  media.pk8  media.x509.pem  platform.pk8  platform.x509.pem  README  shared.pk8  shared.x509.pem  testkey.pk8  testkey.x509.pem
而signapk.jar位于:./vendor/mediatek/ginwave73_gb/artifacts/out/host/linux-x86/framework/signapk.jar
通常在编译过程中会拷贝到out/host/linux-x86/framework/中用来签名。

在android的编译系统中,对apk签名的函数和上面的语句一样,定义在文件:build/core/definitions.mk +1458
# Sign a package using the specified key/cert.
#
define sign-package
$(hide) mv $@ $@.unsigned
$(hide) java -jar $(SIGNAPK_JAR) \
        $(PRIVATE_CERTIFICATE) $(PRIVATE_PRIVATE_KEY) $@.unsigned $@.signed
$(hide) mv $@.signed $@
endef

例如:java -jar out/host/linux-x86/framework/signapk.jar  build/target/product/security/testkey.x509.pem  build/target/product/security/testkey.pk8 DataDialog.apk DataDialog_signed.apk

下面是编译OTA升级包的时候对它的签名过程
unzipping target target-files...
  running:  unzip -o -q out/target/product/ginwave73_gb/obj/PACKAGING/target_files_intermediates/ginwave73_gb-target_files-user.lizhiguo.zip -d /tmp/targetfiles-NyLMw3
--- target info ---
fstab                     = (dict) {'/sdcard': <common.Partition object at 0x1f39f50>, '/cache': <common.Partition object at 0x1f39dd0>, '/boot': <common.Partition object at 0x1f39d90>, '/system': <common.Partition object at 0x1f39f90>, '/recovery': <common.Partition object at 0x1f39e90>, '/data': <common.Partition object at 0x1f39e10>, '/misc': <common.Partition object at 0x1f39e50>}
mkyaffs2_extra_flags      = (str) -c 2048 -s 64
recovery_api_version      = (int) 3
tool_extensions           = (str) mediatek/config/out/ginwave73_gb/../common
using device-specific extensions in mediatek/config/out/common
unable to load device-specific module; assuming none
  running:  mkbootfs /tmp/targetfiles-NyLMw3/BOOT/RAMDISK
  running:  minigzip
  running:  mkbootimg --kernel /tmp/targetfiles-NyLMw3/BOOT/kernel --board 1322807678 --ramdisk /tmp/targetfiles-NyLMw3/BOOT/ramdisk --output /tmp/tmpwV7yFb
  running:  mkbootfs /tmp/targetfiles-NyLMw3/RECOVERY/RAMDISK
  running:  minigzip
  running:  mkbootimg --kernel /tmp/targetfiles-NyLMw3/RECOVERY/kernel --ramdisk /tmp/targetfiles-NyLMw3/RECOVERY/ramdisk --output /tmp/tmp3XoSLS
  running:  imgdiff /tmp/tmpN31ZO7 /tmp/tmp2YZWcz /tmp/tmpudN8Kg
  running:  openssl pkcs8 -in build/target/product/security/testkey.pk8 -inform DER -nocrypt
  running:  java -Xmx1024m -jar out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 /tmp/tmpsbUI4i out/target/product/ginwave73_gb/ginwave73_gb-ota-user.lizhiguo.zip

参考网址:http://www.unpack.cn/forum.php?mod=viewthread&tid=68732
APK反编译破解方法与加密措施

来自:http://blog.csdn.net/lizhiguo0532/article/details/7077450

android apk反编译打包签名相关推荐

  1. 【转】Android APK反编译就这么简单 详解(附图)

     转自:http://blog.csdn.net/vipzjyno1/article/details/21039349/ [置顶] Android APK反编译就这么简单 详解(附图) 分类: and ...

  2. android apk 反编译 工具下载,android APK反编译工具Apktool

    这是android APK反编译工具Apktool下载,集成 jd-gui.jad.dex2jar.apktool.使用该工具可以反编译apk文件,查看xml以及java源代码,默认使用jad反编译, ...

  3. android apk反编译(获取源码,资源文件等)

    android apk反编译,是让你可以去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局是怎么实现的 一.当然我们也需要借助工具: apktool (资源文件获取,可以提取出图片文件和布局文件 ...

  4. Android Apk反编译、修改资源、重新签名以及重新打包的详细讲解

    在反编译之前先明确下,反编译别人的Apk不是件很道德的事情,毕竟这是别的程序员辛辛苦苦写出来的代码,所以说代码混淆这东西很重要,就是为了防止别人反编译.本文抱着学习的态度,在一些特殊情况下研究下怎么反 ...

  5. Android APK反编译及逆向工程

    一. 分析已经打好的apk. 首先来简单的说明下Apk文件本质上其实是一个zip包.我们直接进行解压就能看到其中的目录. 1. 目录说明 AndroidManifest.xml:应用的全局配置文件 c ...

  6. Android APK反编译

    转自:http://blog.csdn.net/ithomer/article/details/6727581 一.Apk反编译得到Java源代码 下载上述反编译工具包,打开apk2java目录下的d ...

  7. Android APK反编译具体解释(附图)

    这段时间在学Android应用开发,在想既然是用Java开发的应该非常好反编译从而得到源码吧,google了一下,确实非常easy,下面是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的 ...

  8. 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译

    反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : http://download.csdn.net/detai ...

  9. Android APK反编译就这么简单 详解(图文详解)

    前言 自己很早以前就在反编译,但是知道今天要做才又捡起来了,今天就把他记录下来吧. 工具准备 1.测试环境: win10 2.使用工具: 2.1 CSDN上下载地址: apktool dex2jar ...

最新文章

  1. n条直线相交最多有几个邻补角_【初一】 n(n1)模型在相交线中的应用
  2. EdgeGallery — MEP — 安装部署
  3. SpringBoot非官方教程 | 第二十六篇: sprinboot整合elk,搭建实时日志平台
  4. JSP 中EL表达式用法详解
  5. IE8开发人员工具资料
  6. PowerDNS管理工具开发中学习到的DNS知识
  7. Python中写一个乒乓球类的游戏
  8. element-ui滚动条组件el-scrollbar
  9. I00011 打印包含7的三位数
  10. CentOS_5.5_安装GCC编译LiME
  11. 王思聪花了100万的组装的电脑,网速到底有多快?
  12. html制作苹果手机屏幕,iphone怎么录屏幕点击动作(苹果手机的屏幕录制步骤)...
  13. 生而美者,若知之,若不知之,若闻之,若不闻之
  14. android 行居中,android自己定义换行居中CenterTextView(示例代码)
  15. Bought a new glass in BeiJing Pan Jia Yuan
  16. html5图片自动滑动,超简单的图片左右切换滑动
  17. 实验一 基于TCP和UDP的客户端和服务器端
  18. 爱码物联SaaS“一物一码”实力在线!打造全新二维码营销模式
  19. 每日一思(2022.5.6)——非理性行为
  20. 利用python绘制奥运五环_绘制奥运五环_清华尹成python入门教程_少儿编程视频-51CTO学院...

热门文章

  1. 边缘智能计算之AI芯片
  2. C/C++学生选课管理系统[2023-02-20]
  3. Mr.Alright---安卓Q Google日历选择提示音报错的解决及解决后的思考
  4. 商品上新微信排版教程
  5. Qt开源软件集锦(部分有编译指导)
  6. kubernetes---搭建整理(2进制安装)
  7. 编程语言在那些运用中
  8. 近期健康类(***)
  9. memcache底层原理及安装使用
  10. 免费下载c语言试题及答案,c语言试题及答案