Android 某东Sign与cipher解密

Android 某东Sign与cipher解密

最近疫情原因,哎,又沦落到了抢抢抢的境地,洋洋洒洒的网页端一气呵成写了个小助手哈,想要买莲花清瘟,一看只能手机APP购买。我去!真无语!那么再拿手机端开个刀吧,作如下记录。

本人所发布的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。如有侵权请联系我删除处理。

主要功能涉及如下:

1.解密sign

2.解密cipher

1.APP版本:


For Android V11.3.2 build98450

2.工具


预先善其事,必先利其器!请先准备如下分析工具

  1. Jadx
  2. IDA
  3. Frida
  4. unidbg
  5. Charles
  6. Pycharm(可选)
  7. Vscode(可选)

3.分析

手机环境配置抓包请大家自己解决。下面演示购物车数据的抓取功能。从手机到PC端代码实现。

Charles抓包

打开手机app,然后再点击购物车功能

https://api.m.*.com/client.action

我们在Charles会看到很多这个地址的请求,我们可以找一下购物车的包,地址中包含 functionid=cart 的就是购物车的请求

Android 某东Sign与cipher解密插图

 

我们详细的看一下这个请求所携带的数据如下:

Android 某东Sign与cipher解密插图1

 

经过多次抓包查看,发现这三个值是变化的。因此我们开始分析APP。

Sign-Jadx静态分析

把app导入到jadx,我们要追踪st,sign,sv这三个参数的来源,那么我们线搜索一下,大概找下sign的位置

Android 某东Sign与cipher解密插图2

 

看到我标注的那个方法,addQueryParameter 翻译一下不就是添加sign参数嘛。点进去分析看看。

经过frida注入调试,分析出确实是这个方法 但是他是不进这个if的,不是这上半部分的代码,而是下半部分的代码

Android 某东Sign与cipher解密插图3

 

最终定位到是下面的这行代码生成的sign,而且还有其他的2个参数 st与sv

Android 某东Sign与cipher解密插图4

 

我们继续点击这个函数进去看一下发现是个接口。有接口必然有实现!

Android 某东Sign与cipher解密插图5

 

那么如何去找它的实现类呢?我们继续搜索搜索这个类的完整路径  com.jingdong.jdsdk.d.c.s

Android 某东Sign与cipher解密插图6

 

我们继续点击进去第一个,发现果真找到了接口的实现类如下:

Android 某东Sign与cipher解密插图7

 

最终我们看到sign是调用的so….白瞎了之前的一顿操作。至此分析结束。那么我们用frida来验证下是不是这样。

Sign-Frida注入验证

注意新版京东有检测frida的,需要改个进程名跟端口。

用frida注入如下函数  BitmapkitUtils.getSignFromJni(context, str, str2, str3, str4, str5);

 复制代码 隐藏代码
function HookHandle(clazz) {
    clazz.getSignFromJni.implementation = function (a, b, c, d, e, f) {
        console.log("=======================================")
        var r = this.getSignFromJni(a, b, c, d, e, f);
        console.log("param1: ", a)
        console.log("param2: ", b)
        console.log("param3: ", c)
        console.log("param4: ", d)
        console.log("param5: ", e)
        console.log("param6: ", f)
        console.log("result: ", r)
        return r;
    }
    console.log("HookHandle ok")
}

Java.perform(function () {
    Java.choose("dalvik.system.PathClassLoader", {
        onMatch: function (instance) {
            try {
                var clazz = Java.use('com.jingdong.common.utils.BitmapkitUtils');
                HookHandle(clazz)
                return "stop"
            } catch (e) {
                console.log("next")
                console.log(e)
            }
        },
        onComplete: function () {
            console.log("success")
        }
    })
})

请使用上面这种注入方法,不然会发生找不到类的错误。

Android 某东Sign与cipher解密插图8

 

如上,我们可以看出,st sign sv都是从so来的。

至此,sign的来源已理清。

但是我们还有一个body的加密字段

Android 某东Sign与cipher解密插图9

 

我们继续重复上面的分析。

cipher-Jadx静态分析

继续搜索”cipher“字段

Android 某东Sign与cipher解密插图10

 

可以看到就一个类,那么就很简单的可以得出加密算法了

Android 某东Sign与cipher解密插图11

 

通过frida注入这个b函数会发现b参数==MODIFIED_BASE64 就是进入的这个if,而且加密算法就在d.b()这个方法。直接用java还原就行了。

4.调用

sign签名用unidbg模拟调用so就可以了。cipher这个直接复制d这个类就包含了加解密。然后模拟登录再请求购物车信息就ok啦。

结果展示获取购物车数据:

Android 某东Sign与cipher解密插图12

下载说明: 1.特别声明:原创产品提供以上服务,破解产品仅供参考学习,不提供售后服务(均已杀毒检测),如有需求,建议购买正版!如果源码侵犯了您的利益请留言告知! 2.如果源码下载地址失效请 联系站长进行补发。 3.本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除! 4.本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【源码无忧】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。 5.请您认真阅读上述内容,购买即以为着您同意上述内容。 原文链接:https://www.dabaiwu.top/blog/android-%e6%9f%90%e4%b8%9csign%e4%b8%8ecipher%e8%a7%a3%e5%af%86/,转载请注明出处。

各位大哥大姐们好 本站属于非盈利网站,所有资源来自网络搜集而来,如果您发现你需要的资源需要VIP的权限,请发邮件给到我,前期需要帮忙宣传我们的站点5个连接就可以了,也不多,附上截图就可以了。谢谢
显示验证码
没有账号? 注册  忘记密码?
您好,有任何疑问请与我们联系!