安卓如何破解授权码APP的授权码怎么破?

安卓逆向之给激活码添加一个「口令」 - 『移动安全区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 13533|回复: 45
安卓逆向之给激活码添加一个「口令」
阅读权限100
这次要破解的软件叫Stellio Music Player,是一款手机音乐播放器。
它的破解点是。
用到的工具:
用反编译和修改代码,由于激活码是网络验证,所以用Charles抓包分析。
一、激活码破解篇
本篇的目的:你输入任意激活码都能激活成功。
<font color="#.去除自校验
这个软件有签名校验,先去除。
方法是常用的方法了,详见:
贴一下修改后的代码:
[Java] 纯文本查看 复制代码
invoke-virtual {p0}, Landroid/content/C-&getPackageManager()Landroid/content/pm/PackageM
move-result-object v0
const/16 v3, 0x40
const-string p1, &/sdcard/123.apk&
//自定义验证包的路径
invoke-virtual {v0, p1, v3}, Landroid/content/pm/PackageM-&getPackageArchiveInfo(Ljava/lang/SI)Landroid/content/pm/PackageI
//把getPackageInfo改为getPackageArchiveInfo
move-result-object v3
sget-boolean v0, Lru/stellio/player/Utils/m;-&a:Z
if-nez v0, :cond_3
iget-object v0, v3, Landroid/content/pm/PackageI-&signatures:[Landroid/content/pm/S
//读取签名
<font color="#.破解激活码
自校验去掉之后,我们进去看看,发现软件只有10天试用期。
买买买!点击购买,会弹出一个弹框:
652.png (100.14 KB, 下载次数: 1)
15:48 上传
如图,它有2种解锁完整版的方式:
a.去购买解锁包解锁
b.用激活码激活解锁
这里选择激活码。
输入任意激活码,会有错误提示:
942.png (99.99 KB, 下载次数: 1)
15:48 上传
由于我们要求输入「任意」激活码都能激活成功,所以先去掉格式的限制。
QQ拼音截图未命名34.png (21.91 KB, 下载次数: 1)
16:13 上传
按图索骥,最后在smali里删掉一个跳转即可,比较简单就不贴代码了。
去掉激活码格式的限制后,继续往下走。
由于是联网激活,所以抓包看一下吧。
我输入“呵呵”,然后点击激活。
一方面app上会提示激活码无效,另一方面Charles上显示以下数据:
1.png (20.18 KB, 下载次数: 1)
16:30 上传
2.png (15.94 KB, 下载次数: 1)
16:30 上传
也就是说,输入的key如果是无效的,发送到服务器上,会验证失败,然后返回error。
先把链接复制下来,搜索看一下。
[Java] 纯文本查看 复制代码
.method public static a(Ljava/lang/SLjava/lang/SLjava/lang/S)Z
const/4 v5, 0x0
new-instance v0, Ljava/util/ArrayL
invoke-direct {v0}, Ljava/util/ArrayL-&&init&()V
new-instance v1, Lru/stellio/player/Helpers/i;
const-string v2, &key&
invoke-direct {v1, v2, p0}, Lru/stellio/player/Helpers/i;-&&init&(Ljava/lang/SLjava/lang/S)V
invoke-interface {v0, v1}, Ljava/util/L-&add(Ljava/lang/O)Z
new-instance v1, Lru/stellio/player/Helpers/i;
const-string v2, &android_id&
invoke-direct {v1, v2, p1}, Lru/stellio/player/Helpers/i;-&&init&(Ljava/lang/SLjava/lang/S)V
invoke-interface {v0, v1}, Ljava/util/L-&add(Ljava/lang/O)Z
new-instance v1, Lru/stellio/player/Helpers/i;
const-string v2, &imei&
invoke-static {}, Lru/stellio/player/A-&a()Lru/stellio/player/A
move-result-object v3
invoke-static {v3}, Lru/stellio/player/Utils/k;-&i(Landroid/content/C)Ljava/lang/S
move-result-object v3
invoke-direct {v1, v2, v3}, Lru/stellio/player/Helpers/i;-&&init&(Ljava/lang/SLjava/lang/S)V
invoke-interface {v0, v1}, Ljava/util/L-&add(Ljava/lang/O)Z
new-instance v1, Lru/stellio/player/Helpers/i;
const-string v2, &lock&
invoke-static {}, Lru/stellio/player/MainA-&g3()Ljava/lang/S
move-result-object v3
invoke-direct {v1, v2, v3}, Lru/stellio/player/Helpers/i;-&&init&(Ljava/lang/SLjava/lang/S)V
invoke-interface {v0, v1}, Ljava/util/L-&add(Ljava/lang/O)Z
invoke-static {}, Lru/stellio/player/Fragments/SettingsF-&d()Landroid/content/SharedP
move-result-object v1
new-instance v2, Lru/stellio/player/Helpers/i;
const-string v3, &utm_source&
const-string v4, &utm_source&
invoke-interface {v1, v4, v5}, Landroid/content/SharedP-&getString(Ljava/lang/SLjava/lang/S)Ljava/lang/S
move-result-object v4
invoke-direct {v2, v3, v4}, Lru/stellio/player/Helpers/i;-&&init&(Ljava/lang/SLjava/lang/S)V
invoke-interface {v0, v2}, Ljava/util/L-&add(Ljava/lang/O)Z
new-instance v2, Lru/stellio/player/Helpers/i;
const-string v3, &utm_medium&
const-string v4, &utm_medium&
invoke-interface {v1, v4, v5}, Landroid/content/SharedP-&getString(Ljava/lang/SLjava/lang/S)Ljava/lang/S
move-result-object v1
invoke-direct {v2, v3, v1}, Lru/stellio/player/Helpers/i;-&&init&(Ljava/lang/SLjava/lang/S)V
invoke-interface {v0, v2}, Ljava/util/L-&add(Ljava/lang/O)Z
if-eqz p2, :cond_0
new-instance v1, Lru/stellio/player/Helpers/i;
const-string v2, &bind&
invoke-direct {v1, v2, p2}, Lru/stellio/player/Helpers/i;-&&init&(Ljava/lang/SLjava/lang/S)V
invoke-interface {v0, v1}, Ljava/util/L-&add(Ljava/lang/O)Z
const-string v1, &http://stellio.ru/api/license.php&
invoke-static {v1, v0}, Lru/stellio/player/Apis/c;-&a(Ljava/lang/SLjava/util/L)Ljava/lang/S
move-result-object v0
invoke-static {v0}, Lru/stellio/player/Apis/c;-&b(Ljava/lang/S)Z
move-result v0
.end method
结合刚才抓包的图,看来找到关键的地方了。
由于这个方法是布尔值类型的,我尝试在最后强制令其返回true,果然激活成功了。
不过为了搞清楚来龙去脉,可以再往上一层走。
因它最后调用了b(Ljava/lang/S)Z,所以去b(Ljava/lang/S)Z看一下。
[Java] 纯文本查看 复制代码
.method private static b(Ljava/lang/S)Z
const-string v0, &ok&
invoke-virtual {v0, p0}, Ljava/lang/S-&equals(Ljava/lang/O)Z
move-result v0
if-eqz v0, :cond_0
const/4 v0, 0x1
const-string v0, &error&
invoke-virtual {v0, p0}, Ljava/lang/S-&equals(Ljava/lang/O)Z
move-result v0
if-eqz v0, :cond_1
const/4 v0, 0x0
goto :goto_0
new-instance v0, Ljava/io/IOE
new-instance v1, Ljava/lang/StringB
invoke-direct {v1}, Ljava/lang/StringB-&&init&()V
const-string v2, &Unknown server response &
invoke-virtual {v1, v2}, Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
move-result-object v1
invoke-virtual {v1, p0}, Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringB-&toString()Ljava/lang/S
move-result-object v1
invoke-direct {v0, v1}, Ljava/io/IOE-&&init&(Ljava/lang/S)V
.end method
这时就很清楚了:只有当返回 &ok&时,才激活成功。刚才返回&error&自然是激活失败的。
改法:删掉第一个跳转,这样永远返回真,于是无论是&ok&还是&error&都能激活成功了。
激活前后对比:
116.png (87.04 KB, 下载次数: 1)
15:48 上传
614.png (81.1 KB, 下载次数: 1)
17:35 上传
至此激活码破解篇结束。
二、激活码改造篇
本篇的目的:你只能使用我指定的激活码才能激活成功。
本篇的想法来源于最近很火的口令红包:
你要拿我的红包,必须输入我指定的口令。
同理,我们DIY一个「口令」激活码吧!
首先分析本软件的激活流程,以找到适合的切入点。
QQ拼音截图未命名.png (8.63 KB, 下载次数: 1)
17:46 上传
由于激活码的验证部分已经破解了,所以可考虑在激活码的格式上做文章。
<font color="#.隐藏的彩蛋?
按图索骥,找到激活码的格式代码:
[Java] 纯文本查看 复制代码
.method public static a(Ljava/lang/S)Z
const/4 v1, 0x1
const/4 v0, 0x0
invoke-static {p0}, Landroid/text/TextU-&isEmpty(Ljava/lang/CharS)Z
move-result v2
if-eqz v2, :cond_1
//验证输入是否为空,非空跳到激活码的格式验证,否则返回false
const-string v2, &[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}&
//激活码的正确格式,和错误提示是一样。
invoke-static {v2}, Ljava/util/regex/P-&compile(Ljava/lang/S)Ljava/util/regex/P
move-result-object v2
invoke-virtual {v2, p0}, Ljava/util/regex/P-&matcher(Ljava/lang/CharS)Ljava/util/regex/M
move-result-object v2
invoke-virtual {v2}, Ljava/util/regex/M-&matches()Z
move-result v2
if-eqz v2, :cond_2
//验证格式是否相符,相符则返回true
move v0, v1
goto :goto_0
const-string v2, &appoftheday&
invoke-virtual {v2, p0}, Ljava/lang/S-&equals(Ljava/lang/O)Z
move-result v2
if-eqz v2, :cond_0
//虽然格式不相符,但只要输入的是appoftheday,一样返回true!
move v0, v1
goto :goto_0
.end method
分析见注解,它既用了matches(相符),又用了equals(相等)。
如果格式相符,或者输入为&appoftheday&,就通过激活码格式的验证了。
&appoftheday&作为隐藏要素,它是一枚特殊的激活码,经测试,也是无效的激活码。{:1_903:}
<font color="#.不一样的激活码:「口令」激活码
为了达到「口令」的效果,我们去掉matches代码,仅保留equals即可。
[Java] 纯文本查看 复制代码
.method public static a(Ljava/lang/S)Z
const-string v0, &吾爱破解&
invoke-virtual {v0, p0}, Ljava/lang/S-&equals(Ljava/lang/O)Z
move-result v0
if-eqz v0, :cond_0
//只能输入&吾爱破解&,否则返回false
const/4 v0, 0x1
const/4 v0, 0x0
goto :goto_0
.end method
当然还要把提示改了,否则人家都不知道要输入什么了。
还有上面把激活码的格式限制去掉了,所以也要改回来的。
改造后的激活码如下图。
QQ拼音截图未命名谔谔.png (8.86 KB, 下载次数: 1)
18:10 上传
<font color="#.不一样的激活码:「口令」升级版
假如你不想这个「口令」千遍一律的话,也可以再改。
举个例子:别人必须输入手机的imei才能激活成功。
为了省事,首先看有没有哪个方法是描述读取手机imei的,然后我们改为调用该方法即可。
搜索getDeviceId。
[Java] 纯文本查看 复制代码
.method public static i(Landroid/content/C)Ljava/lang/S
const-string v0, &android.permission.READ_PHONE_STATE&
invoke-static {p0, v0}, Landroid/support/v4/content/a;-&a(Landroid/content/CLjava/lang/S)I
move-result v0
if-eqz v0, :cond_0
const-string v0, &&
return-object v0
const-string v0, &phone&
invoke-virtual {p0, v0}, Landroid/content/C-&getSystemService(Ljava/lang/S)Ljava/lang/O
move-result-object v0
check-cast v0, Landroid/telephony/TelephonyM
invoke-virtual {v0}, Landroid/telephony/TelephonyM-&getDeviceId()Ljava/lang/S
move-result-object v0
goto :goto_0
.end method
原来Lru/stellio/player/Utils/k;下的i(Landroid/content/C)Ljava/lang/S就是读取imei的方法。
再搜索Lru/stellio/player/Utils/k;-&i(Landroid/content/C)Ljava/lang/S 时发现它已经被调用过了。
[Java] 纯文本查看 复制代码
const-string v2, &imei&
invoke-static {}, Lru/stellio/player/A-&a()Lru/stellio/player/A
move-result-object v3
invoke-static {v3}, Lru/stellio/player/Utils/k;-&i(Landroid/content/C)Ljava/lang/S
move-result-object v3
简直天助我也,复制过去改一下就行了:
[Java] 纯文本查看 复制代码
.method public static a(Ljava/lang/S)Z
invoke-static {}, Lru/stellio/player/A-&a()Lru/stellio/player/A
move-result-object v0
invoke-static {v0}, Lru/stellio/player/Utils/k;-&i(Landroid/content/C)Ljava/lang/S
move-result-object v0
//调用了读取imei的方法
invoke-virtual {v0, p0}, Ljava/lang/S-&equals(Ljava/lang/O)Z
move-result v0
if-eqz v0, :cond_0
//只能输入&手机imei&,否则返回false
const/4 v0, 0x1
const/4 v0, 0x0
goto :goto_0
.end method
同样还要把提示改了,否则人家都不知道要输入什么了。
如你所见,这种「口令」激活码并非真正意义上的激活码,不过效果已经达到了。
至此激活码改造篇结束。
全文结束。代码贴多了,好像太长了。
附本文用到的app:
密码: p7jh
有兴趣也可以研究一下,说不定有更多更有趣的发现哦!
大神就是不一样,了解了好多思路&
吾爱币 +50
热心值 +28
我很赞同!
用心讨论,共获提升!
谢谢@Thanks!
热心回复!
谢谢@Thanks!
感谢发布原创作品,吾爱破解论坛因你更精彩.
用心讨论,共获提升!
我很赞同!
热心回复!
虽然不太懂 ,但好像明白一些
感谢发布原创作品,吾爱破解论坛因你更精彩.
我很赞同!
热心回复!
我很赞同!
用心讨论,共获提升!
谢谢@Thanks!
一个破解牵出好几篇实用文章 感谢
没我爱币了
思路清晰无比,代码不明所以
我很赞同!
鼓励转贴优秀软件安全工具和文档!
感谢发布原创作品,吾爱破解论坛因你更精彩.
我很赞同!
感谢发布原创作品,吾爱破解论坛因你更精彩.
谢谢@Thanks!
感谢发布原创作品,吾爱破解论坛因你更精彩.
感谢发布原创作品,吾爱破解论坛因你更精彩.
欢迎分析讨论交流,吾爱破解论坛有你更精彩.
本帖被以下淘专辑推荐:
& |主题: 95, 订阅: 117
& |主题: 129, 订阅: 103
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
看过楼主很多android破解的帖子,可以发一下你常用android破解工具的下载链接吗?我现在一直用androidkiller和fiddler
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
代码竟然未加密~都是裸码~
裸码的APK很容易分析~
这篇比较适合刚入坑的鞋童
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
沙发啊,必须顶起来,学习了!
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限35
好详细的教程,我啥时候才能学会啊
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
大牛,学习了,本帖已经收藏,另外:我真的很难得抢到一楼
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
楼主推荐一款安卓抓包的软件啊,平时不怎么接触电脑。。。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
已收藏,学习学习
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
好详细的教程&&学习了
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
很牛逼啊!
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
嘿嘿 , 谢谢楼主分享
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
楼主相当的有才!
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.您的位置:
→ 安卓必出雷VIP破解版app下载含授权码
v1.0其他版本
扫一扫下载到手机
8MB/ 便捷生活 /10
2MB/ 手机应用 /10
3MB/ 社交网络 /6.0
3MB/ 网上购物 /10
下载总览软件特权软件截图(4)视频演示猜你喜欢下载地址相关文章(7)用户评论
安卓VIP破解版app下载含码是一款特别实用的手机神器,轻松在线抢夺简单直接哦,而且还有各种福利为你提供哦,需要的赶紧下载吧!
安卓必出雷VIP破解版app下载含授权码功能: 1、超级埋雷; 2、超级排雷; 3、自动扫尾; 4、异常抢包; 5、领奖; 6、大小玩法; 7、发包扫尾; 8、接龙; 9、手动转包; 10、秒抢红包; 11、防封卫士; 12、伪装偷包; 13、防炸群; 14、摇一摇发包; 15、解除抢包限制; 16、接触卡包限制。
温馨提示: 必出雷app暂未上线,敬请期待~  想要获取最新消息请关注我们的公众号 更多必出雷内容,请进入专题:
活动内容:
截止时间:
领取方式:
活动条件:
猜你喜欢玩机必备手机赚钱互动红包
移动端的需求不断提高,现在手机越来越先进,千元机都可以实现很多在电脑上做的事情。其实也不是手机先进,只是手机内存比较大,可以下载很多软件的问题啦!现在软件真是超...
安卓必出雷VIP破解版app下载含授权码
必出雷软件资讯[共1篇]
必出雷软件教程[共5篇]
下载帮助嗨客手机站软件均来自互联网, 如有侵犯您的版权, 请点击网站底部在线QQ进行联系。
1.嗨客手机站所有软件和游戏都经过严格安装检测,保证不会有任何病毒木马等信息,请大家放心使用;
2.大家在安装软件的时候注意每个步骤,注意包含安装插件信息,推荐使用下载本站软件以获取最佳的下载速度。
3.如果您觉得嗨客还不错, 以便下一次的访问.
4.嗨客QQ群:应用软件交流群: 手机游戏交流:(满),加入二群:变态微商软件破解版(授权码破解) 安卓版 v1.0
下载帮助本站软件均来自互联网, 如有侵犯您的版权, 请与我们联系。
* 为了达到最快的下载速度,推荐使用下载本站软件。
* 请一定升级到最新版才能正常解压本站提供的软件!
* 相关网站事务请留言:
或通知我们!
Copyright &
. All Rights Reserved

我要回帖

更多关于 安卓如何破解授权码 的文章

 

随机推荐