您的位置:首页 > 游戏 > 游戏 > 深圳宝协建设公司_广州番禺网站建设公司_发布新闻最快的网站_360网站推广

深圳宝协建设公司_广州番禺网站建设公司_发布新闻最快的网站_360网站推广

2024/11/15 17:21:18 来源:https://blog.csdn.net/qq_36301061/article/details/143417785  浏览:    关键词:深圳宝协建设公司_广州番禺网站建设公司_发布新闻最快的网站_360网站推广
深圳宝协建设公司_广州番禺网站建设公司_发布新闻最快的网站_360网站推广

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

内容参考于:图灵Python学院

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。第一次接触安卓逆向写的很烂,后面有机会再全部重写。

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:31.安卓逆向-抓包-实战4

上一个内容里通过hook找到的方法成功得到了authorization的值,然后本次分析它的值怎么来到,我们需要找一个方法对它进行模拟调用,然后得到authorization的值,然后调用请求

首先打开jadx-gui并把apk拖进去,然后来到下图位置,也就是上一个内容结尾的位置,然后开始分析

然后当前的请求是get请求,如下图红框,所以进入到 getSignString方法里

首先对它进行hook看看它的入参和返回值

然后如下图可以看到,它的入参是一个请求和一个map

然后改一下代码让它把map里的数据打印出来,然后发现map没打印东西,这说明map里没有东西,是一个空的,然后这个方法返回值是我们想要的,然后方法也很长,所以从后往前分析

Map取值的代码

var key = map2.keySet()
var it = key.iterator()
var r = ""
while(it.hasNext()){var keystr = it.next()var valuestr = map2.get(keystr)console.log(`map key->${keystr}`)console.log(`map value->${valuestr}`)r += valuestr
}

如下图从下往上分析,看返回值的值哪里来的

首先返回值的值来自于Base64编码,如下图红框,然后编码的内容是 str2 + ":" + SHA1ToString,首先看str2的值哪来的

如下图红框str2的值来源

首先hook JniClient.GetAppId方法,它是一个native方法

然后复制为Frida片段,hook之后会发现它没有被执行

然后再hook下图红框的方法 getHttpAppId

然后下图红框的方法getHttpAppId,可以看出值全是写死的

然后复制为Frida片段

它的返回值如下图是一个写死的字,然后现在str2的值找到了,接下来再找 SHA1ToString 的值哪来的

然后发现它的值来自于sha1加密,如下图红框

然后对它进行hook,看看它的入参

如下图它的入参是请求参数和一个加密的数据

经过hook下图红框的方法看出,加密的数据也是写死的

它的代码如下图红框,所以加密的数据直接写死

现在的结构:写死加密的数据+请求入参,然后20180111_android:写死加密的数据+请求入参进行base64加密

然后20180111_android这样东西可以通过对参数进行base64解密也能拿到,如下图

然后获取参数,首先使用Charles(青花瓷)复制url

然后通过工具把参数提取出来

然后它的参数是排过序的,通过下图红框位置的数据对比请求后面的参数看出来的

使用Python进行排序,如下图

然后排序玩加密

import base64
import hashlibparams = {"condition": "","refer": "homepage","containerType": "0","from": "search_result","cityId": "370101","page": "1"
}
so="".join([f"{key}={params[key]}" for key in sorted(params.keys())])
# print(so)
so1 = "d5e343d453aecca8b14b2dc687c381ca"+so
sha1 = hashlib.sha1()
sha1.update(so1.encode())
res = sha1.hexdigest()
print(res)
auth = base64.b64encode(("20180111_android:"+res).encode('utf-8'))

总结:

通过一边逆向一般hook得到参数的方式一步一步得到想要的东西,然后通过逆向分析代码的逻辑然后使用Python代码进行欢迎


img

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com