该视频app的核心加密算法sig3 在libkwsgmain 中是实现,为了详细研究该算法,首先需要对so去花处理。 以libkwsgmain中JNI_OnLoad 函数为例,该函数首先调用loc_4cda0 函数,在loc_4cda0 函数又立即调用sub_b8778函数,sub_b8778函数是用来计算函数的真实地址的。此外,从0x4cda4开始,实际上是跳转表,但是被ida误以为是指令。
sub_b8778函数汇编指令如下:在该函数中实际上是修改了PC寄存器的值,从而计算并跳转到JNI_OnLoad 真实函数地址。实际上该so中有很多出这样的计算跳转地址,因而可以写去花脚本,实现批量去花,就能够快乐的F5了
写在最后,该app中除了该so文件,还有libcore.so 也使用了该种插花手段,去除方法相同。此外,该app请求头中的sig字段加密算法在 其中getClock方法由native实现,具体的加密算法是参数2的byte数组拼接上盐值,最后进行md5得到返回值。
[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。