您的位置:首页 > 移动开发 > Android开发

Android逆向工程之反编译注入代码(修改APK中的代码)

2017-03-27 11:17 651 查看
反编译植入代码。
     其实思路很简单:
    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文件
 


三、重新打包 签名;
重要打包:
  将smail文件修改完以后,我们需要使用如下命令在apktool目录打包:  
apktool b target -o update.apk
 执行完以后,会将target文件目录下的文件打包成一个新的apk(名字为update),注意这个apk没有签名!!我们需要使用Auto-sign对其签名。

使用Auto-sign签名:
1、下载Auto-sign并解压
 


2、将未签名的update.apk文件拷贝到Auto-sign的文件夹下并改名为update.zip
3、运行Sign.bat批处理文件
4、生成update_signed.zip,改名为apk即为签名后的文件

工具下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