Android 逆向学习#1
学会使用apktool, keytool, jarsigner等工具
1、为后一位同学编写一个点击按钮出现Toast的app,并以apk的形式发送给学号后一位同学
2、对前一位同学发来的apk进行逆向,并将Toast中的文字改为自己的学号+姓名。
3、进一步修改前一位同学apk,将app名字改为自己的学号。
PS:我发给下一个同学的Toast是Rick&Morty
一、查看程序结构
收到上一位同学的文件
尝试安装到nox里运行,结果如下:
也就是说,要找到********这串字符串。
我们根据页面布局可以得知,这串字符串来自button的监听时间,应该在MainActivity里,可以从这里出发。
二、反汇编程序
用apktool进行java的反汇编,在cmd中使用时用绝对路径或者在系统环境变量中添加目录
使用命令apktool查看相关命令
输入命令
apktool d app-debug.apk -o ./decode -f
意思是选定app-debug.apk作为目标解码输出为子目录decode,-f是直接覆盖
可以看到生成新文件decode
在decode目录下按照如下路径可以找到MainActivity
用记事本或者其他java代码查看工具(UE)等打开,可以找到字符串
在这里更改为学号+姓名
保存并关闭
三、打包程序
在cmd中用apktool打包,使用命令
apktool b ./decode -o fake.apk -f
意思是选定decode打包编译成fake.apk文件
这时候生成了一个apk文件,但是这个文件是无法安装成功的,因为它缺少数字签名,是无法认证的
那么我们手动添加一个key即可
四、添加签名
我们用keytool来添加签名,keytool.exe是jdk编译自带的,在windows中直接搜索,打开目标位置可以看到;jarsigner也在这个目录下,将这个bin的路径添加到环境变量即可
输入keytool,查看建议使用说明,或者用下面的-command_name -help获取详细用法
输入命令:
keytool -genkeypair -keyalg RSA -validity 100 -keystore rsa.keystore -alias mykeypair
意思是生成一个使用RSA,有效期100天的rsa.keystore文件,mykeypair用以索引证书链
自定义密钥库口令,随意填写或直接多次回车跳到最后确定选Y结束,最后可以再次回车
可以看到生成了一个keystore文件
最后使用jarsigner将key和修改后的文件合成
使用命令:
jarsigner -keystore rsa.keystore fake.apk mykeypair
生成新的fake文件
五、验证
安装成功,打开发现已经更改为我们的学号+姓名
六、更改文件名
现在的文件名是My Application,在Android Studio中,设定在Manifest.xml的lable中
打开Manifest文件,查找label或者其他查找方式找到这段字符,更改为自己的学号
保存,并重新进行步骤三至五
可以看到安装的程序名已经变了
内容也是修改后的内容