吾爱分享资源网

 找回密码
 立即注册
查看: 540|回复: 12

[Android] Android中利用AXMLEditor工具不进行反编译就篡改apk文件

  [复制链接]

1197

主题

1291

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10861
发表于 2017-8-28 21:39:30 | 显示全部楼层 |阅读模式
一、问题描述如何修改arsc文件,直接利用AXMLEditor工具进行二进制文件修改,可以实现对属性和标签的增删改。这样我们就不需要在反编译apk文件,然后修改xml在回编译了。而本文就用一个案例来分析这个工具的用法,我们用一个回编译失败的apk包文件,那就是我们常用的WX,我们想实现的效果很简单,在WX的启动页面篡改一下,启动的是我们插入的广告页面,效果如下:
看到这里,我们要做的很简单,定义一个广告Activity启动页面,然后把这个广告Activity配置到清单文件入口即可。我们需要做两件事:修改代码+修改AndroidManifest.xml文件了。
二、案例操作
第一步:修改代码这个比较简单了,也是我们后续修改代码不进行反编译的一个重要操作。直接利用压缩文件解压出WX的apk包中的主dex文件classes.dex,然后利用baksmali.jar和smali.jar工具进行反编译成smali代码。当然这里看到有一个操作就是反编译了。不过反编译代码一般都很多报错情况,如果更牛逼的是二进制修改dex文件。哎,感觉那个操作就太费劲了。真心不敢尝试了。所以就还是利用这个工具进行需更修改吧。一般这里报错几乎很少的。这个工具网上很多,自行搜索下载即可。我们也可以利用这个工具去修改jar文件,可以先把jar文件利用dx命令转化成dex然后在反编译成samli文件进行修改即可。工具用法很简单:
如果真的没找到这个工具,可以留言单独发给你们吧。
那么这个插入广告的smali代码难道要手动编写?那是肯定不是的,我们可以定义一个demo工程,然后编写好这个广告开平Activity,然后在反编译我们的demo应用拿到对应的smali语法。然后直接将代码文件拷贝到刚刚用baksmali工具反编译之后的文件夹目录下即可:
一定要注意文件的包名是对应的文件夹名称。所以没有对应的文件夹需要手动新建文件夹。放完之后直接利用smali工具在进行回编译成dex文件即可。然后在利用压缩文件直接替换apk文件中的classes.dex文件即可。
第二、修改清单文件
上面我们就成功的把代码插入到了dex文件中了,下面还需要修改他的清单配置文件,把我们的广告Activity配置成启动页面,但是WX默认的启动页面是:
所以我们第一步得先用AXMLEditor.jar工具删除这个activity标签,为什么是删除呢?其实我们是想修改这个标签,让他不要成为启动页面,但是直接删除intent-filter操作有点费劲,所以直接删除这个标签,然后在插入即可:Java -jar AXMLEditor.jar -tag -r activity com.tencent.mm.ui.LauncherUI AndroidManifest.xml AndroidManifest_out.xml
我们依然利用压缩工具解压出他的AndroidManifest.xml文件进行操作,操作完成之后,我们需要插入操作了,因为我们需要插入广告页面和刚刚被我们删除的页面,所以直接在插入的xml文件中这么定义:
然后命令也很简单:java -jar AXMLEditor.jar -tag -i insert.xml AndroidManifest.xml AndroidManifest_out.xml这样我们就把xml中的内容插入到了WX的清单配置文件中了。有的同学会好奇,关于WX原来的那个启动页面,我们在插入的时候删除了好几个属性,其实是因为现在AXMLEditor.jar不支持引用的属性操作。所以这里就直接删除了,而这些属性其实不是太影响使用的。所以可以忽略不管了。
三、签名安装然后我们把修改之后的xml替换WX的apk中的xml文件即可。这时候我们就完成了代码和配置的全部替换工作,接下来我们还得做一步,就是需要删除WX之前的签名文件,这个可以直接在压缩文件中删除META-INF文件夹即可。
删除之后,我们就可以利用jarsigner工具直接签名即可。签名之后安装,我们如果在这个过程中操作不当会出现安装包损坏的错误信息。所以可以简单的排查文件,可能是我们修改xml文件出错了。我们可以直接用jadx打开apk文件:
正常的情况下,是不会报错的,插入成功的,如果包损坏的话,这里就打不开xml文件了。
四、操作总结到这里我们就成功插入了广告页面,看看效果如下:
这样我们就省去了反编译和回编译的复杂操作,也可以避免了很多错误处理。所以从这里可以看到二进制修改文件的需求还是有的。下面就来总结一下,对于我们在使用apktools工具进行反编译失败的时候,我们可以这么做来避免:
  • 第一步:利用baksmali和smali工具直接修改器对应的dex文件
  • 第二步:利用AXMLEditor.jar工具直接修改对应的xml文件
而我们只需要利用压缩文件直接解压出dex文件和xml文件即可。修改之后在替换原来的文件,删除签名文件。再次签名即可使用了。这样的操作问题少也方便。
工具源码下载地址:https://github.com/fourbrother/AXMLEditor
五、总结
关于Android中资源文件修改后面还会继续进行,我们需要直接二进制修改resource.arsc文件,插入资源文件的功能,不过这个工作会比这个难点,因为resource.arsc文件格式更为复杂。不过如果完成了,以后可以不用在担心回编译遇到的各种错误问题了。也不需要再一次反编译和回编译操作了就可以实现篡改apk文件了。



上一篇:接近200G PS教学视频
下一篇:安卓,c,c++语言学习视频教程

0

主题

188

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2018-4-27 21:15:02 | 显示全部楼层
感谢分享。。。

0

主题

188

帖子

410

积分

中级会员

Rank: 3Rank: 3

积分
410
发表于 2018-5-5 20:17:17 | 显示全部楼层
谢谢分享,

0

主题

194

帖子

412

积分

中级会员

Rank: 3Rank: 3

积分
412
发表于 2018-5-8 20:36:06 | 显示全部楼层
文采飞扬呀,收藏了

0

主题

187

帖子

384

积分

中级会员

Rank: 3Rank: 3

积分
384
发表于 2018-5-21 09:44:55 | 显示全部楼层
嘻嘻不错支持一个

0

主题

199

帖子

432

积分

中级会员

Rank: 3Rank: 3

积分
432
发表于 2018-5-21 13:08:14 | 显示全部楼层
一大早就看到好东西

0

主题

176

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
发表于 2018-5-31 02:30:13 | 显示全部楼层
好像还不错!

0

主题

184

帖子

374

积分

中级会员

Rank: 3Rank: 3

积分
374
发表于 2018-6-4 09:39:36 | 显示全部楼层
大佬,请喝茶!!!!

0

主题

182

帖子

386

积分

中级会员

Rank: 3Rank: 3

积分
386
发表于 2018-6-15 17:52:40 | 显示全部楼层
我抢、我抢、我抢沙发~

0

主题

202

帖子

424

积分

中级会员

Rank: 3Rank: 3

积分
424
发表于 2018-6-17 17:31:20 | 显示全部楼层
谢谢楼主分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|吾爱分享资源网 ( 苏ICP备17042175号 | 苏公网安备 32108102010177号 )

GMT+8, 2018-11-22 01:48 , Processed in 0.172274 second(s), 36 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表