微信5.3反编译及修改打包

最近有时间研究了一下微信的反编译及重编译。

注意:本教程主要供初学者了解一下,APK的组成及打包步骤,高手绕路。

1. 重新编译后的程序可以运行,但是不要登录,如果登录,则会被腾讯网站识别出非官方程序。
  会被封号的(后果自负)。


2.由于微信6.0以上用了很多加壳技术会导致反编译及重编译困难重重。
  所以小白我果断选择微信5.3进行反编译及重编译。
3.由于资源文件重编译,apktool出现问题较多,做为小白练手,果断选择难度系度小一点的DEX下手。


原理: 
     1. 安卓下的apk文件实质是就是一个包括了资源文件和安卓虚拟机下的程序的ZIP包.
     2. 安卓为了保证程序的合法性和完整性,需要对APK进行签名。
   3. 安卓虚拟机和JVM虚拟机是两种不同的虚拟机。为了进行反编译和重编译我们需要将完成以下过程

            DEX(安卓虚拟机 程序包)->    JAR(JVM虚拟机 程序包) ->CLASS->JAVA(源码)

                   JAVA(源码)->CLASS(JVM编译后的代码)->JAR(JVM虚拟机 程序包) ->DEX
                   (安卓虚拟机 程序包)

准备工具: 
              weixin531 apk        
              winrar(解压缩)         
              dex2jar-0.0.9.15 (将 安卓虚拟机下的dx包程序转化成java虚拟机的jar文件)
              dx ( jar 转 dx  将java虚拟机的jvm下的JAR打包成 安卓虚拟机下的dex包程序,
                   如果我们安装了adt,则在android-sdk-windows\platform-tools\ 有该工具)
              auto-sign(签名)

第一章反编译:

第一步:  解压: 把 weixin531.apk,改名成 weixin531.zip 然后解压,
我们会发现weixin531目录下有classes.dex


第二步:反编译得到jar包:
                  dex2jar.bat D:\dex2jar-0.0.9.15\weixin531\classes.dex
             我们会发现
            D:\dex2jar-0.0.9.15\weixin531\  目录下多了一个classes_dex2jar.jar

第三步: 
         我们利用jd-gui或DJ Java Decompiler 可以进一步反编译得到相应的java文件,
         由于这个不是我们本次的重点,所以先略过,下一次发贴再讲。

第二章重编译  

第一步:
        利用dx工具将反编译得到的classes_dex2jar.jar 转化成安卓平台的dex包
        
        dx --dex --output=classes.dex classes_dex2jar.jar

 第二步:将 原有腾讯公司的签名文件删除(直接用WINRAR,将weixin531.zip中 \META-INF\COM_TENC.RSA 及COM_TENC.SF文件删除)。
 
 第三步:将 第一步生成的 classes.dex直接替换 weixin531.zip包中的 classes.dex。

 第四步:利用 auto-sign工具对weixin531.zip进行签名。
         java -jar signapk.jar testkey.x509.pem testkey.pk8 weixin531.zip weixin531_signed.zip
  第五步:将生成的weixin531_signed.zip,改名成weixin531_signed.apk,并安装到手机上即可。

总结: 
   1.通过以上学习,了解了APK的组成,也了解了JVM及安卓虚拟机的程序下的区别。
   2.掌握了一些反编译工具的简单使用方法。 
   3.由于重新打包后的程序的签名和原应用的腾讯公司的签名不是同一个签名,手机已验证通过,但是腾讯公司在微信登录时加了一些安全手段,使得可以从网络侧识别出应用已经被非法修改过

你可能感兴趣的:(android)