从 IDAPython 更改调用约定?

逆向工程 蟒蛇 调用约定
2021-06-14 20:08:42

我有一个 64 位 Mach-O 示例,它使用 System V AMD64 ABI 调用约定(rdi、rsi、rdx、rcx...);但 IDA 认为所有函数都使用 cdecl。我是 IDA 脚本的新手,但在文档中没有找到任何信息。我的目标是将所有函数类型转换为:

type __usercall function<rax>(type name0<rdi>, type name1<rsi>, ...)

相关:有没有办法从函数定义中读取参数和/或参数数量?

2个回答

使用idc.SetType(请参阅此处的文档 )它的工作原理与在函数上按 y 并定义类型完全相同,但您必须在类型定义的末尾添加分号。

没有必要做任何事情。对于 x64 Mach-O 和 ELF 文件,cdecl 与 fastcall 相同,表示 SysV AMD64 ABI。