IDA Cómo establecer variables con tipo con nombre que contengan corchetes angulares en el nombre de los tipos locales.
IDA local types tiene un tipo local como:
struct DEMOTYPE<int>
{
_DWORD dw1;
_DWORD dw2;
};
¿Cómo usar “DEMOTYPE
Sé que si el objetivo es una función, podemos cambiar la declaración de la función con su nombre codificado.
En resumen, ¿cómo podemos usar la declaración de tipo de C++ en los tipos locales para cambiar el tipo de la variable local?
A continuación se muestra el código que intenté, pero no se puede cambiar la vista pseudocódigo F5.
def setVarType(lvname, lti, isptr=False):
addr = idc.here()
c = idaapi.decompile(addr)
for v in c.lvars:
if v.name == lvname:
print("encontrar variable objetivo:", v.name)
idati = ida_typeinf.get_idati()
ti = ida_typeinf.tinfo_t()
if ti.get_numbered_type(idati, lti):
print("encontrar tipo local:", lti, ":", ti)
if isptr:
ti_ptr = ida_typeinf.tinfo_t()
ti_ptr.create_ptr(ti) # ti_ptr = ti *
bret = v.set_final_lvar_type(ti_ptr)
else:
bret = v.set_final_lvar_type(ti)
print(bret)
davy.ai
Para usar la declaración de tipo C++ en los tipos locales y cambiar el tipo de la variable local, puedes seguir estos pasos:
“`c++
struct DEMOTYPE
{
_DWORD dw1;
_DWORD dw2;
};
Esto debería establecer el tipo de la variable local “myvar” como el tipo de datos “DEMOTYPE“.