在play商店下载后发现需要内购才能使用部分功能,软件内截图如下:
11.jpg (281.54 KB, 下载次数: 0)
下载附件
2023-8-12 14:09 上传
于是拖入jadx,尝试搜索相关字符串,但是没有搜到,不要紧,看一下assets目录,里面有个locales目录,下面有语言文件,搜索购买完整版本
image.png (37.28 KB, 下载次数: 0)
下载附件
2023-8-12 14:11 上传
发现 buyFull 关键字 , 然后jadx 搜索 buyFull ,发现找不到任何信息,但是呢,用010editor搜索全部文件,找到libnomad.so内部有相关信息,于是把这个文件拖入IDA
然后在ida中搜索buyFull 字符串,定位到_ZN7Version14buyFullVersionEv函数
image.png (22.99 KB, 下载次数: 0)
下载附件
2023-8-12 14:13 上传
看一下这个函数内容,好像是又反射回到了java层,好,继续跟回java层。他反射的参数应该是函数id,但是methodid我们也不知道,不过这个类也不长,于是挨个看看
发现如下代码
[color=]
public
[color=]
static
[color=]
void
[color=]
[color=]android_purchase
[color=](
[color=])
[color=]
[color=]{
[color=]
[color=]gAppActivity
[color=].
[color=]runOnUiThread
[color=](
new
[color=]
[color=]Runnable
[color=](
[color=])
[color=]
[color=]{
[color=]
[color=]// from class: com.stephaneginier.nomad.AppActivity.11
[color=]
[color=]@Override
[color=]
[color=]// java.lang.Runnable
[color=]
public
[color=]
void
[color=]
[color=]run
[color=](
[color=])
[color=]
[color=]{
[color=]
[color=]AppActivity
[color=].
[color=]gAppActivity
[color=].
[color=]_billing
[color=].
[color=]purchase
[color=](
[color=])
[color=];
[color=]
[color=]}
[color=]
[color=]}
[color=])
[color=];
[color=]
[color=]}
这个应该就是支付相关的操作了
进入查看
image.png (89.78 KB, 下载次数: 1)
下载附件
2023-8-12 14:16 上传
这时候,注意看,我们发现了一个AppLib.onFullVersion(); 函数 ,这个函数看起来是支付成功的时候调用的,于是进ida搜索这个函数
image.png (13.57 KB, 下载次数: 0)
下载附件
2023-8-12 14:17 上传
进去看了一下,好像很简单的一个函数,估计这几个数据就是标记是否付费的了
所以现在,只要在软件启动之后调用一下 AppLib.onFullVersion() 函数,应该就可以了
好,现在打开mt管理器,进入 AppActivity 的onCreate 函数,找到最后一行,写入 invoke-static {}, Lcom/stephaneginier/nomad/AppLib;->onFullVersion()V
然后关闭,保存,重新安装软件测试。
image.png (200.66 KB, 下载次数: 1)
下载附件
2023-8-12 14:19 上传
如图,功能完美,只是有时候启动的时候会弹出一个支付结果错误的提示,问题不大,应该是解析不了支付结果报的错。
至此,完美,收工。
本帖不提供任何成品,如有侵权,请联系删帖处理。