吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6917|回复: 106
收起左侧

[Android 原创] WYY快播1.6正式版破解(代码混淆)

  [复制链接]
mengxinb 发表于 2024-7-31 23:20
app:网易云快播1.6正式版(https://wwb.lanzoub.com/iHCan23t1gxa)
工具:jadx、Burp、frIDA、雷电模拟器
方法:修改网络响应难点:代码混淆、动态控制流(while中套多个case的switch)

app界面:
image.png

尝试:
一:搜索关键字
1.搜卡密、提交、有问题、请输入等等均无合适结果,可以说是无论搜界面中的啥,都是没有结果
image.png image.png image.png image.png


二:查询活动控件
1.直接adb shell dumpsys activity | findstr "mResumedActivity"查看当前界面信息,然后再编写代码查看是谁调用了这个;但是其实这个输出的是主页信息,并不是让你输入卡密的对话框信息,所以根本没有
image.png

2.我想着用开发助手的布局查看试试,但是收费;之后我想着用mt管理器中Activity记录试试看;结果发现是com.stardust.autojs.inrt.SplashActivity > cd.o4,我其实看不懂这个(有没有大佬能解释一下),但是还是尝试去搜了一下cd.o4,然后去hook它里面的方法,但是发现都没调用
image.png image.png

总结尝试:正常来说,拿到软件后一般都是从最简单的搜关键字符串开始,但是此app混淆了代码,根本无从下手,然后从活动控件下手,想着找到显示输入卡密的对话框,直接将它hook掉就行,但是我对安卓活动控件的获取缺乏相关知识,导致无从下手,最后只能尝试抓包
正文:
一:抓包
1.直接输入aaa后在burp上看抓包信息,发现是个get请求,并且都是明文,而secret=aaa就是我输入的卡密
image.png

2.所以直接去jadx中搜secret看看,有47条,但是都是无用的,之后我又尝试搜了一下网址信息,发现都是空的
image.png image.png image.png image.png

3.之后我就直接搜app_id;发现只有2个,网络请求中携带了id那么它肯定调用了return app_id去获取id并放入发送请求中
image.png image.png

4.编写hook代码验证是否调用(感谢@debug_cat 大佬为我解答jadx可以直接复制成frida代码,我之前是直接手动复制“  ۦۦۧۥ   ”这个吊符号,导致hook找不到目标);发现果然app发包时就调用了这个
image.png image.png

二:回溯网络请求
1.查看是谁调用了m2144这个方法;因为混淆,一眼根本看不出来是谁,只能一个个试,但是运气不错,第二个就是
image.png


2.我们直接hook看看是不是;可以看到public static java.lang.String f(java.lang.String r33, int r34, java.util.Map<java.lang.String, java.lang.String> r35)这个方法第一参数就是网络请求的地址,第二个是0,第三个是个object,而且它的返回值就是服务器的响应信息;说明这个方法就是用来发送网络请求并且返回网络响应
image.png image.png

3.继续跟进看看是谁调用了它;我们继续hook它看看都有啥有用的信息;m5181就是获取请求地址,0,还有输入的卡密信息,然后调用f()返回服务器的响应信息;我们最终的目的是找到判断服务器响应的代码,然后修改它,继续回溯
image.png image.png

三:回溯服务器响应的判断代码
1.查看是谁调用了m5181,可以发现有两个调用,但是第一个就是我们刚才才看的cd.m8.f()中的,我们直接看第二个
image.png

2.在public static /* synthetic */ void e(String str, Map map, f3 f3Var)m5181的值被传给str4,之后有两处关键点对str4(也就是服务器的响应信息)进行判断和处理,我们先查看第一次str4做判断的地方(C0120.m3149(str4))
image.png

3.直接跟进,卧槽!!!布尔值!!!难不成就是它???直接hook让它返回true试试!!!其实我当时看见布尔的那一刻,我高兴坏了,以为这个就是判断服务器响应信息的,没想到啊,它是用来判断是否输入卡密的
image.png image.png image.png

4.排除了一个,就只剩最后一个 C0118.m3008(f3Var, str4),这里肯定就是对服务器的响应进行提取然后判断;直接跟进看看
image.png

5.结果发现m3008里面先进行一个判断,然后再执行((f3) obj).c(obj2),跟进去后发现f66是定值-365,之后hook发现C0145.m4569()的值是定值553,说明它一定执行了((f3) obj).c(obj2),我们直接跟进c看看
image.png image.png image.png

6.在c这里,通过分析这里是100%要被调用的,但是hook后显示没有调用;猜测应该是m3008中的obj参数是个接口啥的对obj进行处理;(技术有限,我的分析就止步于此了,欢迎各位大佬继续分析)
image.png image.png image.png

四:大胆尝试
1.思考本质:
这个app的本质不就是获取用户输入的卡密然后发送给服务器进行验证,然后服务器返回结果,之后app再从服务器返回的结果中来判断是否成功


2.猜想:
如果我直接修改服务器返回的结果呢?我管它服务器返回啥,我直接自己去自定义一个成功的返回值不就行了嘛


3.实践:
3-1.修改msg的值为“卡密正确”,可以看到在只修改msg值的时候,app会显示卡密正确,并且没有出现闪退报错等情况,但是也只是改变了消息,并没有实现功能
image.png

3-2.修改datas的值,当它的值为一个时是正常的,但是有两个后就报错了,说明datas的值可能就是是一个
image.png image.png

3-3.修改code的值,我尝试修改了好几个数字,但都是正常的,并没有报错
image.png

3-4.ts的值跟code的值一样,修改多次依然正常,而且仔细看就知道它是个时间戳,我们直接修改status的值;将status的值修改为1后,app成功完成破解!!!并且一切功能全部正常使用
image.png image.png

总结:此app的卡密验证就是验证服务器返回值中的status的值是否为1,如果为1,卡密正确,如果为0,卡密错误;虽然它做了代码混淆,但是它的包都是明文,而且只判断服务器返回中status的值,这就给了我很大的运气完成了这次破解,这也是我首次完成对混淆代码的破解,虽然有很大的运气成分,对于混淆代码,只要慢慢分析,还是可以知道它的逻辑的,然后再慢慢hook不断验证猜想,你也可以完成对混淆代码的破解,感谢支持,大家互相学习学习

免费评分

参与人数 25威望 +1 吾爱币 +44 热心值 +24 收起 理由
FQOH + 1 + 1 我很赞同!
mjai5 + 1 + 1 我很赞同!
Baidashan + 1 + 1 谢谢@Thanks!
MKorange47 + 1 + 1 热心回复!
lingyun011 + 1 + 1 热心回复!
THEYX + 1 谢谢@Thanks!
MRhelper + 1 + 1 我很赞同!
lalicorne + 1 我很赞同!
局外人K + 1 + 1 热心回复!
xiaofu666 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
gqdsc + 1 + 1 优秀的学习教程
到最後受了傷 + 1 + 1 谢谢@Thanks!
杨辣子 + 1 + 1 谢谢@Thanks!
pluso + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
greendays + 1 + 1 我很赞同!
flyxxbird + 1 + 1 谢谢@Thanks!
debug_cat + 2 + 1 谢谢@Thanks!
mrjackliu + 1 + 1 用心讨论,共获提升!
不停的叨叨 + 1 + 1 用心讨论,共获提升!
daoye9988 + 1 + 1 热心回复!
zmmznmn + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
allcam + 1 + 1 我很赞同!
ysy2001 + 1 + 1 谢谢@Thanks!
落红护花 + 1 + 1 大佬厉害
正己 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

debug_cat 发表于 2024-8-1 15:24
mengxinb 发表于 2024-8-1 12:28
我当时也是 hook都没效果

我发现问题了,这个app他双进程的,frida默认hook到的进程居然不是这个app的业务进程。
可以通过查找进程的pid来hook。
先进入shell

blueline:/ # ps -A | grep com.example
u0_a293       9729  1118 49252836 153964 futex_wait_queue_me 0 S com.example.script1719198634987:script
u0_a293       9765  1118 15142616 55960 SyS_epoll_wait      0 S com.example.script1719198634987

发现2个pid。要hook谁?

dump当前堆栈。得到:

  ACTIVITY com.android.chrome/org.chromium.chrome.browser.ChromeTabbedActivity d2bc28e pid=8729
  ACTIVITY com.google.android.apps.nexuslauncher/.NexusLauncherActivity aa9a841 pid=2829
  ACTIVITY com.example.script1719198634987/com.stardust.autojs.inrt.SplashActivity 77b9e69 pid=9729

看这里:9729,就是他了。
接着frida:

firda -U -p 9729 -l test.js

└─[0] <> frida -U -p 9729 -l sun.js
     ____
    / _  |   Frida 16.4.7 - A world-class dynamic instrumentation toolkit
   | (_| |
    > _  |   Commands:
   /_/ |_|       help      -> Displays the help system
   . . . .       object?   -> Display information about 'object'
   . . . .       exit/quit -> Exit
   . . . .
   . . . .   More info at https://frida.re/docs/home/
   . . . .
   . . . .   Connected to Pixel 3 (id=)

[Pixel 3::PID::9729 ]-> onResume hook ~~~
p8.e is called: str=https://360mixup.com/feature/pack/verify, map=[object Object], f3Var=cd.xi$a@8b7ac87
C0115.m2849 is called: obj=android.app.ContextImpl@8a0594c, obj2=卡密无效, i7=1
C0115.m2849 result=android.widget.Toast@1c93e11

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
mengxinb + 1 + 1 感谢大佬答疑解惑!!!

查看全部评分

mjai5 发表于 2024-9-19 15:00
本帖最后由 mjai5 于 2024-9-19 15:29 编辑

注意!!!要先安装一遍原版,再安装修改版
修改本体
一、思路
已知靓仔的破解思路,直接在获取服务器消息的方法内修改返回的内容,轻轻松松简简单单,赞美靓仔!


二、步骤
1 去除签名校验(没试有没有签名校验)
2 找到获取服务器消息的方法的类【mirrorb.com.android.internal.policy.*】
2.jpg

3 搜索方法的定义【Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/String;】因为方法是【public static String m5181(Object obj, int i7, Object obj2)】
3.jpg

4 清空方法内容
4.jpg 4-2.jpg

5 填入方法内容,第一行定义修改后的服务器数据,第二行返回值

    const-string v0, "{\"result\":{\"msg\":\"\u5361\u5bc6\u65e0\u6548\",\"datas\":{},\"code\":104},\"ts\":1726650825196,\"status\":1}"

    return-object v0

5.jpg

6 结束
 楼主| mengxinb 发表于 2024-7-31 23:26
正己 发表于 2024-7-31 23:32
自动审核的,能抓到包的情况,就试试0改1,code改成200,有时候可以瞎猫碰上死耗子
ziyezy 发表于 2024-7-31 23:41
看起来真厉害,我还得慢慢学一学
落红护花 发表于 2024-7-31 23:42
这个卡密界面怎么这么熟悉?好像是叫做“云注入”这个app,这么说解决掉一个用云注入加卡密的app之后所有云注入加的卡密通杀了?楼主优秀!!
wasm2023 发表于 2024-8-1 00:04
学习了,感谢楼主
suolun 发表于 2024-8-1 00:08
感谢 非常有用 谢谢
lvyuang 发表于 2024-8-1 00:10
学习咯!
sun0512 发表于 2024-8-1 00:22
学习了,谢谢
wuaimhw 发表于 2024-8-1 00:27
学习了,强
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-28 01:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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