安居客参数分析
安居客参数分析
前言
手机里之前装过很多杂乱软件,最近闲来无事,又在学习 app 的东西,翻来翻来就找到了这个找房软件,于是想着分析一下,在此记录一下过程,也算是成长过程的小经历了,话不多开,分析开始。
请求分析
这个抓包软件是 Proxyman,Charles 在 mac 我目前还没找到好的汉化的,英文的用的也不是很舒服,所以就用 Proxyman 代替了,我们看到了加密参数特别显眼的就是nsign和 nsign_uuid 应该是和nsign有关和
get_md5`
参数分析
做 app 逆向第一步肯定就是反编译了,不过在此之前我们还需要查看 app 是否加固,否则没办法得到大概的源代码,我们用 appmsg 进行查看。
很好啊,没有加固,我们直接 jadx 进行反编译即可。
nsign
进入了 SignUtil.c 的方法,而 SignUtil.c 则在函数中调用了一个 getSign0 的 native 方法。
我们直接打开 ida 啊,去找一下 SignUtil 这个 so 文件
是个静态注册,而且代码也没什么混淆,还是很利于我们分析的,其实我们也可以trace_natives这个 ida 插件,就能获取 SO 代码段中所有函数的偏移地址,再使用 frida-trace 批量 trace so 函数的调用。(由于 mac 下暂无高版本的 ida pro,所以我此处用 Windows 的 ida7.7 演示.)
图没截全,我们根据最开始的 sub_18f0 找过去,我们先静态分析一下代码,
发现 get_sign 这个函数比较亮眼,而我们刚才 trace 的过程中也有这个函数的调用,所以我们继续反编译分析查看
看到一个 sub_185c 这个函数的调用,其实我们大概能根据 qsort 猜出来,他是根据全面的 hook 的请求参数来进行一个 sort 排序,
在下文我们能看到这个”bcb2e93c6b527180099601a2dd8ef8b1”这个字符串,很大可能性是在下文的 SIGNMD5()这个函数中的进行 md5 加盐的操作
我们进入 SIGNMD5 函数查看
已经很像 Md5 的操作,还需经进入 sub_C18 查看
已经很明显看到 这个是 md5 加密中的 k 表的第一个
但是下文的结构也不是很像,所以我们具体要 hook 一下,然后手动 md5 加密看看,是否为标准的 md5 加密。