Android逆向工程之反编译注入代码

来源:互联网 发布:江铠同翟天临分手知乎 编辑:程序博客网 时间:2024/04/19 18:30

反编译植入代码。

     其实思路很简单:

    1、首先我们要反编译targetapk.apk,得到源代码对应字节码。我们知道,如果我们要植入代码到其中,必须加入字节码然后重新编译打包。

    2、怎么写字节码?其实我们只要新建一个Android工程,将我们需要加入的Android代码写入,然后打包成apk,比如sourceapk.apk;接着反编译它得到Android代码对应的字节码。

    3、将需要植入的Android代码对应的字节码拷贝,粘贴到targetapk对应的字节码源文件中的合适位置。

    4、重新编译targetapk对应的源文件,生成apk后进行签名即可安装使用。

 

一、反编译与打包

使用ApkTool反编译apk文件:

1、下载Apktool(建议使用2.0以后版本),得到三个文件,分别是:aapt.exe、apktool.bat、apktool.jar。

 

2、将需要反编译的apk拷贝到这三个文件的同一级文件夹下。使用cmd命令进行编译与打包

 

3、运行cmd命令至ApkTool文件夹下,反编译target.apk

 

反编译命令:apktool d -f [-s] target.apk -o targetfile

target.apk为你要反编译的目标apk,targetfile为反编译后文件存放的路径(建议使用全路径)

反编译结果:

 

打包命令:apktool b -f targetfile(targetfile是反编译生成的文件夹 即target文件夹)

运行后会在该文件夹下生成两个文件夹dist、build,在dist文件夹下既是打包后的apk(此apk还不能安装使用,因为缺少签名)

打包结果

 

可能用到的cmd命令:去根目录,盘符 : (比如去D盘   D:回车)

去其他目录,cd 路径

二、植入代码

Android反编译只能获得smali字节码,所以注入代码也只能注入到smali文件中

1、新建一个工程,将你想要植入的代码写入其中 然后打包生成apk,再反编译,获取其中的字节码

反编译后会在目标文件夹下生成几个文件夹和文件

 

一般植入代码只需要操作smali文件夹下的smali文件和AndroidManifest.xml文件(注意需要整体添加activity时,将smali文件内的包名替换成目标文件的包名 否则植入会无效导致apk运行出错,可以使用NotePad批量替换)

具体操作直接上图:

AndroidManifest.xml文件,跟原来的一模一样

 

这是smali文件夹下的文件,(需要添加其他Activity的话,直接将其他Activity的smali文件复制到这个文件夹下,要记得改里边的包名)


MainActivity.smali文件

 

三、重新打包 签名;

使用Auto-sign签名:

1、下载Auto-sign并解压

 

2、将未签名的apk文件拷贝到Auto-sign的文件夹下并改名为update.zip

3、运行Sign.bat批处理文件

4、生成update_signed.zip,改名为apk即为签名后的文件


第一次总结到博客,写的很乱。其中大量参考其他博文

工具下载地址:

ApkTool+Auto-sign(需要一个csdn积分 介意的去找其他免费的)

http://download.csdn.net/download/ml123456_/9647732

0 0
原创粉丝点击