您的位置:首页 > 移动开发 > 微信开发

微信Android SDK反编译还原源码 进行修改重新编译

2017-10-23 20:32 656 查看


一、介绍

微信sdk,做开发的都应该用过,微信分享、支付,都要用到的。

接下来,跟着我,把他的sdk源码还原为一个module可编译的形式。

用到的工具:
jadx: 这是一款反编译apk和jar包的工具,下载地址点我
jeb: 这也是一款查看apk源码的工具,下载地址点我
Android Studio


二、过程


2.1 下载微信Android sdk的jar包

下载页面

我用的方法是,gradle依赖,然后把jar拿出来,我用的是没有统计功能的包。


2.2 jadx另存

打开jadx,打开微信的Android sdk jar包,File -> Save as gradle project



保存出来到一个文件夹,看到src目录和builde.gradle文件。 我保存为wx文件夹。




2.3 Android Stuido导入

修改build.gradle文件为如下:
apply plugin: 'com.android.library'

android {
//这连个版本看你安装的sdk
compileSdkVersion 23
buildToolsVersion '25.0.0'

lintOptions{
abortOnError  false
}

defaultConfig {
minSdkVersion 12
targetSdkVersion 21
versionCode 1
versionName "1.0"
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

打开Android Studio,新建一个Project,然后File -> import Module,选择刚刚保存出来的文件夹。

然后会出现一些问题,我们来慢慢解决


build tool版本问题



点击第一个update即可。


Cannot read packageName问题



切换到Project视图,在main文件夹下新建AndroidManifest.xml文件,内容为以下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tencent.mm.opensdk">

<application android:allowBackup="true" android:supportsRtl="true"/>

</manifest>
1
2
3
4
5

然后,Build -> Make Module ‘xx’

然后你会看到一堆报错


2.4 解决代码错误

到了上一步骤的Make Module之后会看到下面的一堆错误,我们一步步解决



双击第一个错误,定位到了com.tencent.mm.opensdk.channel.a这个文件。原因是因为外部类和内部类名字相同冲突了。

那把一个类改名呗,好咧。 按住ctrl+鼠标左键 点击内部类a,可以看到有什么方法引用了这个类,这个内部类改了,也要把这些引用给改了。

我们把内部类改为ABean,添加无参数构造器,然后把那些引用给改了。继续编译

接着提示:Error:(15, 14) 错误: d不是抽象的, 并且未覆盖AsyncTask中的抽象方法doInBackground(Void…),双击进去看到是com.tencent.mm.opensdk.diffdev.a.b 这个类报错。好,接下来祭出另外的杀器:jeb。


2.5 使用jeb

新建一个项目,依赖微信的sdk,编译成一个apk
dependencies {
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}
1
2
3

然后打开jeb,打开这个apk,打开Bytecode,查看微信sdk的源码(
com.tencent.mm.opensdk
),打开上面报错的类: 
com.tencent.mm.opensdk.diffdev.a.d


对比jeb的源码,进行代码修改:删除泛型,修改doInBackground方法,修改a方法

f类也是一样修改,然后f方法会发现里面的内部类a没有反编译出来,ok,我们看jeb



把这段代码还原为java代码:
public static com.tencent.mm.opensdk.diffdev.a.f.a b(byte[] arg12) {
String v1_1;
long v8 = 6979321856L;
int v7 = 52;

a v0 = new a();
if(arg12 != null && arg12.length != 0) {
try {
v1_1 = new String(arg12, "utf-8");
}
catch(Exception v1) {
Log.e("MicroMsg.SDK.NoopingResult", String.format("parse fail, build String fail, ex = %s", v1.getMessage()));
v0.o = OAuthErrCode.WechatAuth_Err_NormalErr;

return v0;
}

try {
JSONObject v2 = new JSONObject(v1_1);
v0.x = v2.getInt("wx_errcode");
Log.d("MicroMsg.SDK.NoopingResult", String.format("nooping uuidStatusCode = %d", Integer.valueOf(v0.x)));
switch(v0.x) {
case 402: {
v0.o = OAuthErrCode.WechatAuth_Err_Timeout;

}
case 403: {
v0.o = OAuthErrCode.WechatAuth_Err_Cancel;
v0.o = OAuthErrCode.WechatAuth_Err_NormalErr;
return v0;
}
case 404: {
v0.o = OAuthErrCode.WechatAuth_Err_OK;

}
case 405: {
v0.o = OAuthErrCode.WechatAuth_Err_OK;
v0.w = v2.getString("wx_code");

}
case 408: {
v0.o = OAuthErrCode.WechatAuth_Err_OK;

}
case 500: {
v0.o = OAuthErrCode.WechatAuth_Err_NormalErr;

}
default: {
v0.o = OAuthErrCode.WechatAuth_Err_NormalErr;

}
}
}
catch(Exception v1) {
v1.printStackTrace();
}

}
else {
Log.e("MicroMsg.SDK.NoopingResult", "parse fail, buf is null");
v0.o = OAuthErrCode.WechatAuth_Err_NetworkErr;

}
return v0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

接下来到
com.tencent.mm.opensdk.diffdev.a.b
这个类。a类里面的变量改为public即可

接下来到
com.tencent.mm.opensdk.diffdev.a.e
这个类,提示Error:(4, 23) 错误: 程序包
org.apache.http
不存在



这个问题是因为没有导入http包导致的,在build.grdle里面的android标签添加下面的代码即可解决。继续编译
useLibrary 'org.apache.http.legacy'
1
2

然后在
com.tencent.mm.opensdk.diffdev.a.a
这个文件中报错:
Error:(42, 68) 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
对于 varargs 调用, 应使用 Object
对于非 varargs 调用, 应使用 Object[], 这样也可以抑制此警告
1
2
3

这个把参数new Void[0]删除即可。

然后在
com.tencent.mm.opensdk.diffdev.a.e
这个文件中报错:
Error:(31, 61) 错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出
1

添加异常捕捉即可
HttpResponse execute = null;
try {
execute = defaultHttpClient.execute(httpGet);
if (execute.getStatusLine().getStatusCode() != 200) {
Log.e("MicroMsg.SDK.NetUtil", "httpGet fail, status code = " + execute.getStatusLine().getStatusCode());
} else {
bArr = EntityUtils.toByteArray(execute.getEntity());
}
} catch (IOException e) {
e.printStackTrace();
}
1
2
3
4
5
6
7
8
9
10
11

然后在
com.tencent.mm.opensdk.modelmsg.WXMediaMessage
这个类中报错:
Error:(183, 51) 错误: 找不到符号
符号:   方法 toByteArray()
位置: 类型为OutputStream的变量 byteArrayOutputStream
1
2
3

修改
OutputStream
ByteArrayOutputStream


然后在
com.tencent.mm.opensdk.openapi.MMSharedPreferences
报错:
Error:(140, 47) 错误: 找不到符号
符号:   方法 a(int,String)
位置: 类型为Object的变量 a
1
2
3

在jeb查看,可以看到a类是util包下面的c文件里面的a内部类,我们把a.a改为c.a.a,导入util目录下c的包 即可。

然后在
com.tencent.mm.opensdk.openapi.WXApiImplV10
报错:
Error:(92, 33) 错误: 无法将类 Resp中的构造器 Resp应用到给定类型;
需要: Bundle
找到: 没有参数
原因: 实际参数列表和形式参数列表长度不同
1
2
3
4

把BaseResp改为Resp,然后Resp类,添加一个无参数的构造方法。
Error:(143, 308) 错误: 不兼容的类型: int无法转换为String
1

添加String.valueOf()方法即可
Error:(277, 45) 错误: 找不到符号
符号:   变量 message
位置: 类型为BaseReq的变量 req
1
2
3

req改为: ShowMessageFromWX.Req req = new ShowMessageFromWX.Req(intent.getExtras());
Error:(445, 52) 错误: 无法将类 WXWebpageObject中的构造器 WXWebpageObject应用到给定类型;
需要: String
找到: 没有参数
原因: 实际参数列表和形式参数列表长度不同
1
2
3
4

IMediaObject
修改为
WXWebpageObject
,WXWebpageObject类里面添加无参数的构造方法

ok。基本修改完毕,再把build.gradle里面minSdkVersion修改为12,重新Make Module即可。


三、生成新的jar包

在源码module的build.gradle底部添加代码:
task makeJar(type: Copy) {
delete 'build/libs/test.jar'
from('build/intermediates/bundles/debug/')
into('build/libs/')
include('classes.jar')
rename('classes.jar', 'weixinsdk.jar')
}

makeJar.dependsOn(build)
1
2
3
4
5
6
7
8
9

然后在右边Gradle,:xx Module名称 -> other -> makeJar 右键run。 即可在build/libs看到weixinsdk.jar这个就是根据你的源码编译出来的新的微信jar包。 


http://www.chengshiluntan.com/6917210-1.html http://www.chengshiluntan.com/6917406-1.html http://www.chengshiluntan.com/6917415-1.html http://www.chengshiluntan.com/6917442-1.html http://www.chengshiluntan.com/6917466-1.html http://www.chengshiluntan.com/6917478-1.html http://www.chengshiluntan.com/6917498-1.html http://www.chengshiluntan.com/6917537-1.html http://www.chengshiluntan.com/6917590-1.html http://www.chengshiluntan.com/6917604-1.html http://baijiahao.baidu.com/builder/preview/s?id=1582026938020897352 http://baijiahao.baidu.com/builder/preview/s?id=1582039159015647408 http://baijiahao.baidu.com/builder/preview/s?id=1582039360113121208 http://baijiahao.baidu.com/builder/preview/s?id=1582039573322455310 http://baijiahao.baidu.com/builder/preview/s?id=1582039718004335961 http://baijiahao.baidu.com/builder/preview/s?id=1582039909318708132 http://www.19lou.com/board-73061508556280516-thread-76581508739143051-1.htm https://www.wang1314.com/doc/topic-6657294-1.html https://www.wang1314.com/doc/topic-6658374-1.html https://www.wang1314.com/doc/topic-6658633-1.html https://www.wang1314.com/doc/topic-6658924-1.html https://www.wang1314.com/doc/topic-6659557-1.html https://www.wang1314.com/doc/topic-6659680-1.html https://www.wang1314.com/doc/topic-6659864-1.html https://www.wang1314.com/doc/topic-6660005-1.html https://www.wang1314.com/doc/topic-6660666-1.html https://www.wang1314.com/doc/topic-6609646-1.html http://www.51sole.com/b2b/sides126186361.html http://www.51sole.com/b2b/sides126186624.html http://www.51sole.com/b2b/sides126186686.html http://www.51sole.com/b2b/sides126186772.html http://www.51sole.com/b2b/sides126187022.html http://www.51sole.com/b2b/sides126187055.html http://www.51sole.com/b2b/sides126187096.html http://www.51sole.com/b2b/sides126187127.html http://www.51sole.com/b2b/sides126187238.html http://www.51sole.com/b2b/sides126187266.html http://blog.sina.com.cn/s/blog_17baa4f330102wxv6.html http://blog.sina.com.cn/s/blog_17baa4f330102wxv9.html http://blog.sina.com.cn/s/blog_17baa4f330102wxva.html http://blog.sina.com.cn/s/blog_17baa4f330102wxvb.html http://blog.sina.com.cn/s/blog_17baa4f330102wxvd.html http://blog.sina.com.cn/s/blog_17b5382a20102xthd.html http://blog.sina.com.cn/s/blog_17b5382a20102xthi.html http://blog.sina.com.cn/s/blog_17b5382a20102xthl.html http://blog.sina.com.cn/s/blog_17b5382a20102xthn.html http://blog.sina.com.cn/s/blog_17b5382a20102xthp.html http://groups.tianya.cn/post-224172-51ccfde5bf8e4da393a9474a082b7c74-1.shtml https://club.1688.com/article/63153589.html https://club.1688.com/article/63153762.html https://club.1688.com/article/63154090.html https://tieba.baidu.com/p/5386469825 https://tieba.baidu.com/p/5386471541 https://tieba.baidu.com/p/5386475851 https://tieba.baidu.com/p/5386482872 https://tieba.baidu.com/p/5386484224 https://tieba.baidu.com/p/5386490335 https://tieba.baidu.com/p/5386491309 http://www.chengshiluntan.com/6915808-1.html http://www.chengshiluntan.com/6915825-1.html http://www.chengshiluntan.com/6915841-1.html http://www.chengshiluntan.com/6915852-1.html http://www.chengshiluntan.com/6915856-1.html http://www.chengshiluntan.com/6915865-1.html http://www.chengshiluntan.com/6915871-1.html http://www.chengshiluntan.com/6915876-1.html http://www.chengshiluntan.com/6915878-1.html http://www.chengshiluntan.com/6915882-1.html https://www.wang1314.com/doc/topic-6606626-1.html https://www.wang1314.com/doc/topic-6606845-1.html https://www.wang1314.com/doc/topic-6607270-1.html https://www.wang1314.com/doc/topic-6607756-1.html https://www.wang1314.com/doc/topic-6607841-1.html https://www.wang1314.com/doc/topic-6608214-1.html https://www.wang1314.com/doc/topic-6608745-1.html https://www.wang1314.com/doc/topic-6609028-1.html https://www.wang1314.com/doc/topic-6609303-1.html https://www.wang1314.com/doc/topic-6609646-1.html http://www.19lou.com/board-49041508472050881-thread-48631508640211455-1.html https://buluo.qq.com/p/detail.html?bid=329211&pid=1242779-1508657617 http://blog.csdn.net/wonderfulwyq991/article/details/78310152 http://blog.csdn.net/sprite12io12/article/details/78310178 http://blog.sina.com.cn/s/blog_17b5382a20102xtg9.html http://blog.sina.com.cn/s/blog_17b5382a20102xtg8.html http://blog.sina.com.cn/s/blog_17b5382a20102xtga.html http://blog.sina.com.cn/s/blog_17b5382a20102xtgb.html http://blog.sina.com.cn/s/blog_17b5382a20102xtgc.html http://blog.sina.com.cn/s/blog_17baa4f330102wxsx.html http://blog.sina.com.cn/s/blog_17baa4f330102wxsy.html http://blog.sina.com.cn/s/blog_17baa4f330102wxsz.html http://blog.sina.com.cn/s/blog_17baa4f330102wxt0.html http://blog.sina.com.cn/s/blog_17baa4f330102wxt1.html https://club.1688.com/threadview/49696723.htm https://club.1688.com/threadview/49696750.htm https://club.1688.com/threadview/49696758.htm https://club.1688.com/threadview/49696768.htm http://baijiahao.baidu.com/builder/preview/s?id=1581948825320626187 http://baijiahao.baidu.com/builder/preview/s?id=1581949373717418375 http://baijiahao.baidu.com/builder/preview/s?id=1581949504752257022 http://baijiahao.baidu.com/builder/preview/s?id=1581949628525014624 http://baijiahao.baidu.com/builder/preview/s?id=1581949794692411463 http://baijiahao.baidu.com/builder/preview/s?id=1581950036340781106 https://tieba.baidu.com/p/5385005459 https://tieba.baidu.com/p/5385095696 https://www.douban.com/note/641935862/ https://www.19lou.com/board-56081508570206074-thread-56241508570579468-1.html https://www.19lou.com/board-56081508570206074-thread-56351508571299964-1.html https://www.19lou.com/wap/board-56081508570206074-thread-48391508572110589-1.html https://www.19lou.com/board-56091508570886242-thread-56571508586179505-1.html https://www.19lou.com/board-56091508570886242-thread-53921508590662025-1.html https://www.19lou.com/wap/board-48121508590547628-thread-73551508590711589-1.html http://www.19lou.com/board-48061508479844091-thread-56961508555784191-1.html http://www.19lou.com/board-48061508479844091-thread-56451508556735798-1.html http://www.19lou.com/board-48061508479844091-thread-56271508558579911-1.html http://www.19lou.com/board-48061508479844091-thread-56561508561871011-1.html http://taizhou.19lou.com/board-49081508556617184-thread-53171508556828094-1.html http://taizhou.19lou.com/board-49081508556617184-thread-53961508564806973-1.html http://taizhou.19lou.com/board-49081508556617184-thread-53181508566578551-1.html http://taizhou.19lou.com/board-49081508556617184-thread-53401508568058642-1.html http://taizhou.19lou.com/board-49081508556617184-thread-53121508571881462-1.html http://taizhou.19lou.com/board-49081508556617184-thread-53581508573216301-1.html http://taizhou.19lou.com/board-49081508556617184-thread-53601508573369685-1.html http://taizhou.19lou.com/board-49081508556617184-thread-53621508573529197-1.html http://taizhou.19lou.com/board-49081508556617184-thread-53671508573749530-1.html http://taizhou.19lou.com/board-49081508556617184-thread-53731508573970612-1.html https://www.douban.com/note/641934310/ https://www.douban.com/note/641934119/ https://www.douban.com/note/641934401/ http://www.19lou.com/board-73061508556280516-thread-49341508573298850-1.html http://www.19lou.com/board-73061508556280516-thread-49821508572317344-1.html http://www.19lou.com/board-73061508556280516-thread-49531508571648305-1.html http://www.19lou.com/board-73061508556280516-thread-49501508571346263-1.html http://www.19lou.com/board-73061508556280516-thread-49481508566877867-1.html http://www.19lou.com/board-73061508556280516-thread-49361508565965149-1.html http://www.19lou.com/board-73061508556280516-thread-49281508565418274-1.html http://www.19lou.com/board-73061508556280516-thread-49941508556806027-1.html http://www.19lou.com/board-73061508556280516-thread-49871508556671497-1.html http://www.19lou.com/board-73061508556280516-thread-49751508556417484-1.html https://www.wang1314.com/doc/topic-6578555-1.html https://www.wang1314.com/doc/topic-6579098-1.html https://www.wang1314.com/doc/topic-6579547-1.html https://www.wang1314.com/doc/topic-6579708-1.html https://www.wang1314.com/doc/topic-6579918-1.html https://www.wang1314.com/doc/topic-6581520-1.html https://www.wang1314.com/doc/topic-6581695-1.html https://www.wang1314.com/doc/topic-6585393-1.html https://www.wang1314.com/doc/topic-6585468-1.html https://www.wang1314.com/doc/topic-6585531-1.html http://dy.163.com/v2/article/detail/D19L662A0523LCR7.html http://dy.163.com/v2/article/detail/D19MRC0Q0517MR88.html http://dy.163.com/v2/article/detail/D19N7R8A0523LCR7.html http://dy.163.com/v2/article/detail/D19NSPJ40523LCR7.html http://dy.163.com/v2/article/detail/D19O6SQE0517MQQ2.html http://dy.163.com/v2/article/detail/D19ON61R0517MQQ2.html http://dy.163.com/v2/article/detail/D19PGPM00517MQQ2.html http://dy.163.com/v2/article/detail/D19PNBCP0517MQQ2.html http://dy.163.com/v2/article/detail/D19UD4830517MQQ2.html http://blog.sina.com.cn/s/blog_17b52c5a90102xnyf.html http://blog.sina.com.cn/s/blog_17b52c5a90102xnyg.html http://blog.sina.com.cn/s/blog_17b52c5a90102xnyi.html http://blog.sina.com.cn/s/blog_17b52c5a90102xnyj.html http://blog.sina.com.cn/s/blog_17b52c5a90102xnyk.html http://blog.sina.com.cn/s/blog_17b539da20102xdfe.html http://blog.sina.com.cn/s/blog_17b539da20102xdff.html http://blog.sina.com.cn/s/blog_17b539da20102xdfg.html http://blog.sina.com.cn/s/blog_17b539da20102xdfh.html http://blog.sina.com.cn/s/blog_17b539da20102xdfn.html https://buluo.qq.com/p/detail.html?bid=329211&pid=1242779-1508657617 http://www.chengshiluntan.com/6914932-1.html http://www.chengshiluntan.com/6914984-1.html http://www.chengshiluntan.com/6915011-1.html http://www.chengshiluntan.com/6915016-1.html http://www.chengshiluntan.com/6915023-1.html http://www.chengshiluntan.com/6915100-1.html http://www.chengshiluntan.com/6915106-1.html http://www.chengshiluntan.com/6915118-1.html http://www.chengshiluntan.com/6915134-1.html http://www.19lou.com/board-49041508472050881-thread-48701508556947506-1.html http://www.19lou.com/board-49041508472050881-thread-53791508570448292-1.html http://www.chengshiluntan.com/6911287-1.html http://www.chengshiluntan.com/6911538-1.html http://www.chengshiluntan.com/6911778-1.html http://www.chengshiluntan.com/6911782-1.html https://www.wang1314.com/doc/topic-6454177-1.html https://www.wang1314.com/doc/topic-6454648-1.html https://www.wang1314.com/doc/topic-6454954-1.html https://www.wang1314.com/doc/topic-6455395-1.html https://www.wang1314.com/doc/topic-6458085-1.html https://www.wang1314.com/doc/topic-6458362-1.html https://www.wang1314.com/doc/topic-6458636-1.html https://www.wang1314.com/doc/topic-6458806-1.html https://www.wang1314.com/doc/topic-6459305-1.html https://www.wang1314.com/doc/topic-6459504-1.html http://www.sohu.com/a/198856653_100034855 http://www.sohu.com/a/198861115_100034855 https://www.3566t.com/sell/s10667341.html https://club.1688.com/threadview/49690686.htm http://www.chengshiluntan.com/6907965-1.html https://www.wang1314.com/doc/topic-6395405-1.html https://www.wang1314.com/doc/topic-6395618-1.html https://www.wang1314.com/doc/topic-6395832-1.html https://www.wang1314.com/doc/topic-6396078-1.html https://www.wang1314.com/doc/topic-6396251-1.html https://www.wang1314.com/doc/topic-6397065-1.html https://www.wang1314.com/doc/topic-6397173-1.html https://www.wang1314.com/doc/topic-6397294-1.html https://www.wang1314.com/doc/topic-6397416-1.html http://www.sohu.com/a/198612284_100034855 http://www.sohu.com/a/198616261_100034855 http://www.sohu.com/a/198619084_100034855 https://club.1688.com/threadview/49686645.htm https://club.1688.com/threadview/49686783.htm https://club.1688.com/threadview/49686957.htm http://www.99inf.com/zyfw/ybsw/5344538.html http://blog.sina.com.cn/s/blog_17b5382a20102xt9a.html http://blog.sina.com.cn/s/blog_17b5382a20102xt99.html http://blog.sina.com.cn/s/blog_17b5382a20102xt9d.html http://blog.sina.com.cn/s/blog_17baa4f330102wxmv.html http://blog.sina.com.cn/s/blog_17baa4f330102wxmy.html http://blog.sina.com.cn/s/blog_17baa4f330102wxn0.html http://blog.sina.com.cn/s/blog_17baa4f330102wxn3.html http://blog.sina.com.cn/s/blog_17baa4f330102wxn5.html http://blog.tianya.cn/post-7664061-129236581-1.shtml http://blog.tianya.cn/post-7664061-129236622-1.shtml http://blog.tianya.cn/post-7664061-129236631-1.shtml http://blog.tianya.cn/post-7664061-129236635-1.shtml http://blog.tianya.cn/post-7664061-129236678-1.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: