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即为签名后的文件
工具下载
其实思路很简单:
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即为签名后的文件
工具下载
相关文章推荐
- Android逆向工程之反编译注入代码
- Android Apk解密工程初探(2)--代码注入
- 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库
- Android APK逆向工程/反编译总结
- Android逆向之反编译微信客户端注入恶意代码盗取账号密码
- android apk进行反编译,修改manifest并重新打包成apk
- apk反编译与android项目代码混淆
- 【Android安全】APK静态分析-源码反编译逆向分析
- Android 反编译 代码注入之HelloWorld
- Android APK反编译方法(可以获取APK xml和android Manifest,java代码等内容)
- Android APK反编译方法(可以获取APK xml和android Manifest,java代码等内容)
- Android知识整理(5) apk反编译与代码混淆
- 游走Android系列之APK文件的反编译、修改和重新编译打包
- Android对apk源码的修改--反编译+源码修改+重新打包+签名【附HelloWorld的修改实例】
- Android APK之代码混淆与反编译
- android apk 导出(签名) is not translated in xx 代码混淆 反编译
- android开发:如何通过反编译修改apk
- Android:apk反编译步骤,打包、签名和逆向工程经验总结
- 破解行Android apk 逆向工程研究﹣破解 MyTV HD 機種限制手記
- Android应用逆向工程之java bytecode修改实例