反编译植入代码。
其实思路很简单:
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