【技术实现步骤摘要】
被调用库函数的解析方法、装置、计算机设备及存储介质
[0001]本专利技术涉及应用程序调试
,具体涉及一种被调用库函数的解析方法
、
装置
、
计算机设备及存储介质
。
技术介绍
[0002]Ltrace
是一个功能非常强大的用户空间程序,利用
ltrace
可以诊断和调试目标程序的目标进程,通过将目标进程绑定为
ltrace
的子进程,
ltrace
就可以跟踪目标进程,控制目标进程的运行停止,解析打印目标进程的被调用库函数的参数和返回值等信息
。
[0003]然而,
ltrace
只可以解析隐式调用的库函数,而无法解析显示调用的库函数
。
这是因为,通过隐式调用的库函数属于外部符号,外部符号记录在
ELF(Executable and Linkable Format
,一种可行性的目标文件格式
)
文件的
.rel.plt
段中,通过解析
ELF
文件的
.rel.plt
段可以获取库函数的间接地址,在这个间接地址上就可以打上断点,然后触发该断点并解析打印其参数和返回值等信息
。
而显示调用的库函数,在运行时直接获取字符串函数地址,在编译期的
ELF
文件中并没有对应的段符号,所有没有办法添加函数断点,导致解析打印其参数和返回值等信息
。
...
【技术保护点】
【技术特征摘要】
1.
一种被调用库函数的解析方法,其特征在于,所述方法包括:当目标程序调用库函数并触发入口断点时,判断被调用库函数是否为预设类型函数;在所述被调用库函数是所述预设类型函数的情况下,对所述被调用库函数进行第一处理,得到所述被调用库函数的相关参数;在所述被调用库函数不是所述预设类型函数或已对所述调用库函数进行所述第一处理的情况下,设置出口断点,获取所述被调用库函数的相关信息;当所述被调用库函数执行完毕并触发所述出口断点时,获取所述被调用库函数的返回值,基于所述相关参数设置注入程序,其中,所述注入程序用于后续调用所述预设类型函数时,解析所述预设类型函数
。2.
根据权利要求1所述的方法,其特征在于,在所述当目标程序调用库函数并触发入口断点时,判断被调用库函数是否为预设类型函数之前,所述方法还包括:将所述目标程序绑定到测试程序,其中,所述测试程序用于控制所述目标程序;将所述目标程序的进程作为子进程,将所述测试程序的进程作为父进程,其中,所述父进程用于控制所述子进程;利用所述父进程获取所述子进程的目标文件,并根据所述目标文件中的段信息,得到所述子进程的第一目标参数;利用所述父进程获取所述子进程的运行地址,并根据所述运行地址计算第二目标参数;将所述第一目标参数和所述第二目标参数加入中断列表,并根据所述中断列表设置所述入口断点
。3.
根据权利要求2所述的方法,其特征在于,所述判断被调用库函数是否为预设类型函数,包括:利用所述父进程获取所述子进程的控制权;在所述父进程获取所述子进程的所述控制权之后,获取所述子进程的堆栈信息;解析所述堆栈信息,得到调用函数参数信息;根据所述调用函数参数信息判断所述被调用库函数是否为预设类型函数
。4.
根据权利要求3所述的方法,其特征在于,所述预设类型函数包括第一预设函数和第二预设函数,所述在所述被调用库函数是所述预设类型函数的情况下,对所述被调用库函数进行第一处理,得到所述被调用库函数的相关参数,包括:在所述被调用库函数是所述第一预设函数的情况下,获取用于确定调用所述第一预设函数需要打开库的第一参数,并解析所述库,得到所述库的导出符号的第一数量;在所述被调用库函数是所述第二预设函数的情况下,获取用于确定调用所述第二预设函数需要打开库的第一参数和第二参数,并保存所述第二预设函数对应的第一参数和所述第二参数,其中,所述第二参数用于确定函数名称
。5.
根据权利要求4所述的方法,其特征在于,所述基于所述相关参数设置注入程序,包括:判断所述被调用库函数是否为所述第一预设函数
、
所述第二预设函数或第三预设函数;在所述被调用库函数是所述第一预设函数的情况下,利用所述父进程创建包含第一数
量个第一表格和第二表格的所述注入程序,其中,所述注入程序用于解析所述被调用库函数,所述第一表格和所述第二表格用于确定所述被调用库函数的函数地址,所述第一表格中每一个表项指向所述第二表格中对应的表项;将所述注入程序注入所述子进程的进程空间,并获...
【专利技术属性】
技术研发人员:乔成,
申请(专利权)人:山东云海国创云计算装备产业创新中心有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。