首页
社区
课程
招聘
[原创]微信5.3反编译及修改打包
发表于: 2015-4-28 01:44 47368

[原创]微信5.3反编译及修改打包

2015-4-28 01:44
47368

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

注意:本教程主要供初学者了解一下,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.由于重新打包后的程序的签名和原应用的腾讯公司的签名不是同一个签名,手机已验证通过,但是腾讯公司在微信登录时加了一些安全手段,使得可以从网络侧识别出应用已经被非法修改过。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 3
支持
分享
最新回复 (30)
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
顶啊 写的不错
2015-4-28 10:15
0
雪    币: 93
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有没有看到那个sony的启动桌面,就是XperiaSHome 9.2c怎么去除双指划出来的概述问题呢?谢谢!
2015-4-28 13:22
0
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
4
多谢支持,如果能成为正式会员,我将继续上一些微信聊天加密的原创研究文章
2015-4-28 17:37
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
嘎嘎嘎哈哈哈
2015-4-28 17:43
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
期待反编译为java文件的内容
2015-4-28 20:26
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不错,值得学习
2015-4-29 10:38
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
8
不错,直接替换DEX,避免资源解压、压缩的问题
2015-4-29 10:44
0
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
9
很多人就折在APKTOOLS这工具上了
2015-4-29 12:06
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
10
你的愿望实现了。期待你后续的研究。
2015-4-29 13:17
0
雪    币: 31
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
关于apk的签名验证,可以考虑Hook 掉 PackageManager 中获取签名信息的方法,配合起来应该能达到欺骗的目的
2015-5-3 17:15
0
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
12
楼上提出了很好的思路 向您学习
2015-5-4 20:24
0
雪    币: 798
活跃值: (94)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习了,好东西。
2015-5-4 22:10
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
嘿嘿..哥们如果没实现诺言,是不是给退回临时用户?哈哈哈
2015-5-6 14:42
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
支持楼主解刨..........
2015-5-6 15:30
0
雪    币: 207
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我也是。apktools都反编译不成功
2015-5-7 22:17
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
求教材jd-gui反编译得到java
2016-3-19 14:27
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
就是啊
2016-3-19 14:28
0
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
19
把apk里面的dex拿到,然后用dex2jar,得到jar,然后再用jd-gui 看就可以。
不过微信的代码混淆比较厉害。估计你要费不少功夫去研究代码。
2016-3-19 22:02
0
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
一切从基础开始
2016-3-20 21:20
0
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
21
谢谢楼主原来还可以这么玩,直接改dex,之前一直用apktool,会出各种问题,谢谢分享
2016-5-29 18:52
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
楼主精神可嘉,支持一下
2016-6-21 19:06
0
雪    币: 144
活跃值: (178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
分析得非常不错
2016-6-21 20:01
0
雪    币: 24
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
文章写的很好,目前还比较模糊,还在努力中
2016-6-29 01:33
0
雪    币: 8
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
学习学习,谢谢楼主
2016-7-29 16:37
0
游客
登录 | 注册 方可回帖
返回
//