url参数加密解密(url中的空格处理方法)

这里我们发现这个包的参数是加密的 因为我要做的就是对这些参数解密 于是我脑海中出现一种思路 参数应该在链接附近于是打开JEB搜索encrypt=1果然搜索到了 右键q看源码发现代码是经过混淆过的 不过没关系 这里我看到v0=a.f this.d “?encrypt=1”;这样的代码 估计这个就是数据包的链接了 双击d进去 发现d的值为query 那这句代码就很清楚了把链接赋给v0,v0就是链接

url参数加密解密(url中的空格处理方法)

这里验证了我的猜想参数应该在链接附近于是继续跟着思路走这里看到得到v0的值后会return可以知道a方法的返回值就是链接 于是根据jeb的交叉引用 发现有两处会调用a方法

跟进去看看发现会调用getmessage()方法 点进去发现其在native层,调用的so是libumetriprelease.so

通过IDA动态调试分析 这个key是先连接当前日期 然后经过md5,base64加密 然后取其奇数位 所以我猜想服务器端也生成一个这样的key,这个key值应该是和服务器的key相校验 比对key的真实性或者是校验加密数据的完整性。继续分析发现u.a方法是打印log的b.a是log的开关

那么思路来了把b.a=false 改成b.a=true apktool反编译改完后重打包,签名,安装apk打开AndroidStudio看看log输出的都是什么内容

发现直接把url的参数吐出来了到这里是不是就结束了呢?答案是没有 因为我的任务是找到算法key 所以到这里并不算完成任务 继续理清思路 既然能把参数吐出来 那我是不是也能把key给吐出来 说干就干 找key的位置继续分析

既然有key了 那么程序的逻辑就是根据这个key对内容进行加密了跟进去

发现这个位置是加密算法第一个参数是要加密的内容 第二个参数是key值 下面做了一个运算对key进行了第二次加密赋值给v1 然后根据这个key用AES算法对内容进行加密得到最终的密文,然后服务器端进行base64加密,到这里就明白了,原来刚刚得到的不是真正的key啊 既然知道了v1是真正的key,加密方式是AES 那么就可以根据这个key去解密加密的内容了这样的话 思路又来了 既然真正的key是根据上一个key去做了一个算法 那么我就可以把它的算法抠出来 自己写一个Demo获取真正的key值 然后根据这个key值调用AES解密算法 就得到了解密后的内容。下面是程序运行图:

–官方论坛

www.52pojie.cn

–推荐给朋友

发表评论

登录后才能评论