Android中如何不进行反编译就篡改apk文件

一、问题描述

在上一篇文章,我们已经介绍了如何修改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文件了。

更多内容:点击这里

关注微信公众号,最新技术干货实时推送

编码美丽技术圈

微信扫一扫进入我的"技术圈"世界

扫一扫加小编微信添加时请注明:“编码美丽”非常感谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容