【发布时间】:2020-06-06 19:26:38
【问题描述】:
我一直在尝试使用 IDAPython API 来调整脚本中的编译器设置,但我似乎无法让任何函数正常工作。我尝试过的一些事情:
1.
Python>SetLongPrm(INF_COMPILER, COMP_MS)
这让我将编译器 id 设置为正确的值,但由于某种原因,它将所有其他编译器相关值设置为 0 或类似的值。给我一个关于指针大小不正确且 int 大小不是有效值的错误。
2.
Python>idaapi.set_compiler_id(2)
False
这直接行不通,但这可能会与第一个命令相同。
3.
class compiler_info_t(object):
id = COMP_MS
cm = 0x3 | 0x00 | 0x30
size_i = 4
size_b = 1
size_e = 4
defalign = 0
size_s = 2
size_l = 4
size_ll = 8
def __init__(self, *args):
"""
__init__(self) -> compiler_info_t
"""
this = _idaapi.new_compiler_info_t(*args)
try: self.this.append(this)
except: self.this = this
我最后一次尝试是尝试制作我自己的 compiler_info_t 对象以传递给 idaapi.set_compiler(),但由于“_idaapi”不是我可以正常导入的模块,它不会让我调用 new_compiler_info_t()。
问题: 有没有办法单独设置/修复指针大小、内存模型和调用约定的编译器值? 如果没有,是否有其他方法可以完全调整编译器,类似于在编译器设置窗口中手动更改它的功能?
【问题讨论】: