Skip to content

Instantly share code, notes, and snippets.

@yarienkiva
Created July 12, 2025 01:52
Show Gist options
  • Select an option

  • Save yarienkiva/2f9ecd30fa52dd2c72049ec759a28a72 to your computer and use it in GitHub Desktop.

Select an option

Save yarienkiva/2f9ecd30fa52dd2c72049ec759a28a72 to your computer and use it in GitHub Desktop.
import idaapi
import idautils
import ida_hexrays
jnienv_tinfo = idaapi.tinfo_t()
idaapi.parse_decl(jnienv_tinfo, idaapi.cvar.idati, "JNIEnv *env;", 0)
for func_ea in idautils.Functions():
name = idaapi.get_name(func_ea)
if not name.startswith("Java_"):
continue
print(f"{name}: {idaapi.print_type(func_ea, idaapi.PRTYPE_1LINE)}", end="...")
ida_hexrays.open_pseudocode(func_ea, idaapi.OPF_REUSE)
tif = idaapi.tinfo_t()
if not idaapi.get_tinfo(tif, func_ea):
print("KO! (couldn't get tinfo)")
continue
funcdata = idaapi.func_type_data_t()
if not tif.get_func_details(funcdata):
print("KO! (couldn't get func details)")
continue
if not len(funcdata):
print("KO! (func has no parameters)")
continue
funcdata[0].type = jnienv_tinfo
funcdata[0].name = "env"
new_tif = idaapi.tinfo_t()
new_tif.create_func(funcdata)
idaapi.apply_tinfo(func_ea, new_tif, idaapi.TINFO_DEFINITE)
print("OK!")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment