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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6426|回复: 48
收起左侧

[Android 原创] 【安卓】拿注册码的两种方式

  [复制链接]
梦ll晨 发表于 2023-8-29 08:53
本帖最后由 梦ll晨 于 2023-8-29 08:57 编辑

【安卓】拿注册码的两种方式

言归正传,前段时间和朋友聊到某项功能,他说他是之前买的一个手机设备,那个手机可以实现这个功能,我当时就来了兴致,做了底层修改这么牛?
后来拿来看了看,手机刷了第三方rom和Magisk,利用一个app实现了这个功能(虽然爱思助手就有这个功能),但是有现成的app就想着研究一番,结果好家伙要验证码?于是就有了下文(在安卓逆向中属于非常基础了)

1. java理逻辑

打开软件,图片如下

image-20230828182848108

随便填写点信息,然后点确定

image-20230828182929765

查一下有没有壳

image-20230828183254668

没有壳,直接拖进jadx,然后搜索关键字校验失败,发现两处,并且都在一个类中,先看第一处如下图所示,主要是有两个判断分支,首先我们要知道我们想要激活成功肯定是需要让代码不能走到else分支里

  • 先看最外层if语句判断了regCode的长度是否大于6,这个regCode看出是从控件中获得,也就是我们输入的注册码,所以这里得到信息,我们的注册码长度要大于6

  • 紧接着看内层的

//可以看出它new了一个Date也就是当前的日期,然后判断finalDate是否大于当前的日期
//finalDate的值为aqnuzcxq.getFinalDate(date),这个date是我的当初输入的注册码字符串从下标为6(也就是第七个数)到最后的截断
//所以接下来我们需要跟进,看下getFinalDate函数
if (finalDate.compareTo(new Date()) > 0) 

image-20230828183645596

为了注释方便,我将看下getFinalDate函数直接粘贴到下方

public static Date getFinalDate(String num) {
        //声明一个calendar对象
        Calendar c = Calendar.getInstance();
        //设定其日期为2019/12/1
        c.setTime(new Date("2019/12/1"));
        //调用add函数增加日期,其中6代表增加数字代表的是天数(依据如下图),增加的值为hexDecode(num),也就是对num进行16进制转10进制后得到的数字
        c.add(6, hexDecode(num));
        //返回日期
        return c.getTime();
    }

image-20230828185928713

至此,整理得到逻辑,当我们输入注册码的时候,软件会截取从第7个起到末尾的字符串,然后利用hexDecode函数对其解码得到一个数字,计算2019年12月1日加上这个数字并到的新的日期,用这个新的日期去对比今天的日期,判断是否过期。

hexDecode和hexEncode在代码中都有,比如我这里想让其增加9999天,那么解码前的原字符串应该为多少呢,我这里写了个demo,字符串为38259

image-20230828201734880

加完之后,日期是多少呢?2047年,可以够用了,所以这里我们得出我们激活码的第后半部分可以写个38259

image-20230828201857987

既然后半部分有了,就差前半部分了,前办部分的逻辑如下

可以看到代码正常走的话,又会触发校验失败的提示,所以我们要让其走到前面的if分支即可,因为前面的if分支有return关键字,我们看一下这个if分支,它获取了tvMachineCode这个控件的值作为第一个参数,这个控件为前面图中的机器码字段,并调用getFingerPrint函数,将返回值于regCode进行比对

regCode从前面的代码中声明了(在第一张代码图中),它是我们注册码的前6位

image-20230828190807495

我们跟进一下getFingerPrint函数,如下很简单,它就是将传入的两个参数想加然后进行md5加密,然后获取前6位,看上图,第一个参数我们知道了是机器码,第二个参数是keyCode

image-20230828191346750

接下来找这个keyCode,从下向上看,最后追溯到show函数的第三个参数,这里我们只需找到哪里调用了show函数即可,在show函数上按x,找到调用

image-20230828191756808

只找到一处调用,就是它了,看第三个参数123456(脱敏了)

image-20230828192016783

ok,既然如此我们前6位字符串也知道了,将机器码和123456拼接,然后进行md5加密,然后取前6位,最后拼接上我们之前逆出来的38259得到的字符串拿去激活

image-20230828202004601

2. 改smali代码的判断分支

打开dex,搜索校验失败,翻到第一个判断分支如下,这里v7是6,应该是判断长度大于6那个位置,if-le表示a小于等于b则调,所以我们默认长度大于6这里不跳,接着往下看下一个判断分支出现

image-20230828205041094

这里的if-gtz表示如果v9大于0则跳,所以我们这里需要将其改成反过来小于等于0则跳,所以这里改成if-ltz

image-20230828205757690

第一个判断分支解决,继续向下找第二个,如图这个位置正对代码中的equals比较处,这里if-eqz表示a等于0则跳,那我们改成a不等于0,也就是if-nez

image-20230828210031319

然后胡乱输入即可

image-20230828210253858

​     这种方法不推荐,因为每次进应用会有检验是否过期函数,当然也可以对这个函数进行修改或置空,当然还有其它方式例如用frida进行hook,这里由于时间关系就不多做赘述了。

免费评分

参与人数 19威望 +1 吾爱币 +39 热心值 +19 收起 理由
junjia215 + 1 + 1 谢谢@Thanks!
我不是旧时 + 1 + 1 谢谢@Thanks!
aibaisong + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
linyinhuisb + 1 + 1 谢谢@Thanks!
hk9186 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Z2523 + 1 用心讨论,共获提升!
zlnxlzht + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wakfbycf + 1 + 1 谢谢@Thanks!
正己 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
逃亡的蛋挞 + 3 + 1 用心讨论,共获提升!
youxiaxy + 1 + 1 热心回复!
万能的楼下小黑 + 1 + 1 谢谢@Thanks!
solidajun + 1 + 1 谢谢@Thanks!
花水萧白 + 1 + 1 谢谢@Thanks!
Pinping + 1 + 1 我很赞同!
yiqibufenli + 1 + 1 我很赞同!
z1987 + 1 + 1 谢谢@Thanks!
tangqinggang + 1 + 1 用心讨论,共获提升!
weikun444 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

shoot82003 发表于 2023-8-30 10:16
各位大佬:
[Asm] 纯文本查看 复制代码
if 条件1=判断1 { 注册成功 参数1
}
else{
注册失败 参数2
}


能否改为
[Asm] 纯文本查看 复制代码
if 条件1=判断1 { 注册成功 参数1
}
else{
注册成功 参数1
}



直接修改else后面的参数不行吗
`1321 发表于 2023-9-19 23:21
我们前6位字符串也知道了,将机器码和123456拼接,然后进行md5加密,然后取前6位,最后拼接上我们之前逆出来的38259得到的字符串拿去激活

这个能具体讲讲么
本人小白看着有点懵
mt可以查看吗?
有没有成品计算器吗?
lanfong 发表于 2023-8-29 16:24
lyie15 发表于 2023-8-29 16:46
就是想学这个,工具和代码都略懂,但是整体的一个流程,还需要看大神们的分享中学习
Mayusuf 发表于 2023-8-29 21:24
学习中,还得多看多练多学习
lingxing2320 发表于 2023-8-29 22:15
支持大佬分享的教程
lshnb666 发表于 2023-8-29 22:39
感谢大佬
ZYLB2023 发表于 2023-8-29 22:49
还得多看多练多学习
Noid 发表于 2023-8-29 23:23
厉害了,大佬
YanJiuKanKan 发表于 2023-8-30 01:55
感谢分享
xiaoyi521 发表于 2023-8-30 05:30
软件和激活码计算器源码发一下
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2024-4-29 14:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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