吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 41348|回复: 349
上一主题 下一主题
收起左侧

[Android 原创] 某香香变vip教程:

    [复制链接]
跳转到指定楼层
楼主
冥界3大法王 发表于 2020-9-2 23:32 回帖奖励
本帖最后由 冥界3大法王 于 2020-9-3 12:53 编辑

那啥,这app有点那个,就不发链接了,你懂的。
还是火速分享下破解思路吧。
这是本菜鸟上了吾爱安卓进修课后的练习作业啦(当然上帝频道只有你,你,你。。。知道)

第一步,先用开发助手调查下 activity 上面都有啥?点下界面中的【开通会员才能查看的文字等】
结果我发现了返回了目标处的ID号,然后到 xml文件夹搜索下,就找到上面有四个XML中含有该字符串,我们在 那串xxx后面依次加上 1 2 3 4,
图1
结果打包后,没有一个调用的。
其中有一个vip框架的xml比较有意思,于是我就记录了下此id号
最好准备一个小本本,或是手机上的excel ,表格分类比较清晰嘛(很多时候是多个啊,不知哪个才是关键的啊,调查线索很重要啊)

第二步,使用MT管理器打开该apk,dex编辑器++ ,搜索 0x7f0c007c


点击去 查看,
[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
.method public setVipLogin(Z)Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;
    .registers 5
 
    .line 1
    iget-object v0, p0, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->vipLayout:Landroid/widget/LinearLayout;
 
    const/16 v1, 0x8
 
    if-eqz p1, :cond_8
 
    const/4 v2, 0x0
 
    goto :goto_a
 
    :cond_8
    const/16 v2, 0x8
 
    :goto_a
    invoke-virtual {v0, v2}, Landroid/widget/LinearLayout;->setVisibility(I)V
 
    .line 2
    iget-object v0, p0, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->content:Landroid/widget/TextView;
 
    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setVisibility(I)V
 
    if-nez p1, :cond_2d
 
    .line 3
    iget-object p1, p0, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->title:Landroid/widget/TextView;
 
    invoke-virtual {p1}, Landroid/widget/TextView;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams;
 
    move-result-object p1
 
    check-cast p1, Landroid/widget/RelativeLayout$LayoutParams;
 
    .line 4
    invoke-static {}, Lcom/tiger/app1/axj/base/BaseApplication;->getContext()Landroid/content/Context;
 
    move-result-object v0
 
    const/high16 v1, 0x42dc0000  # 110.0f
 
    invoke-static {v0, v1}, Lcom/luck/picture/lib/tools/ScreenUtils;->dip2px(Landroid/content/Context;F)I
 
    move-result v0
 
    iput v0, p1, Landroid/widget/RelativeLayout$LayoutParams;->topMargin:I
 
    .line 5
    iget-object v0, p0, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->title:Landroid/widget/TextView;
 
    invoke-virtual {v0, p1}, Landroid/widget/TextView;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V
 
    :cond_2d
=====》加这里有效果,但会导致崩溃
    return-object p0
.end method


这个文件位于VipTipDialog中
其中点导航,发现有个叫 SetVipLogon(Z)的类,比较有意思
果断短尾  加上一句
const  p0 ,1
return-object p0

根据楼下  涛之雨 大佬 和 风绕柳絮轻敲雪 说的
看看谁调用setVipLogin这个方法吧
确实改的还是不正确


或长按 选择【查找调用处  或 重写调用处方法】

就来到了这个地方,随便点一个查看下

咦,发现了新大陆~~
[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
public videoV2V3NoLoingVipTip()V
    .registers 4
 
    .line 1
    new-instance v0, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;
 
    iget-object v1, p0, Lcom/tiger/app1/axj/mvp/present/MovieDetailPresenter;->a:Lcom/trello/rxlifecycle2/components/support/RxAppCompatActivity;
 
    invoke-direct {v0, v1}, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;-><init>(Landroid/content/Context;)V
 
    const-string v1, "登录会员后可免费观看\n未注册会员请先注册"
 
    .line 2
    invoke-virtual {v0, v1}, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->setTitle(Ljava/lang/String;)Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;
 
    move-result-object v1
 
    .line 3
    invoke-static {}, Lcom/tiger/app1/axj/manager/LoginManager;->getInstance()Lcom/tiger/app1/axj/manager/LoginManager;
 
    move-result-object v2
 
    invoke-virtual {v2}, Lcom/tiger/app1/axj/manager/LoginManager;->isLogin()Z=====>看这句!
 
    move-result v2
 
    xor-int/lit8 v2, v2, 0x1
 
    invoke-virtual {v1, v2}, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->setVipLogin(Z)Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;
 
    const v1, 0x7f0e0053
 
    .line 4
    invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
 
    move-result-object v1
 
    invoke-virtual {v0, v1}, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->setGoBg(Ljava/lang/Integer;)Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;
 
    move-result-object v1
 
    const-string v2, "立即注册"
 
    invoke-virtual {v1, v2}, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->setGoText(Ljava/lang/String;)Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;
 
    const-string v1, "已是会员可 登陆观看"
 
    .line 5
    invoke-virtual {v0, v1}, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->setTvVipLoginText(Ljava/lang/String;)Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;
 
    const/4 v1, 0x1
 
    .line 6
    invoke-virtual {v0, v1}, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->setClickDismiss(Z)V
 
    .line 7
    new-instance v1, Lcom/tiger/app1/axj/mvp/present/e;
 
    invoke-direct {v1, p0}, Lcom/tiger/app1/axj/mvp/present/e;-><init>(Lcom/tiger/app1/axj/mvp/present/MovieDetailPresenter;)V
 
    invoke-virtual {v0, v1}, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->setmOnCancelListener(Landroid/view/View$OnClickListener;)Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;
 
    .line 8
    new-instance v1, Lcom/tiger/app1/axj/mvp/present/g;
 
    invoke-direct {v1, p0}, Lcom/tiger/app1/axj/mvp/present/g;-><init>(Lcom/tiger/app1/axj/mvp/present/MovieDetailPresenter;)V
 
    invoke-virtual {v0, v1}, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->setmOnTipClickListener(Landroid/view/View$OnClickListener;)Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;
 
    .line 9
    new-instance v1, Lcom/tiger/app1/axj/mvp/present/d;
 
    invoke-direct {v1, p0}, Lcom/tiger/app1/axj/mvp/present/d;-><init>(Lcom/tiger/app1/axj/mvp/present/MovieDetailPresenter;)V
 
    invoke-virtual {v0, v1}, Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;->setOnGoClickListener(Landroid/view/View$OnClickListener;)Lcom/tiger/app1/axj/ui/dialog/VipTipDialog;
 
    .line 10
    invoke-virtual {v0}, Landroid/app/Dialog;->show()V
 
    return-void
.end method

在 /LoginnManager;->isLogin()Z=====>看这句!在这里长按,弹菜单选择跳转



改完打包签名后,就会

再随便登录下

已经是5级了,一般的视频能无限次看了,更高级的还有待升级。。。还得接着研究。。。待续。。。

重新打包签名后发现,一点视频,就会闪退,多点几次,偶尔有成功的时候(已经过了当日的播放次数)
又能看了(其他的地方修改并无大的作用),哈哈。总闪退这点很不爽啊,得治啊。  于是就想,怎么弄呢,怎么弄呢, 于是闹肚子了,上了趟厕所,然后我突然想到
何不到vmos里再用xpoosed的那个异常崩溃的插件会不会记录下来呢,我可配了多款啊。  结果,我就捕获到了以下信息



Build date: 2020-09-02 21:51:04
Current date: 2020-09-02 21:58:35
Device: Vmos

Stack trace:  
io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | java.lang.VerifyError: Rejecting class com.tiger.app1.axj.ui.dialog.VipTipDialog because it failed compile-time verification (declaration of 'com.tiger.app1.axj.ui.dialog.VipTipDialog' appears in /data/app/com.xj.tiger-1/base.apk)
堆栈跟踪:
io.reactivex.exceptions.UndeliverableException:无法将异常传递给使用者,因为该异常已经取消/处理了该流程,或者该异常无处可去。进一步阅读:https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | java.lang.VerifyError:拒绝类com.tiger.app1.axj.ui.dialog.VipTipDialog,因为它未通过编译时验证(在/ data中声明了“ com.tiger.app1.axj.ui.dialog.VipTipDialog” /app/com.xj.tiger-1/base.apk)

        at io.reactivex.plugins.RxJavaPlugins.onError(SourceFile:4)
        at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(SourceFile:2)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1100)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:875)
        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)
