首页
社区
课程
招聘
安卓抓包、反编译小试 -- 某人学2022免登录使用
发表于: 2022-7-22 20:27 4146

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

2022-7-22 20:27
4146

工具:
Charles 4.5.6
jadx 1.4.2
APP:
Yuan人学2022,下载: http://download.python-spider.com/yuanrenxuem106.apk

 

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

 

打开APP,会提示要注册才能使用。本着能免登录、能省事就省事的原则,想办法跳过这个界面。

分析:

这个APP功能是做一些安卓逆向的题目。本身app内有这些题目,所以跳过登录页面,就能使用它的功能了,不需要从服务器处下载额外资源

  • jadx反编译,查看 AndriodManifest.xml,得知apk首屏是 "com.yuanrenxue.match2022.activity.SplashActivity"

  • 抓包,使用Charles,得知登录URL为:https://appmatch.yuanrenxue.com/login。
    图片描述

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

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

  • 写过前端的都知道,一个HTTP request,肯定要处理返回,向上翻翻,找到处理返回的函数:

里面代码很明显,如果HTTP正常返回,则:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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();
    }
  • 那服务器返回值要包含哪些字段呢?查一下onSuccess参数的类型(o00O000.OooO0o)即可:

这是经过gson 序列化过后的返回类型,可以看到包含了4个字段。
手动模拟一个:{"status_code": "1", "message": "hahah", "rank": "123", "nick": "kevin", "token":"aaa"}

  • 让Charles拦截app的特定请求,返回我们手动构建的返回值:
    Charles --> 工具 --> 重写,填入以下数据:
    图片描述

  • 再次在app里点击登录,OK,直接进入到主界面了!
    图片描述

但首页题目还是空白:
图片描述

  • 查看Charles抓包,发现app又向服务器POST请求了这个URL:
    https://appmatch.yuanrenxue.com/list?token=aaa
    因为我们用的是假token,所以服务器未返回!

如法泡制,在jadx里查到返回类型的定义,手工写一个json数据,让Charles拦截返回这个json:
{"status_code": "1", "data": "hahah", "rank": "8", "count": "111",}

  • app里切换几下页面,果然,题目出现了:
    图片描述

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

 

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


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1125
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
第十题有难度,
2022-8-2 10:41
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
能不能教我黑客技术呀,我现在遇到了一点困难
2024-9-30 15:25
0
游客
登录 | 注册 方可回帖
返回
//