某安全SDK协议流分析,在协议分析过程中,发现不少应用在使用时都会出现以5b 00 00 00开头的协议包,猜测可能调用了相同的SO库。故对此进行分析。

我们先尝试从底层hook sendto函数,看能不能打印到这串流的调用堆栈:
Hook代码:
function hook_sendto(){
Interceptor.attach(Module.findExportByName('libc.so', 'sendto'),{
onEnter: function(args){
console.log('sendto'+'\n'+hexdump(args[1], {
offset: 0,
length: args[2].toInt32(),
header: true,
ansi: true
})+'\n'+
Thread.backtrace(this.context, Backtracer.FUZZY).map(DebugSymbol.fromAddress).join('\n') + '\n')
}
})
}
这边就hook到了这个5b 00 00 00 开头的流,发现其是从libclinkapi-lib.so这个库里发出的。

打开IDA,直接g到堆栈里的_ZN15ChannelBusiness4dealEP11ChannelLinkPKci+0xa8处,定位到此处。

进入后,我们先尝试hook该函数,发现有一个参数是上述首包(2b 00 00 00)的内容,猜测该函数下内容可能和我们要分析的流相关

对该函数源码进行分析,源码内容较多,仅张贴重要部分:

[内核课程]《Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。