现在国内除了斗鱼,熊猫等大的直播平台以外,还有很多的小平台,小平台技术有限,今天拿一个app示例
一般未加密的直播地址,直接用fidder就可以抓取到地址,但一些安全性较高的返回的地址是经过加密的,今天就来解密下某直播(你懂得)的地址(这个平台早gg了).
下面就是返回的直播地址:我把域名信息用xxxx代替了,域名也是加密的
"play_rtmp": "xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxxxxx/rdxpYmpF6utXgBD14++BRKmyz2Qbm9rjYjtrKLRtHHJUFzP/RlkbeUwvhggSbhQZDy5tu/jiBmF7tNdws7xJfT3y6ZgxPX1QFM=",
思路:上面的地址很显然是经过加密的,播放器是识别不了加密的地址的,这个地址肯定要在app里面解密后传给播放器,播放器才可以播放,解密的方法就藏在app里面.\
直接反编译app,app没有加固也没有代码混淆,很轻松,接着就是在里面找加密解密的部分了,用关键字很快找到了:
String str = decrypt(OhKids.kids(), paramString);
这就是解密方法了,点进去一看便傻眼了
public static native String kids();
是个native方法,加密解密在jni里面,so文件反编译想想都头大,不过还有其他方法.
你不是把加密解密放在so文件里吗?我直接把你的so文件拿过来用就得了,管你里面方法怎么写的,这个so文件你能用,我也能用.
建立目录libs/armeabi直接把反编译过来的对应的so文件放进去,然后回到activity里面用反编译过来的解密方法直接调用native方法,放入模拟器运行,将加密的地址放进去,点解密真实地址出来了: