吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3563|回复: 89
收起左侧

[Android 原创] 某灰产收费虚拟定位APP逆向破解教程

  [复制链接]
DetLFY 发表于 2024-3-21 17:53
本帖最后由 DetLFY 于 2024-3-22 15:00 编辑

写在前面

声明:本文仅供学习交流使用,所涉及的APP和破解版均不提供下载渠道。所涉及的技术请勿用于非法活动,否则所带来的一切后果自负。

朋友提供的某个要收费的虚拟定位灰产APP,破解难度极低。不是很能理解这样的东西也配收费。

环境和工具

环境

  • MacOS 13.6.3
  • Java 20.0.2
  • Python 3.11.5

工具

  • Android Studio 2022.3.1 Patch 2
  • JEB 5.2.0.202308292043
  • frida 16.1.8
  • apktool 2.9.3
  • shell-tools

破解过程

逆向分析

首先打开未破解的APP,映入眼帘的就是要求输入卡密才能使用......(什么CrackMe?)

1.png

先打开JEB,搜索字符串“登录”,很快啊,在yz.local下就找到了:

2.png

初步判断yz.local就是和登录以及卡密获取、试用逻辑啥的相关的一个类。可以看到类中的成员变量local.hostlocal.host2这两个域名和IP(图中已打码部分),初步判断这个就是来远程判断是否拥有卡号(卡密)的,这样的话,应该有和API直接交互的逻辑。往下找:

3.png

果然啊,有个和API进行交互的方法。而且通过构造传递给API的参数(在别的方法中可以找到需要传递的参数),可以确认这个API就是检验卡号是否正确以及有没有过期的(幽默订阅制)。

那么目前可以确定的就是卡号的合法性验证逻辑在远程,并且需要联网访问,但是返回的值判断却在本地(因为API只返回状态值),因此要绕过理论是可以通过发伪包的(没试过)。

现在还要确认的是实现这个虚拟定位功能需不需要和远程的某个API进行交互。通过购买了卡号的朋友断网验证:虚拟定位的逻辑是写在本地的。这就有些搞笑了,这也就意味着只有卡号验证是要通过远程API来的,而实际的功能部分却写在了本地。换言之,卡号验证只是一个限制,只要绕过了这个限制,就能免费正常使用虚拟定位的功能。

那么要做的事情就很简单了,绕过卡号验证,也就是crack掉最开始的那个输入框。经过简单的寻找,发现这个框的逻辑是写在local.load这个方法里的:

4.png

frida hook

还是个public的静态方法,写个frida hook验证一下:

import frida  # 导入frida模块
import sys    # 导入sys模块

jscode = '''
    Java.perform(function(){
        var targetClass = Java.use('yz.local');
        targetClass.load.implementation = function() {
            console.log('hack');
            return;
        }
    });
'''

def on_message(message,data): #js中执行send函数后要回调的函数
    print(message)

# 获取设备
device = frida.get_usb_device()
# 应用程序包名
app_name = 'xu.nx.zheror'
# 启动应用程序并获取其进程 ID
pid = device.spawn([app_name])
# 附加到应用程序进程
session = device.attach(pid)
# 创建并加载 Frida 脚本
script = session.create_script(jscode)
# 添加消息监听器
script.on('message', on_message)
# 加载脚本
script.load()
# 从 spawn 状态过渡到运行状态
device.resume(pid)
# 保持 Python 脚本运行,直到手动中断或者其他操作
sys.stdin.read()

跑一下,成功绕过,只能说过于幽默了:

5.png

crack

决定采用最简单粗暴也最有效的方法:解包,硬改smali,重签名打包

解包和签名打包的脚本用的是:https://github.com/8enet/shell-tools

首先是解包,执行:

./decompile.sh ***.apk    # ***.apk是安装包路径

不出意外的话会得到类似这样的结果:

6.png

然后找到apk解包后的目录/smali_classes9/yz/local.smali打开,搜索“load”找到smali对应的方法,把方法中其都删掉,只保留一个.locals和return,修改后的如下图:

7.png

然后保存修改后的smali文件。

最后是重签名打包,执行:

./rebuild.sh ***    # ***是解包后的路径

失败的话记得用keytool先生成keystore的签名文件,然后修改rebuild.sh里的keystore路径等信息,成功的话会得到类似这样的结果:

8.png

将修改后重签名的apk安装到实机上测试(如果之前有安装过的话记得卸载,不然会有签名冲突),赋予相应权限后可以看到虚拟定位的功能可以正常使用,破解成功:

9.jpg

后记

没有暗桩、加壳、加密、混淆,判断逻辑写在Java层,它真我哭。是有些幽默了,破解难度感觉还没我逆向课程设计高,这种也就只能赚不懂技术的人的钱了。(这下断人财路了)

参考

免费评分

参与人数 14吾爱币 +21 热心值 +14 收起 理由
zhuzi77 + 1 + 1 我很赞同!
jinyaoyu + 1 + 1 谢谢@Thanks!
HakureiYuyuko + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
guoyuning + 1 + 1 我很赞同!
Yangzaipython + 1 + 1 用心讨论,共获提升!
ghss + 1 + 1 用心讨论,共获提升!
bequery + 1 + 1 谢谢@Thanks!
melonsysu + 1 + 1 用心讨论,共获提升!
debug_cat + 2 + 1 谢谢@Thanks!
paomianhaochi + 1 + 1 我很赞同!
正己 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lll1122 + 1 + 1 tql
iyheart + 1 + 1 谢谢@Thanks!
mx290031 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| DetLFY 发表于 2024-3-22 17:43
LUN 发表于 2024-3-22 16:52
楼主发个成品我测试下

不太敢发出来。
tl2012 发表于 2024-4-5 20:12
大哥   我是绝对新人,研究你这个帖子好多天了,我用的是win10系统,用你说的https://github.com/8enet/shell-tools这个脚本一直没办法反编译,就用了apktool,反编译后没有你说的smali文件,又将反编译出来的classes1-9.dex。文件变成jar文件,查看了还是没有你说的yz文件夹,load也没找到一样的,好多天了  太难了。能给我讲一下吗?
LUN 发表于 2024-3-22 16:52
PKUYJSWLL 发表于 2024-3-22 17:00
成品想试试
yzx1091074551 发表于 2024-3-22 17:08
LUN 发表于 2024-3-22 16:52
楼主发个成品我测试下

打的算盘我这都听到了
stonepc 发表于 2024-3-22 17:18
我也想测试一下成品
mx290031 发表于 2024-3-22 17:34
大家期望这么高 来一个吧
Skiing 发表于 2024-3-22 17:36
mark数字补丁
liuhai7435 发表于 2024-3-22 19:35
大佬原版软件发出来练练手可否
 楼主| DetLFY 发表于 2024-3-22 19:44
链接: https://pan.baidu.com/s/1wEVUnxjPZmWsOtpSQ5WOFA?pwd=8nqm 提取码: 8nqm

大家热情挺高的,发个原版的吧,挂了的话就不补了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-28 07:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表