android 反编译与再编译

一.反编译得到java源代码
   
  (方法一)
   优点代码便于阅读 缺点不能再编译
   1.工具
    dex2jar(google code) http://code.google.com/p/dex2jar/downloads/list
    jdgui(google code)  http://code.google.com/p/innlab/downloads/list
   2. 
     (1)用解压工具解压apk从中取得classes.dex,然后放到dex2jar文件夹
     (2)执行命令"dex2jar.bat classes.dex",生成classes_dex2jar.jar
     (3)使用jd-gui打开classes_dex2jar.jar ,即可查看反编译的代码
      注:如果别人apk加密了 ,部分代码就不能成功反编译。
   
  (方法二)
     优点可以再编译回去 缺点不便于修改
     1.工具
       baksmali + smali  http://code.google.com/p/smali/downloads/list
     2.
       (1) 从apk中解压得到classes.dex 然后放到basksmali 目录中
   执行命令java -jar baksmali-1.3.2.jar -o classout/ classes.dex   
                   然后对照jd-gui 找到要修改的地方修改,因为是smali类型文件比较难修改。网上有相应的语法,
                   在这里介绍一个投机的方法,可以写好自己要添加或要修改的代码,然后生成apk反编译回去得到
       自己想要的smali类型语句
             (2)  将修改好的文件在编译回 classes.dex
       执行命令 java -jar smali-1.3.2.jar classout/ -o classes.dex


二.反编译得到xml与图片文件
    1.工具
       apktool  http://code.google.com/p/android-apktool/downloads/list
    (应包含 apktool.bat aapt.ext apktool.jar三个文件)
   2.
     将apk 放到apktool目录
     执行 apktool.bat d -f adb.apk abc 得到反编译的文件。
     执行 apktool.bat b  adb将反编译的文件重新打包成apk。
三.签名  
   1.系统签名(基于源码开发,如果你是搞app开发可以不看这一部分)
    (1)文件位置:可以在/build/target/product/security/中找到platform.pk8 platform.x509.pem等签名 文件,对应不同的权限。
    (2)signapk.jar:由build/tools/signapk/编译产出,可以在/out/host/linux-x86/framework/中找到。
    (3)签名
java -jar signapk.jar platform.x509.pem platform.pk8 abc.apk abc_signed.apk 
   2.普通签名
     apk-sign.rar
     将abc.apk 文件解压到abc 文件夹,然后将adc 直接拖到apk-sign 文件中的sign_pack.bat批处理上执        行,得到新文件 adb_signed中的apk文件即为已签名。(注这个方法我没有测试过)
posted @ 2015-10-14 13:40  星空天宇  阅读(138)  评论(0编辑  收藏  举报