记一次利用动态调试so包破解协议 (2)

22 篇文章 0 订阅
5 篇文章 0 订阅

继续上一篇https://blog.csdn.net/u014476720/article/details/83650566的操作

上一篇只分析出so包里面的 buildParam2 里面的加密方式,这一篇来看看buildParam1的加密方式

这里分析是已用户主页的接口

对应在分析buildParam1里面的加密方式的时候比较坑,可能是工具的原因,又或者是开发者设置的阻碍吧

ida打印的:

frida 打印出来的:

两个工具  =  后面都是有其他数据,直接拿内容去加密,很郁闷加密的内容和抓包的数据对不上

静态分析了一下so包,发现了一个可疑的方法返回

用frida 打印看看

返回了固定字符串 “&}ad3Y/=@Lt,"TB5kKX7UF!;}+kLdM.=” 

后来分析了很久,反复打印输出测试,得出加密的固定格式是:

&}ad3Y/=@Lt,\"TB5kKX7UF!;}+kLdM.=  +   内容  +  &}ad3Y/=@Lt,\"TB5kKX7UF!;}+kLdM.=

 

使用的代码

#!/usr/bin/env python
# coding=utf-8
from __future__ import print_function
import frida, sys

rdev = frida.get_remote_device()
session = rdev.attach("cn.mama.cityquan")

native_hook_code = """

   Interceptor.attach(Module.findExportByName("libframework.so" , "sk_get"), {
        onEnter: function(args) {
            send("sk_get value: "+Memory.readCString(args[0]));
        },
        onLeave:function(retval){
            send("sk_get return:"+Memory.readCString(retval));
        }
    });
   
    
    Interceptor.attach(Module.findExportByName("libframework.so" , "md5sum"), {
        onEnter: function(args) {
            send("md5sum value0: " + Memory.readCString(args[0]));
            send("md5sum value1: " + args[1]);
            send("md5sum value2: " + Memory.readCString(args[2]));
        },
        onLeave:function(retval){
            send("return:"+retval);
        }
    });
        
"""


def on_message(message, data):
    print(message)


script = session.create_script(native_hook_code)
script.on('message', on_message)
script.load()
sys.stdin.read()

 

纠结了很久,终于搞定了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值