《教我兄弟学Android逆向》03的课后作业。
教程笔记
关于AndroidKiller
在AndroidKiller
中可以直接将待搜索中文转换为Unicode编码格式,点击下图中红框所示按钮即可。
关于smali中的switch语法
要求
作业1
教程笔记
除了对以下常用关键码的积累,在分析时也可关注应用程序运行时打印的Log信息,从Log信息中获取对应当前应用程序的关键特征字符串,用以定位关键代码。
破解时可进行搜索定位的关键支付特征码
运营商网络 | 特征码 | 备注 |
---|---|---|
中国移动 | 46000、46002、46007、46020 | return 0 getMobileType |
中国联通 | 46001、46006、46010 | return 2 getOperatorType |
中国电信 | 46003、46005、46011 | return 1 getSimType |
补充:关键字符串(每个应用程序可能不一样,可根据具体的log信息寻找属于当前APP的关键字符串。)
- 电信支付接口:
Egame支付成功
、Egame支付Cancel
、order id
等。 - 联通支付接口:
Unicom支付成功
、Unicom支付cancel
等。 - 移动支付接口:
payInYidong
、购买成功
、购买失败
等。
去签名认证时可进行搜索定位的关键字符串
signatures
getAPPSecretString
有侵权
BLACK_NAME
check(可疑的关键方法名)
……
去广告时可进行搜索定位的关键字符串
ad
adIntervalInit
……
在内购破解时应先去除可能会产生费用的危险权限
android.permission.SEND_SMS
android.permission.CALL_PHONE
……
统一支付接口
很多APP中都包含不止一种支付接口和方式,所以我们在破解时可能还要根据实际情况,对各个支付接口进行破解。
该APP中的几种支付方式的积累
几种支付方式包括:短信,联通,移动,电信所使用的Egame支付等。
城市飞车破解
首先
运行apk,尝试支付,并查看其日志信息,获取到一句关键日志信息如图所示,然后根据此信息“无可用支付方式”定位到关键代码。
一个小错误
其实这里搜索“无可用支付方式”
定位到的并不是与打印Log消息直接相关的class,直接相关的class是通过搜索SmsIAPListener
或pay failed code
定位到的。
然后
就一直卡在这了,因为是用的一台没有SIM卡、通过wifi上网、并且也没有支付宝和微信的测试手机进行破解,所以应用程序安装在上面之后一直提示“无可用支付方式”
,根本就不会进行后续的支付操作,一直卡在上面的关键代码和对应的相关类上,最好的解决办法是去搞一张电话卡哈哈哈。不得不吐槽,后来尝试在夜神模拟器上运行app,总是动不动就出现无响应的情况,崩溃……
不过发现
在LogUtil.class中,发现了一个有趣的情况,如下图,作者在开发APP时封装了自己的log类,但是感觉像没封装一样,毕竟只要我们在测试手机的sdcard中添加一个alg文件,该应用程序就会打印出一些测试日志。
但是比较关键的日志记录,如下图所示,LogUtil.iT在class文件中并没有看到这个等级的日志定义,所以就看不到这些日志消息。
最后
在网上搜索到的破解思路如下图所示,后续我会抽时间继续尝试,看能不能在没有可用支付方式的情况下实现成功破解。
3D狂野飞车破解
首先
运行apk,尝试支付,并查看其日志信息,获取到关键日志信息如图所示,然后根据此信息“PayResult_isAirplaneMode”和“GLibPay_CM”定位到相关class文件如下图。
然后
- 还是卡在这里了,因为支付流程肯定是比较复杂的,而我的分析思路就存在问题,想通过定位到支付开始的代码后,一路追溯到最终的支付成功和失败的代码上去,但是这就意味着要把整个支付过程的代码都理清楚,非常的耗时。
- 按照之前的思路一直跟踪寻找关键支付代码,其中涉及到的部分smali文件和搜索的关键词如下图所示。
- 后来仔细想了想,这个app的情况和上一个(连支付窗口都没有)不一样,能够成功跳出支付窗口,而我们的目的是直接关闭支付窗口达到成功购买的效果,所以从正常情况下关闭支付窗口的提示信息
支付失败
入手,搜索定位关键代码。
于是
内购破解
通过支付失败
搜索定位到关键代码GameleyPay.class
,将其中onSuccess
方法的代码复制替换onFaild
方法中的代码,即可达到购买的目的。
统一支付接口
通过分析发现,该app中包含以下支付接口——
- 移动(CM)、联通(CU)、电信(CT)
- 微信
- 支付宝
GLib.class
的init
方法中包含对CM、CU、CT这三种支付方式的switch
选择,通过修改将其统一为CM。
最终
最后别忘了要删除APP里面可能造成扣费的权限,如——
android.permission.SEND_SMS
android.permission.CALL_PHONE
……