前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次安卓逆向入门实战

记一次安卓逆向入门实战

作者头像
网络安全自修室
发布2024-01-04 15:13:34
2350
发布2024-01-04 15:13:34
举报
文章被收录于专栏:网络安全自修室
1

免责声明

本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。

2

内容速览

  • 背景知识

随着Android设备的急剧增长和逆向工具链的成熟,Android App的安全性问题日益突出,其中二次打包问题较为严重。

恶意攻击者利用反编译工具对App进行源码反编译、植入广告SDK、插入钓鱼页面,重打包和重签名后,恶意篡改后的App通过非法渠道流入市场。终端用户如果使用这些App,会有隐私数据泄漏、资金财产被盗取的风险。

本文将介绍自己的一次Android逆向入门实战经历,分别是在native层和so层进行攻击。以后有机会向大家介绍Android防护相关。

  • CrackMe

CrackMe是一些公开给别人尝试破解的小程序。在这里我们以两个CrackMe.apk为例进行说明。

  • 工具
代码语言:javascript
复制
AndroidKiller_v1.3.1

IDA PRO 6.8

IntelliJ IDEA
  • 逆向实战App1

我们在native层对App 1进行攻击,共有三种方法:正向分析法、Smali修改法、IDA动态调试法。

  • 正向分析法
  1. Android Killer中打开:将APK反编译为Smali代码,可以看到主要逻辑在MainActivity.smali中,再将其转换为伪Java代码。

2. 伪Java中寻找关键代码,其跳转关键句在if..else语句,其中调用了getMD5str()函数,要搞定这个CrackMe需了解该函数。

3. 将getMD5str()函数复制到IDEA中,去掉冗余代码,尝试对伪代码进行调试。传进一个字符串"kevin",输出"EBCD3075"。至于getMD5str()函数的具体功能是什么,不是很重要,有兴趣的同学可以反编译后分析下。

  • Smali修改法

使用Android Killer将Java代码转换为Smali代码,修改Smali代码,重打包重签名,随便输入什么均可Crack掉。

代码语言:javascript
复制
修改前:

"if-eq vA, vB, :cond_" ##如果vA等于vB则跳转到:cond_

修改后:

"if-ne vA, vB, :cond_" ##如果vA不等于vB则跳转到:cond_
  • IDA动态调试法

使用IDA动态调试Smali代码,当输入用户名时,在Smali中设置断点,可以直接读出相应的密码。

  • 逆向实战App2

我们在so层对App 2进行攻击。攻击步骤如下:

  1. Android Killer里打开zb002.apk,关键代码在if...else语句中。我们可以使用逆向实战App1中的Smali修改法,但我想在此介绍另一种攻击方式。

2. 此时native函数GetNative只有声明,具体实现在libegg.so文件中。JNI接口作为Java层和Native层交互的桥梁,使得Java层和Native层之间可以互相调用。

3. 使用IDA动态调试或直接ALT+T进行搜索GetNative。根据跳转和传送指令可知其密码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全自修室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档