首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >初探Android逆向:通过游戏APP破解引发的安全思考

初探Android逆向:通过游戏APP破解引发的安全思考

作者头像
FB客服
发布于 2018-07-30 03:17:18
发布于 2018-07-30 03:17:18
1.4K0
举报
文章被收录于专栏:FreeBufFreeBuf

如今移动互联网已经完全融入到我们的生活中,各类APP也是层出不穷,因此对于安卓APP安全的研究也尤为重要。本文通过对一款安卓APP的破解实例,来引出对于APP安全的探讨。(本人纯小白,初次接触安卓逆向一星期,略有体验,在这里分享一下)

本次破解的安卓APP是某款射击类游戏,我们发现在游戏里面有购买补给的功能,那么我们就针对这个功能进行破解,旨在达到免费购买。

首先,对该游戏进行还原,即反编译。反编译后可以查看该APP的配置文档、算法逻辑等,方便我们对其进行分析。在这里,我们使用工具AndroidKiller来对其进行反编译。

通过上图,可以看到APP的组成部分。我们只需要关注smali文件,因为Smali是安卓系统里的 Java 虚拟机(Dalvik)所使用的一种 dex 格式文件的汇编器。我们可以通过smali文件来查看APP的伪代码,从而了解其算法逻辑等。

接下来就是找到APP支付的入口,可以通过搜索success、pay、paid等关键字符串来找到相关文件。

点进这个文件进行查看,我们可以看到一些与支付相关的字符串,猜测这里可能就是支付函数的入口,至于到底是不是,我们接着看下面。

这些smali语句可能看着晦涩难懂,没关系,我们可以通过AndroidKiller将其转化为我们熟悉的java代码。

这里是一个switch语句,可能是对支付功能做的一些判断。我们可以看到这里有个MiguPay函数,这个函数到底是干什么的呢?点击MiguSdk类,可以跳转到MiguSdk类。

我们可以看到该方法里调用了runOnUiThread方法,其参数中有涉及另外一个类MiguSdk.2,跟着这个方法继续跳转下去。

令人惊喜的一幕出现了,我们可以看到“购买道具”“成功”等字符串,到这里差不多就可以肯定这里就是与支付相关的方法了!好了,我们又跳转到之前switch判断的函数。

之前我们看到,当调用GMessage.success()时,就是说明购买成功。而这里的:pswitch_0语句就是发送的GMessage.success()。这就意味着,如果所有的判断语句都和pswitch_0里执行的一样,那么是不是所有的条件都能购买成功呢?我们试试,将所有的:pswitch_x全部改为pswitch_0。

用AndroidKiller对该APP进行打包签名,安装测试!

安装失败!提示签名校验不通过!看来该APP进行了签名校验,所谓的签名校验就是为了防止自己的应用被反编译后重新打包。那么有没有方法进行绕过呢?当然有!其实签名校验一般写在native层so文件里,或者是java层。通过搜索SignKey、Signature等关键字符串,一般可以找到签名校验的入口。以下文件就是判断签名的so文件里的相关函数,利用工具IDA转换为C语言的伪代码。

从上图可以看出,最后做了个if语句的判断,那么我们直接用十六进制编辑器将return语句直接改为return true。最后再次编译打包该APP,ok!破解成功

思考:开发一个有商用价值的APP,无疑是需要大量的精力的,如果APP能被轻易破解,那带来的损失肯定是让人无法接受的。因此对于APP的安全防护显得至关重要。关于APP逆向的安全机制,一般有以下几种:

1、 代码混淆:对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。 2、 签名校验:比较用来签名app的证书的hash与我们写死在其中的hash是否一致。 3、 加壳处理:在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。

* 本文作者:沧海一粟,转载注明来自FreeBuf.COM、

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

