首页
社区
课程
招聘
1
[原创]Android某社区加密参数分析
发表于: 2019-9-13 03:24 9069

[原创]Android某社区加密参数分析

2019-9-13 03:24
9069

前言

一直在索取论坛大佬的帮助,其实我自己也写过一些文章在自己博客,但我总觉得在看雪发表文章应该需要有用的、有技术含量的,就不敢发,怕误导人,这次分享的内容是android一个社区,叫 酷安,应该有人知道;其次也是借这次机会请教几个问题,这篇文章很早就写了,但有些问题一直没去解决。。

.

用到的工具有这些:frida、ida、jeb

.

.

分析过程

先抓个包

 

 

可以看到其中有个请求头 X-App-Token,这就是验证,至于X-App-Device这玩意儿应该是获取你手机信息的,不管它,先看看软件源代码,找到请求方法

1、jeb分析

没加固,好像也没混淆,舒服

 

 

搜索关键字:X-App-Token

 

 

很明显找到了我们要的东西了,(jeb3.0按tab键反编译)

 

 

这个 X-App-Token 是变量 v2_1,v2_1是,一个AuthUtils类里的getAS方法返回的

 

 

 

跟进可以发现这是一个native方法,lib是native-lib

 

 

到这里就没法用jeb分析了,我们先看看参数2 deviceId 是个什么玩意儿

 

可以看到是一个 SystemUtils 类里的 getDeviceID方法返回的,传入一个context参数

 

 

我们去app的application hook这个方法

 

 

我找到一个代码量最少的方法,这样可以帮助我们不破坏原逻辑的情况下hook (这里也许会误导别人,不破坏原逻辑可以直接在hook里调用当前方法,写这篇文章的时候还不是很懂)

 

 

hook的代码很简单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Java.perform(function() {
    var CoolMarket = Java.use('com.coolapk.market.CoolMarketApplication');
    CoolMarket.onLog.implementation = function() {
 
        var deviceId = Java.use('com.coolapk.market.util.SystemUtils').getDeviceId(this);
        console.log('Device Id: ', deviceId);
 
        var app_token = Java.use('com.coolapk.market.util.AuthUtils').getAS(this, deviceId);
        console.log('App Token: ', app_token);
 
        console.log('----------');
        return 1;
    }
})

拿到 deviceId 后分析so

.

.

2、ida分析

解压apk拿到 native-lib.so,用ida打开

 

 

我们已知方法名和参数个数,那么就先搜索方法名

 

Function Window 按 option+t 搜索 getAS,可以看到,毛都没有

 

 

 

那我们就到 IDA View 里搜索,快捷键一样

 


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-9-13 15:57 被zckuna编辑 ,原因:
收藏
免费 1
支持
分享
赞赏记录
参与人
雪币
留言
时间
PLEBFE
为你点赞~
2023-1-23 01:05
最新回复 (17)
雪    币: 6573
活跃值: (3983)
能力值: (RANK:200 )
在线值:
发帖
回帖
粉丝
2
图片重新贴一下,防止外链失效,保证作品质量,方便读者阅读
2019-9-13 06:29
0
雪    币: 2020
活跃值: (850)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
LowRebSwrd 图片重新贴一下,防止外链失效,保证作品质量,方便读者阅读[em_1]
哦好的
2019-9-13 15:42
0
雪    币: 978
活跃值: (894)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
抓包工具能否分享下
2019-9-13 18:18
0
雪    币: 2020
活跃值: (850)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
wx_私人账号定制 抓包工具能否分享下
https://www.lanzous.com/i65m77c 这个软件是付费的。。
2019-9-13 21:14
0
雪    币: 3134
活跃值: (1227)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
emmm你找的地方不太对。这个app动态注册了getAS这个函数,你进入jni_load函数,重新定义之后,我这边给出关键代码
v1 = (*a1)->GetEnv(a1, &v6, 65542);
v4 = (*v6)->FindClass(v6, "com/coolapk/market/util/AuthUtils");
v3 = v6;
if ( !v4 || (v5 = (*v3)->RegisterNatives(v3, v4, getMethods, 1), result = 65542, v5 < 0) )
   result = -1;
其中,getMethods里面就是对应的动态注册的函数数组。点进去之后可以看到
.data:000DB004 BE 4C 0B 00       getMethods dd offset aGetas   ; DATA XREF: JNI_OnLoad+72↑o
.data:000DB004                                                 ; "getAS"
.data:000DB008 C4 4C 0B 00       dd offset aLandroidConten_1   ; "(Landroid/content/Context;Ljava/lang/St"...
.data:000DB00C 10 E6 0A 00       dd offset getAuthString
第一个是java层函数名
第二个是方法签名
第三个是映射到native的方法名称
2019-9-14 19:03
0
雪    币: 256
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
http://www.520monkey.com/archives/1289这里面有讲
2019-9-16 09:18
0
雪    币: 58
活跃值: (193)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
2019-9-16 10:41
0
雪    币: 2020
活跃值: (850)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
真烧鱼 http://www.520monkey.com/archives/1289这里面有讲
我看过,但是讲的不多,学得不爽
2019-9-17 00:20
0
雪    币: 2020
活跃值: (850)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
小堆 emmm你找的地方不太对。这个app动态注册了getAS这个函数,你进入jni_load函数,重新定义之后,我这边给出关键代码 v1 = (*a1)->GetEnv(a1, &v6, ...
谢谢讲解
2019-9-17 00:20
0
雪    币: 144
活跃值: (418)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
2019-10-3 04:00
0
雪    币: 2020
活跃值: (850)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
zylyy [em_13]
2019-10-3 19:42
0
雪    币: 218
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
2019-10-14 00:05
0
雪    币: 52
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
请问jeb的字体怎么放大,默认的字体太小了
2019-11-26 19:22
0
雪    币: 2020
活跃值: (850)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
mb_syhcopwy 请问jeb的字体怎么放大,默认的字体太小了
edit里
2019-12-1 19:59
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
你好,(JNI_OnLoad的地址 0x31A04),这个地址是怎么算出来的
2020-6-1 22:32
0
雪    币: 2020
活跃值: (850)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
17
wx_ _954 你好,(JNI_OnLoad的地址 0x31A04),这个地址是怎么算出来的
ida 里有,左侧
2020-6-2 10:02
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
感谢回复,原来我一直看的都是x86包下面的libnative-lib.so(实际上是看armeabi-v7a这个目录) ...
2020-6-2 15:08
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册