Caused by: java.lang.VerifyError: Rejecting class com.tiger.app1.axj.ui.dialog.VipTipDialog because it failed compile-time verification (declaration of 'com.tiger.app1.axj.ui.dialog.VipTipDialog' appears in /data/app/com.xj.tiger-1/base.apk)
        at com.tiger.app1.axj.mvp.present.MovieDetailPresenter.a(SourceFile:3)===============>优先看这行
        at com.tiger.app1.axj.mvp.present.MovieDetailPresenter$e.a(SourceFile:5)===============>优先看这行
        at
com.tiger.app1.axj.mvp.present.MovieDetailPresenter$e.onFail(SourceFile:1)===============>优先看这行
        at com.tiger.app1.axj.net.DefaultObserver.onNext(SourceFile:5)
        at com.tiger.app1.axj.net.DefaultObserver.onNext(SourceFile:1)
        at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(SourceFile:8)
        at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(SourceFile:3)
        at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(SourceFile:1)
        ... 9 more

其中有三条比较有意思,   包名+英文预置那个单词 + a类
                                            。。。。。。。。。。。。e$a类
                                             。。。。。。。。。。。。。最后一条也在上边那个类中,里边有个单词fail
于是我就试着一条条的删除 或 修改 ,结果 果然问题出在 fail 的这个预置类里,删除掉后也不闪退了,但也播放不动了。
于是我试着手机登录下,竟然都正常了。


