Android逆向反编译(二) Smali文件
简介
1.AndroidKiller:一款图像化反编译apk工具,跟AndroidStudio界面相似
链接:https://pan.baidu.com/s/1kxE4V3ts9hKn1q7XNjNVGQ 提取码:taa8
2.apktool:在doc界面工具对apk打包、解包
1.AndroidStudio 安装插件 https://bitbucket.org/JesusFreke/smali/downloads/
2.反编译apk为smali文件 (通过AndroidKill或者apktool d apk)
如果资源文件反编译异常(如Resource资源解析失败) 使用 (apktool d -r apk命令或者apktool d -r -f <apk_path> -o <outfile_path>)
链接:https://pan.baidu.com/s/1UcqroPHHSupxaeg2yTipmw 提取码:ozqz
3.AndroidStudio Open 打开反编译的smali项目并修改manifest中的debugger为true
4.apktool使用自己的打包 apktool b apk
5.对apk进行签名
jarsigner -digestalg SHA1 -sigalg SHA1withRSA(或SHA1withDSA) -verbose -keystore xxx.jks -signedjar xxx.apk(签名后的apk名字) xxx.apk(需要签名的apk) xxx(keystore别名)
jarsigner -digestalg SHA1 -sigalg SHA1withRSA(或SHA1withDSA) -verbose -keystore xxx.key -signedjar nyso.apk app-release.encrypted.apk xxx(keystore别名)
6.安装apk
adb install apk
解包、打包、签名过程模拟完一遍之后,接下来就可以对smali文件进行修改
首先要学习smali语法才可以进行修改,或者使用smali2java工具进行文件转换为java
1.如果AndroidKiller解包报资源文件解析失败,我猜测是它使用的apktool d命令,这时候使用apktool d 手动解包,再把项目导入到AndroidKiller中就好了(按照以下结构放入到projects中,刚刚解得资源包文件名改为Project,其他的copy其他项目的就好,也是经验所得)
经验所得的包结构
2.smali中汉字为Unicode编码
3.AndroidKiller实际上是一堆工具的集合做成了图形化界面,AndroidKiller出问题可以在AndroidKiller的安装路径中找到相应的工具并进行相应的工具替换和升级。
AndroidKiller的bin文件目录下的工具包
4.在手机root之后安装逆向的apk可以查看源码,比电脑编译的快一点