我有一个 64 位 Mach-O 示例,它使用 System V AMD64 ABI 调用约定(rdi、rsi、rdx、rcx...);但 IDA 认为所有函数都使用 cdecl。我是 IDA 脚本的新手,但在文档中没有找到任何信息。我的目标是将所有函数类型转换为:
type __usercall function<rax>(type name0<rdi>, type name1<rsi>, ...)
相关:有没有办法从函数定义中读取参数和/或参数数量?
我有一个 64 位 Mach-O 示例,它使用 System V AMD64 ABI 调用约定(rdi、rsi、rdx、rcx...);但 IDA 认为所有函数都使用 cdecl。我是 IDA 脚本的新手,但在文档中没有找到任何信息。我的目标是将所有函数类型转换为:
type __usercall function<rax>(type name0<rdi>, type name1<rsi>, ...)
相关:有没有办法从函数定义中读取参数和/或参数数量?
使用idc.SetType(请参阅此处的文档 )它的工作原理与在函数上按 y 并定义类型完全相同,但您必须在类型定义的末尾添加分号。
没有必要做任何事情。对于 x64 Mach-O 和 ELF 文件,cdecl 与 fastcall 相同,表示 SysV AMD64 ABI。