Android反编译植入代码(详解,手把手)

(这篇是我13年分享在eoeandroid上的,纯粹搬过来这边跟大家分享一下。大神可以直接飘过。)

虽然说Android的反编译一直都不是什么神秘高深的技术,好久之前就已经搞过,但是闲着无聊,还是想来跟小伙伴们分享一下。

一、工欲善其事必先利其器。

    反编译apk包不可少的就是apktool工具,可以上 https://code.google.com/p/android-apktool/ 下载相关工具,或在我的附件中下载亦可。
      (apktool所依赖的环境包括JDK、Android SDK,此处不赘述)。

Android反编译植入代码(详解,手把手)_第1张图片

二、反编译植入代码的思路与方法。

     其实思路很简单,
    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拷贝到该目录:

Android反编译植入代码(详解,手把手)_第2张图片

            开始反编译,执行 “apktool.bat d duba.apk duba”命令:

Android反编译植入代码(详解,手把手)_第3张图片

            似乎反编译一切顺利,得到duba文件夹(关于反编译后的文件结构和格式以及字节码语法,有兴趣就去Google了解一下):

Android反编译植入代码(详解,手把手)_第4张图片

Android反编译植入代码(详解,手把手)_第5张图片

           ②编写需要植入的Android代码生成apk包,然后反编译该apk包得到代码的字节码。

Android反编译植入代码(详解,手把手)_第6张图片

Android反编译植入代码(详解,手把手)_第7张图片

               找到反编译后得到SourceApk文件夹中Toast的Android代码对应的字节码(代码包在 smali文件夹下):

Android反编译植入代码(详解,手把手)_第8张图片

Android反编译植入代码(详解,手把手)_第9张图片

          ③将得到的Toast代码对应的字节码复制,粘贴到金山毒霸的主界面代码中:

               通过反编译后的duba文件夹中的AndroidManifest.xml可以找到主界面对应的类所在位置:
                  (我们暂且将代码放到毒霸的splash界面也无妨)

    Android反编译植入代码(详解,手把手)_第10张图片

Android反编译植入代码(详解,手把手)_第11张图片

                接着找到SplashActivity.smali中的setContentView,在其下面加入Toast字节码:

Android反编译植入代码(详解,手把手)_第12张图片

          ④保存后重新编译duba文件夹,执行 “apktool.bat b duba”命令:

Android反编译植入代码(详解,手把手)_第13张图片

            貌似重新编译一切顺利(可能一些apk会出现千奇百怪的错误,那就Google吧),找到植入代码后的duba.apk :

Android反编译植入代码(详解,手把手)_第14张图片

           ⑤得到植入代码后的duba.apk为未签名apk,需经过签名后才可安装使用。
                (关于apk签名,此处不多加赘述,不懂的就Google去吧。或者使用附件中的签名工具进行debug签名)

Android反编译植入代码(详解,手把手)_第15张图片

Android反编译植入代码(详解,手把手)_第16张图片

          ⑥签完名可以安装使用了,看看是否成功吧:

Android反编译植入代码(详解,手把手)_第17张图片

三、关于反编译的总结与后续。

      1、相信大家看了我的示例会觉得原来反编译这么简单。其实对于大部分Apk来说反编译都是这么简单,只要抓对思路。
      2、本例中只是示范了一个简单得不能再简单的反编译植入代码的示例,其实一般反编译大多用于App的破解、App的汉化、App植入广告等(个人觉得)。
      3、本来想着写完这个入门级的示例后,再写个植入广告的示例的。But,我现在已经无力再继续写了,下次吧。其实掌握思路之后,用apktool工具都可以很简单做到。


四、那些年调戏过的App。

Android反编译植入代码(详解,手把手)_第18张图片

你可能感兴趣的:(破解/漏洞)