android安全静态分析,Android静态分析之初级篇

最近瞅着测APP的空档,翻了翻之前买的一本讲Android安全的书,书快要翻完了,但是里面还有实际操作的部分,书里面提到的工具跟目前用到的有一些出入,借着google总算把最简单的一部分搞定了,做个记录~操作系统:win10

先从一个很简单的apk包入手,一个假登录页面:

16a9b9023bba9307645c704ec1fe6cd2.png点击登录的时候弹出提示:

2067898eb9ac120c6f948b8320b96712.png

代码用得是Android Studio3.5的版本,Android Studio的版本更新后,代码的书写方式也跟以前不一样了:

9bcd4df0f3fe18f5d4c0350b309734aa.png

主页面完成后,打包成apk文件,这里我试了三种打包方式,结果都是一样的:

未签名打包:

1ec3ac8a9915548c1ffefd20faf8dbb5.png

V1方式签名的正式包:

f1c0a840af9b2d711ee44cba7d9410c6.png

6a6c9c34cb25fb84a8e502b42566f0ce.png

V2方式签名的正式包:

eb3a574028f573322cc5631d72e54afd.png

打包完成后,找到apk包文件,

311a091beeea0d2b7ec6c309bcccdbe5.png

使用apktool直接反编译:

f576aed36be2efeeedfd751253ce4fc8.png.\apktool.bat d -f .\app-release.apk -o test

解释:

d表示decode,意思是反编译,与之对应的是b ,building,编译

-f 表示force,强制删除目标目录

-o 表示输出地址

反编译后进入到test文件夹下的/smali/com/example/hellosmali中,可以看到有两个MainActivity的smali文件:

e4f7e882fbf3fac8ce48aa1456de03f0.png

其中MainActivity$onCreate$1.smali文件中有我们希望修改的onclick操作:

23ee774b94eb835c7e45f5e630f4c24d.png

修改const-string v1值为:hello smali

3670648447a1066b59cc6cf48f73ad2c.png

这里修改完成后需要重新回编译为apk包,书上说的是用Android逆向助手,但是我试过后并没有打包成功:

05d0d13cf6a14edbc68b6502fe2e2459.png

apktool也可以进行回编译:

2904cf0a2c0e8a47c436b5a6975d14ec.png

这里报错了,因为高版本的Android Studio和Gradle使用了aapt2打包apk,但是apktool却是使用的aapt1打包。按照网上教的办法在gradle.properties文件添加了android.enableAapt2=false:

f4f1ef032f6428c7be52d7ed54ea5d8a.png

重新编译apk包,继续报错:

c9d56819be94da574a3b33f97bda17c0.png

这里点报错信息后定位到了minSdkVersion,我还以为是最低版本的问题,改为20后,还是报错……

想了想,又将apktool升级到了最新版本,重新回编译,还是报错,但是错误提示已经跟之前不一样了:

f0832e8bb1bf7b6e8b5edd45d899b5a1.png

删除了报错的xml文件后,又继续提示其他文件报错T_T……

本来打算下个3.0以下版本的android studio再重新打包个apk,不过后来在网上看到一个回答说可以把C:\Users\XX\AppData\Local\apktool\framework\1.apk删掉试试,抱着试试的心态删掉了1.apk,再重新回编译:.\apktool.bat b .\test\

d90a630b5465e3c03281a3b917ed0f37.png

看着成功了,去dist目录下看果然有了新包:

8d0ea172eda058ef7e7ae5528bbf26a3.png

将新打的包安装到Android机上,又报错:

866a3e05ed5aff6ff7fabde30db78677.png

NO_CERTIFICATES,没有签名,不能安装,那就先给apk包签个名好了,用得是jdk自带的keytool和jarsigner工具。

使用keytool工具先生成签名文件:

cea52c502caf8578ff0b01f82d185d7d.png

7553e2f499616c280cc57f11208bcad7.png.\keytool.exe -genkey -alias "test" -keyalg "RSA"

解释:

-genkey 创建新密钥

-alias 密钥别名

-keyalg 生成密钥对的算法

-validity ,后面跟天数,代表创建的证书有效期,也可默认

再使用jarsigner工具进行签名:

a2857f323dba7965e1038138cfcdf4f3.png

3292e98bebd819c6bf857fae2ef29921.png.\jarsigner.exe -verbose -keystore C:\

Users\xxx\.keystore -signedjar C:\Users\xxx\app-debug-signed.apk C:\Users\xxx\app-debug.apk "test"

解释:

-verbose  签名/验证时输出详细信息

-keystore  密钥库位置

-signedjar 已签名的jar文件的名称

注意最后跟的是别名(alias),写错了会报错的:

d62fdd8284b8cba42c68e7e3da6e12a3.png

最后终于生成了一个签名包:

5f564f06608355f623a4b7f1f16ae11d.png

再次安装:

7001b61f7ab62b91605237f2a818cc95.png

提示已经存在这个包了,删除手机上的原来的app,重新安装,成功:

f5bb34127e4fbdc5fb9c4d78ae15f51c.png

再点击登录按钮时,可以看到提示语已经被修改过了:

6c36d894e2c75da947b85638f904c76b.png后记:

这是Android静态分析的开始,入门级的入门级,虽然简单,但是对于我这种菜鸟级的还是有不少的坑,看到预期的结果出现后还是有那么一丢丢成就感的^_^

*本文作者:梦里不知哪儿是哪儿,转载请注明来自FreeBuf.COM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值