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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5489|回复: 54
收起左侧

[Android 原创] 安卓抓包、反编译小试 -- 某人学2022免登录使用

  [复制链接]
kevinqqnj 发表于 2022-7-22 20:13
工具:
  • Charles 4.5.6
  • jadx 1.4.2
APP:
  • Yuan人学2022,下载: http://download.python-spider.com/yuanrenxuem106.apk

目标:
  • 免登录使用,查看app里所有题目
  • 声明:仅作学习交流使用!


打开APP,会提示要注册才能使用。本着能免登录、能省事就省事的原则,想办法跳过这个界面。
image.png
分析:
  • 这个APP功能是做一些安卓逆向的题目。本身app内有这些题目,所以跳过登录页面,就能使用它的功能了,不需要从服务器处下载额外资源
  • jadx反编译,查看 AndriodManifest.xml,得知apk首屏是 "com.yuanrenxue.match2022.activity.SplashActivity"
  • 抓包,使用Charles,得知登录URL为:https://appmatch.yuanrenxue.com/login。

image.png
返回值格式是json: {"status_code": "0", "message": "Account does not exist"}

4. jadx里,发现是混淆过了,但不影响分析。在jadx里查找 “/login”,通过“查找用例”,找到处理函数:
package com.yuanrenxue.match2022.fragment.other;public class LoginFragment extends OooO0o implements View.OnClickListener
image.png

5. 写过前端的都知道,一个HTTP request,肯定要处理返回,向上翻翻,找到处理返回的函数:
image.png
里面代码很明显,如果HTTP正常返回,则:
[Java] 纯文本查看 复制代码
    public void onSuccess(o00O000.OooO0o oooO0o) {
            if (oooO0o.OooO0OO().intValue() == 0) {  //判断返回json里某值如果为0,则显示“hint_username_not_exist_or_password_error”
                OooOOO.OooO00o(R.string.hint_username_not_exist_or_password_error);
                ((FragmentLoginBinding) LoginFragment.this.binding).f5350OooO0O0.setEnabled(true);
                LoginFragment.this.f5563OooO0oO.dismiss();
                return;
            }
            //判断返回json里某值如果非0 ,则取出用户昵称Nick_name、排名Rank。然后系统转到MainActivity
            OooO0OO.OooO0oO("NICK_NAME", oooO0o.OooO00o());
            OooO0OO.OooO0oO("RANK", oooO0o.OooO0O0());
            oooO0o.OooO0o0(oooO0o.OooO0Oo().replace("\n", ""));
            LoginFragment.this.OooOoO(oooO0o.OooO0Oo());
            ((FragmentLoginBinding) LoginFragment.this.binding).f5350OooO0O0.setEnabled(true);
            LoginFragment.this.f5563OooO0oO.dismiss();
        }


6. 那服务器返回值要包含哪些字段呢?查一下onSuccess参数的类型(o00O000.OooO0o)即可:
image.png
这是经过gson 序列化过后的返回类型,可以看到包含了4个字段。
手动模拟一个:{"status_code": "1", "message": "hahah", "rank": "123", "nick": "kevin", "token":"aaa"}

7. 让Charles拦截app的特定请求,返回我们手动构建的返回值:
Charles --> 工具 --> 重写,填入以下数据:
image.png

8. 再次在app里点击登录,OK,直接进入到主界面了!
image.png
但首页题目还是空白:
image.png

9. 查看Charles抓包,发现app又向服务器POST请求了这个URL:
https://appmatch.yuanrenxue.com/list?token=aaa
image.png
如法泡制,在jadx里查到返回类型的定义,手工写一个json数据,让Charles拦截返回这个json:
{"status_code": "1", "data": "hahah", "rank": "8", "count": "111",}

10. app里切换几下页面,果然,题目出现了:

image.png
而且大部分题目都可以正常打开:
每道题对应一个URL:https://appmatch.yuanrenxue.com/app2  // 2代表第二道题

至此,免登录使用app的目的已经达到!


免费评分

参与人数 15威望 +1 吾爱币 +34 热心值 +13 收起 理由
YZXHZY + 1 + 1 谢谢@Thanks!
ZydmxhZ + 1 我很赞同!
SVIP008 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
52game + 1 用心讨论,共获提升!
名shu + 1 + 1 我很赞同!
mmdd33 + 1 + 1 谢谢@Thanks!
mht123321 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
timersi + 1 谢谢@Thanks!
正己 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
warehouse + 1 + 1 谢谢@Thanks!
Xiaoqi9448 + 1 + 1 谢谢@Thanks!
debug_cat + 2 + 1 我很赞同!
李佑辰 + 1 + 1 小伙子你可真刑啊!
芽衣 + 3 + 1 用心讨论,共获提升!
Ajin1989 + 1 + 1 我很赞同!

查看全部评分

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

fuyuantao520 发表于 2022-7-24 15:25
来学习下! 谢谢楼主分享~!
 楼主| kevinqqnj 发表于 2022-7-25 16:32
daisypojie 发表于 2022-7-25 08:55
root好难,求大神指教

模拟器很多安装好就是root的,如Mumu、Bluestack。
真机root比较难,可以买一下旧的已root真机
Michael_Yang 发表于 2022-7-24 11:08
漁滒 发表于 2022-7-24 11:53
大佬可以分析一下第十题吗?做不出来,也找不到教程
李佑辰 发表于 2022-7-24 12:14
小伙子你可真刑啊! 分析一下第十题吗?做不出来
GuiXiaoQi 发表于 2022-7-24 14:21
越来越刑
warehouse 发表于 2022-7-24 15:02
太有用了。。。。。。。。
mercy520 发表于 2022-7-24 15:59
感谢分享这么好的方法
 楼主| kevinqqnj 发表于 2022-7-24 16:15
Michael_Yang 发表于 2022-7-24 11:08
可以把开言英语先锋版也搞定就好了

你说的这类app,资源都从服务器下传下来的,本地破解无意义
四月份 发表于 2022-7-24 16:49
可惜手机安卓8,不会root权限,抓包的证书不信任
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2024-4-29 22:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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