未完,还得继续。。。
昨夜看了几个后,又出现新的提示 “VIP等级不够,需要达到2级才能看。。。”
因为我知道有vip 5级
你会问我咋知道的?
搜索layout之类的文件夹
*.png
vip*.png
vip.png
等字样,你会发现
vip1.png
vip2.png
vip3.png
vip4.png
vip5.png


icon_vip_jiao_biao 难道是角标? vip高级版用户显示这头像?
dialog_vip 这个长得很像哟 ~~
icon_vip_recharge 最后一个单词充值的意思,所以不是
dialgo_bg_vip.png  (这个就是那个大个的花瓣型的最大的那个背景的那个图)
其实通过r.java 或layout 或resource.arsc 你不仅可以通过字、图、音 皆为成为我们定位的关键突破点
或是asssets (这个修改游戏初始数据很好)
稍后,解决以上问题。
看到上面图片中的 【永久字样】没?7FE0038
又重新定位了下,发现只有r.java中
貌似次数限额跟服务器返回值有关

127.0.0.1 试着改了下,没用
isLocalIp 搜索不到
另外下面还有广告,我们得干掉。视频广告我已经干掉了,还有启动广告和界面下方的广告。



https://www.52pojie.cn/thread-408645-1-1.html这个,果然能提高能力哟。

免费评分

参与人数 63吾爱币 +54 热心值 +54 收起 理由
youku2020 + 1 + 1 我很赞同!
yaolujia + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
佩格瓦拉 + 1 我很赞同!
zhuzhuxia111 + 1 + 1 我很赞同!
wxbyff + 1 谢谢@Thanks!
cstlab + 1 + 1 鼓励转贴优秀软件安全工具和文档!
楠宝 + 1 用心讨论,共获提升!
siye52888 + 1 + 1 提醒下别私信发。之前91那个好像封了
zhongmale + 1 + 1 谢谢@Thanks!
a246625296 + 1 + 1 热心回复!
2019想想 + 1 + 1 用心讨论,共获提升!
wanjuny + 1 热心回复!
luis318 + 1 + 1 谢谢@Thanks!
字数补丁 + 1 + 1 我朋友托我问成品在哪里
guo798292015 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yangsd973 + 1 + 1 热心回复!
qazwsc8 + 1 + 1 私发个包把
anonym_zou + 1 + 1 谢谢@Thanks!
MIC生命互联网 + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
yanb + 1 + 1 用心讨论,共获提升!
蓝色基调 + 1 + 1 这软件我48级了,名字是一种粮食作物
shp747994 + 1 + 1 用心讨论,共获提升!
alittlebear + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
rjlly + 1 我很赞同!
农夫山泉阿萨姆 + 1 + 1 谢谢@Thanks!
tocabd + 1 + 1 谢谢@Thanks!
ToT、 + 1 + 1 翻了翻评论,这个软件名字是一种水果,猴子爱吃的水果
明眼梅花 + 1 + 1 我很赞同!
Beryl + 1 + 1 谢谢@Thanks!
geliang715 + 1 够详细
lailt20 + 1 + 1 热心回复!
陈世界 + 1 + 1 我很赞同!
★☆CNVIP☆★ + 1 热心回复!
你可长点心吧 + 1 + 1 我提供网址谁给我个成品
andrewlee + 1 已经处理,感谢您对吾爱破解论坛的支持!
jute321 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hakurei123 + 1 + 1 用心讨论,共获提升!
安利天天 + 1 + 1 我很赞同!
默默默默陌 + 1 + 1 热心回复!
d18991160472 + 1 + 1 我很赞同!
megya + 1 谢谢@Thanks!
哇哈哈大笑 + 1 + 1 热心回复!
a1s2z1x2a + 1 给私发个包吧
yantian007 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
满意就好 + 1 热心回复!
翳麟 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
hiramyun + 1 + 1 我很赞同!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hoperaise + 1 我很赞同!
追马 + 1 我很赞同!
vizardtdst + 1 + 1 用心讨论,共获提升!
从农菜菜籽 + 1 + 1 我很赞同!
clever012 + 1 + 1 你的可是真牛逼啊!!!!
s9mf + 1 + 1 我很赞同!
wellionx + 1 热心回复!
jone110 + 1 热心回复!
ihusr + 1 用心讨论,共获提升!
Royal_zya + 1 + 1 热心回复!
dzc999 + 1 谢谢@Thanks!
海云帆 + 1 + 1 热心回复!
411183343 + 1 谢谢@Thanks!
wang3166wang + 1 + 1 用心讨论,共获提升!
2881326 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

