Android反编译植入代码(详解,手把手)
Posted everlastxgb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android反编译植入代码(详解,手把手)相关的知识,希望对你有一定的参考价值。
(这篇是我13年分享在eoeandroid上的,纯粹搬过来这边跟大家分享一下。大神可以直接飘过。)
虽然说Android的反编译一直都不是什么神秘高深的技术,好久之前就已经搞过,但是闲着无聊,还是想来跟小伙伴们分享一下。
一、工欲善其事必先利其器。
反编译apk包不可少的就是apktool工具,可以上 https://code.google.com/p/android-apktool/ 下载相关工具,或在我的附件中下载亦可。
(apktool所依赖的环境包括JDK、Android SDK,此处不赘述)。
二、反编译植入代码的思路与方法。
其实思路很简单,
1、假如我们要植入代码带targetapk.apk中, 那么首先我们要反编译 targetapk.apk,得到源代码对应字节码。我们知道,如果我们要植入代码到其中,必须加入字节码然后重新编译打包。
2、但是我们只会Android代码,怎么写字节码?其实我们只要新建一个Android工程,将我们需要加入的Android代码写入,然后打包成apk,比如sourceapk.apk;接着反编译它得到Android代码对应的字节码。
3、将需要植入的Android代码对应的字节码拷贝,粘贴到targetapk对应的字节码源文件中的合适位置。
4、重新编译targetapk对应的源文件,生成apk后进行签名即可安装使用。
思路出来了,方法也就呼之欲出了,接下来直接进入实战。
1、apktool反编译命令:apktool d targetapk.apk targetapkfolder 。重新编译命令:apktool b targetapkfolder 。 生成的apk在targetapkfolder的dist文件夹下。
2、以金山毒霸为目标apk,植入一段Toast代码进行演示。
①反编译duba.apk:
命令行cd到apktool目录下(或者直接点击其中的start.bat即可),并将duba.apk拷贝到该目录:
开始反编译,执行 “apktool.bat d duba.apk duba”命令:
似乎反编译一切顺利,得到duba文件夹(关于反编译后的文件结构和格式以及字节码语法,有兴趣就去Google了解一下):
②编写需要植入的Android代码生成apk包,然后反编译该apk包得到代码的字节码。
找到反编译后得到SourceApk文件夹中Toast的Android代码对应的字节码(代码包在 smali文件夹下):
③将得到的Toast代码对应的字节码复制,粘贴到金山毒霸的主界面代码中:
通过反编译后的duba文件夹中的AndroidManifest.xml可以找到主界面对应的类所在位置:
(我们暂且将代码放到毒霸的splash界面也无妨)
接着找到SplashActivity.smali中的setContentView,在其下面加入Toast字节码:
④保存后重新编译duba文件夹,执行 “apktool.bat b duba”命令:
貌似重新编译一切顺利(可能一些apk会出现千奇百怪的错误,那就Google吧),找到植入代码后的duba.apk :
⑤得到植入代码后的duba.apk为未签名apk,需经过签名后才可安装使用。
(关于apk签名,此处不多加赘述,不懂的就Google去吧。或者使用附件中的签名工具进行debug签名)
⑥签完名可以安装使用了,看看是否成功吧:
三、关于反编译的总结与后续。
1、相信大家看了我的示例会觉得原来反编译这么简单。其实对于大部分Apk来说反编译都是这么简单,只要抓对思路。
2、本例中只是示范了一个简单得不能再简单的反编译植入代码的示例,其实一般反编译大多用于App的破解、App的汉化、App植入广告等(个人觉得)。
3、本来想着写完这个入门级的示例后,再写个植入广告的示例的。But,我现在已经无力再继续写了,下次吧。其实掌握思路之后,用apktool工具都可以很简单做到。
四、那些年调戏过的App。
以上是关于Android反编译植入代码(详解,手把手)的主要内容,如果未能解决你的问题,请参考以下文章
Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件