本文分享自 FreeBuf 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
记一次安卓逆向入门实战
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
网络安全自修室
2024/01/04
3410
记一次安卓逆向入门实战
震惊!我逆向了Android代码居然看见……
前言 本篇是Androidwing的投稿,详细介绍了Android逆向的一些工具,最重要的是,介绍了一些逆向代码的查找思路,相信对于想做逆向分析的朋友来说,是篇不错的文章,另外,安利下后现代反编译利器——Jadx,文中居然没有提到。 哈,又标题党了。。不过我一定竭尽所能,写一篇最亲民的入门文章。 本文仅供学习交流之用,切勿用于非法用途,读者若运用所学知识,进行非法任何商业目的或者非法牟利,一切责任由操作者自行承担,与本人无关。希望读者仅仅从了解原理,保护自身APP尽量减少危害出发来阅读本文。
用户1907613
2018/07/20
1.2K0
APP应用安全检测
目前APP发包上架的流程前,免不了需要对APP应用安全检测这个重要且必不可少的步骤流程,APP应用安全检测大部分采用采购第三方的APP安全检测产品(因为这块技术基础储备),也有部分企业基于开源的移动安全框架(MobSF)进行二次开发APP安全检测产品(采购第三方产品费用太高),也有部分安全团队基于团队的技术储备进行基于逆向第三方APP安全检测产品进行开发自研的APP安全检测产品(采购第三方检测产品)。
小道安全
2022/03/31
3.1K0
APP应用安全检测
安卓逆向系列教程 4.5 糖果星星达人
软件在这里下载:http://www.anzhi.com/soft_2539282.html
ApacheCN_飞龙
2019/02/15
5880
安卓逆向系列教程 4.5 糖果星星达人
apktool动态破解apk
那么今天我们就用另外一种方式来破解apk:动态方式,关于动态方式其实很广义的,因为动态方式相对于静态方式来说,难度大一点,但是他比静态方式高效点,能够针对更过的破解范围。当然动态方式很多,所以这里就分为三篇文章来讲解这块: 1、动态方式破解apk前奏篇(Eclipse动态调试smail源码) 2、动态方式破解apk升级篇(IDA动态调试so源码) 3、动态方式破解apk终极篇(应对加固的apk破解方法) 从这三篇文章能够让我们破解一般的apk没有任何问题,不过不能代表能够破解所有的apk,因为没有
xiangzhihong
2018/02/01
2.7K0
apktool动态破解apk
26款优秀的Android逆向工程工具
SMALI/BAKSMALI是一个强大的apk文件编辑工具,用于Dalvik虚拟机(Google公司自己设计用于Android平台的虚拟机)来反编译和回编译classes.dex。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等)。
知识与交流
2023/03/25
9.1K0
26款优秀的Android逆向工程工具
Android逆向分析从入门到深入
学习逆向的初衷是想系统学习Android下的hook技术和工具, 想系统学习Android的hook技术和工具是因为Android移动性能实战这本书. 这本书里用hook技术hook一些关键函数来计算关键函数的调用参数和调用时长, 从而确定性能问题发生的位置和原因. 但目前没有比较系统的讲解hook的书籍, 所以就系统的了解下逆向分析.
用户7118204
2020/03/24
1.4K0
android逆向学习路线
就我自己从事安卓逆向这几年的经验来说,对没有编程基础的朋友如何学习安卓逆向最好制定以下学习路线:
bosh123
2020/09/06
2.7K0
APP安全加固怎么做?加固技术、加固方法、加固方案
前面的文章中我们为大家介绍了移动应用安全检测的测试依据、测试方法、和测试内容,本文我们着重分享App安全加固的相关内容。
iOS Magician
2023/11/18
9740
APP安全加固怎么做?加固技术、加固方法、加固方案
Android SO加固技术及其破解方法探讨
本文将介绍Android应用中的native层(C/C++代码编译生成的.so文件)的SO加固方法,以及潜在的破解方式。SO加固旨在防止动态链接库(.so文件)被恶意分析、修改和破解。
陆业聪
2024/07/23
9350
Android SO加固技术及其破解方法探讨
破解第一个Android程序
破解Android程序的方法通常是:使用ApkTool反编译APK文件,生成smali格式的反汇编代码;通过阅读smali文件的代码来理解程序的运行机制,找到突破口,并对代码进行修改;使用ApkTool重新编译生成APK文件并对其进行签名;运行测试——如此循环,直至程序被破解。
用户1631416
2019/05/05
3.5K0
破解第一个Android程序
(原创)逆向某停车app
最近一直在做python开发的事情,信息安全方面做得很少,也是"蛋蛋"的忧伤呀。今天有朋友请我帮忙,将一个app里的文字和图标替换一下,花了一下午和一晚上的时间搞了一下,主要是图标的PS很伤脑筋,弱项
七夜安全博客
2018/06/26
6990
Android逆向入门篇--java层静态分析
apk包内的dex文件是dalvik虚拟机可识别的可执行文件,我们主要也是对dex文件进行逆向,分析其代码逻辑、更改其逻辑做一些分析、破解之类的行为
迅达集团
2019/07/01
1K0
实现 APK 保护时常见的坑和解决方案
前言 何老师开启了逗猫线程; 何老师开启了黑科技线程; 何老师 嘿嘿嘿; 何老师 烫烫烫; 对 APK 进行保护是我们经常需要做的事,而且似乎也是每个公司必备的技能了。在使用如 ProGuard,DexGuard 等常见的产品之余,也有很多公司自行研发了一些保护的方案,专门来针对自家产品做出保护,比如说我司也开发了专门防止二次打包的工具。 在开发这款产品,并用于实战的过程中,也发现了很多坑,下面一一细数过来,希望对同样也希望开发一款 APK 保护类产品的人们能有所启发。 坑一: 签名校验 本来以为签名校验是
用户1907613
2018/07/20
5450
Android 逆向工具篇—反编译工具的选择与使用
在过去,当我们想要了解一个 app 内部运作细节时,往往先通过 ApkTool 反编译 APK,生成 smali 格式的反汇编代码[1],然后大佬和老手直接阅读 smali 代码,适当的进行修改、插桩、调试,经过一定的经验和猜想,理解程序的运行逻辑和加解密细节,比如如下的 smali 代码。
Python编程与实战
2019/12/04
30.8K1
Android逆向分析概述
学习逆向的初衷是想系统学习Android下的hook技术和工具, 想系统学习Android的hook技术和工具是因为Android移动性能实战这本书. 这本书里用hook技术hook一些关键函数来计算关键函数的调用参数和调用时长, 从而确定性能问题发生的位置和原因. 但目前没有比较系统的讲解hook的书籍, 所以就系统的了解下逆向分析.
望天
2018/08/02
1.5K0
Android逆向分析概述
App安全测试
在App项目中都会碰到三座App安全大山。App客户端安全、数据传输安全、App服务端安全。下面以分析检测的思路进行对App安全威胁的这三座大山进行一些剖析梳理总结。
小道安全
2021/09/02
2.8K0
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)[转]include <stdio.h>int func(int a, int b, int c, int d, int e,
声明:本文转自Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码),此文干货很多。
用户2930595
2018/08/23
4.3K0
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)[转]include <stdio.h>int func(int a, int b, int c, int d, int e,
地方商业银行APP安全性分析
0x00、业务需求 国内133家地方商业银行作为商业领域国外IT厂商和商家必争之地,无论是IT基础设施建设、容灾备份系统建设、还是信息安全建设等,各家银行都做的如火如荼,当然,目前只针对企业级市场,很少有银行愿意接受安全众测,原因很简单,测试过程不可控。 但是IT环境变化的加速度在不断的增快,面临目前严重的安全态势,希望银行也能接受众测这种商业模式,或者由众测小伙伴把自己的测试经验写成PoC代码的形式share给厂商。 测试对象:133家商业银行 0x01、测试流程方法 针对银行的业务接口,为了适应目前移动
FB客服
2018/02/06
2K0
地方商业银行APP安全性分析
解析汽车APP面临的18种攻击风险
近日,顶象发布《车企App安全研究白皮书》。该白皮书总结了目前汽车公司App所面临的主要技术威胁和合规风险,详细分析了这些风险产生的原因,并提供了相应的安全解决方案。
顶象技术
2023/06/12
4560
解析汽车APP面临的18种攻击风险
相关推荐
记一次安卓逆向入门实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档