推荐
大兵马元帅 发表于 2020-9-3 00:13
我朋友托我问问是什么软件
推荐
van142 发表于 2020-9-7 09:18
推荐
stilllove88 发表于 2020-9-4 11:34
我知道了 这是一种水果 猴子特别爱吃 超市普遍卖2块多  打折1块多   香开头的  提示这么多应该知道了吧
推荐
涛之雨 发表于 2020-9-3 06:21
本帖最后由 涛之雨 于 2020-9-3 06:25 编辑

返回类型为object,是不可以直接返回0或者1的。
比如返回的是数组或是结构体(其实原理差不多,结构体貌似是c说的。Java貌似叫类)
比如某个结构体如下
[C] 纯文本查看 复制代码
1
userinfo=['username':'涛之雨','isVIP':1,'password':'wuaipojie']

比如我可以读取
userinfo.isVIP是不是1来判断当前用户的类型。。。。

如果你直接返回1

读取的时候就变成1.isVIP??
1里面怎么可能有isVIP这个属性,所以会报错。
如果是某个子activity出错,有可能会导致软件无限重启。
如果是主activity抛出异常,那就是闪退了

改法也有至少两种。
还是上面的栗子
一个是在返回的上面赋值userinfo.isVIP为1
或者把结构体的userinfo中isVIP的赋值语句改成return1(只要调用就赋值1)

另一个是利用正则表达式,匹配所有读取xxx.info的(不一定是userinfo,也有可能是其他的)
正则表达式让这些代码全部返回1

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
alittlebear + 1 + 1 666
sunnylds7 + 1 + 1 热心回复!
冥界3大法王 + 1 + 1 有道理,我再试试。

查看全部评分

推荐
未命铭 发表于 2020-9-7 08:49
我有个朋友得了重病,临走之前想打探下这是什么软件?
推荐
1369452145 发表于 2020-9-3 01:58
叫啥香香来着
推荐
zhuxiaoyuan 发表于 2020-9-3 00:07
到现在也猜不到是什么香香
推荐
ouyuan 发表于 2020-9-6 13:35
蓝瘦里面搜的到呀
推荐
z1991627 发表于 2020-9-3 15:12
woshishiqi 发表于 2020-9-3 12:11
你的那个像皇冠&#128081;怎么弄得)

用吾爱币买的  一年就没了
推荐
北辰没有林安 发表于 2020-9-2 23:55
有点意思,
3#
wang3166wang 发表于 2020-9-2 23:57
厉害了我的哥
6#
jinzhh 发表于 2020-9-3 00:14
我朋友也想知道什么软件
7#
7687 发表于 2020-9-3 00:41
感谢提供思路
8#
丿终结者 发表于 2020-9-3 00:53
学习一下
9#
sddson 发表于 2020-9-3 00:56
谢谢分享
10#
lu4421479 发表于 2020-9-3 01:03
学习学习!!!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-4-7 18:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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