Skip to content
This repository was archived by the owner on Aug 13, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,9 @@ import urllib2; exec(urllib2.urlopen('https://raw.githubusercontent.com/fidgetin
To enable the integrated server, you can choose "Integrated Server" after right-clicking
the IDArling widget located in the status bar.

The integrated server requires PyQt5, which is integrated into IDA. If you're
The integrated server requires PySide6, which is integrated into IDA. If you're
using an external Python installation, we recommand using Python 3, which offers
a pre-built package that can be installed with a simple `pip install PyQt5`.
a pre-built package that can be installed with a simple `pip install PySide6`.

## Connection to server and usage

Expand Down
4 changes: 2 additions & 2 deletions idarling/core/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import ida_netnode
import ida_typeinf

from PyQt5.QtCore import QCoreApplication, QFileInfo # noqa: I202
from PySide6.QtCore import QCoreApplication, QFileInfo # noqa: I202

from .hooks import HexRaysHooks, IDBHooks, IDPHooks, UIHooks
from ..module import Module
Expand Down Expand Up @@ -121,7 +121,7 @@ def tick(self, tick):
self.save_netnode()

def update_local_types_map(self):
for i in range(1, ida_typeinf.get_ordinal_qty(ida_typeinf.get_idati())):
for i in range(1, ida_typeinf.get_ordinal_count(ida_typeinf.get_idati())):
t = ImportLocalType(i)
self.local_type_map[i] = t

Expand Down
85 changes: 44 additions & 41 deletions idarling/core/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import sys

import ida_bytes
import ida_enum
import ida_funcs
import ida_hexrays
import ida_idaapi
Expand All @@ -28,7 +27,6 @@
import ida_range
import ida_segment
import ida_segregs
import ida_struct
import ida_typeinf
import ida_ua
import ida_idc
Expand Down Expand Up @@ -115,7 +113,7 @@ def __init__(self, ea, flags, size, sname):
self.sname = sname

def __call__(self):
ida_bytes.create_data(self.ea, ida_bytes.calc_dflags(self.flags, True), self.size, ida_struct.get_struc_id(self.sname) if self.sname else ida_netnode.BADNODE)
ida_bytes.create_data(self.ea, ida_bytes.calc_dflags(self.flags, True), self.size, idc.get_struc_id(self.sname) if self.sname else ida_netnode.BADNODE)


class RenamedEvent(Event):
Expand All @@ -133,8 +131,13 @@ def __call__(self):
self.ea, self.new_name, flags | ida_name.SN_NOWARN
)
ida_kernwin.request_refresh(ida_kernwin.IWID_DISASMS)
ida_kernwin.request_refresh(ida_kernwin.IWID_STRUCTS)
ida_kernwin.request_refresh(ida_kernwin.IWID_STKVIEW)

if hasattr(ida_kernwin, "IWID_STRUCTS"):
ida_kernwin.request_refresh(ida_kernwin.IWID_STRUCTS)
else:
ida_kernwin.refresh_idaview_anyway()

HexRaysEvent.refresh_pseudocode_view(self.ea)


Expand Down Expand Up @@ -295,7 +298,7 @@ def __call__(self):
py_type = py_type[1:]
if len(py_type) >= 2:
if self.name:
r = ida_struct.get_member_by_fullname(self.name)
r = idc.get_member_by_fullname(self.name)
if r:
self.ea = r[0].id
ida_typeinf.apply_type(
Expand Down Expand Up @@ -404,14 +407,14 @@ def __call__(self):
if self.op == "offset":
ida_offset.op_plain_offset(self.ea, self.n, 0)
if self.op == "enum":
id = ida_enum.get_enum(self.extra["ename"])
id = idc.get_enum(self.extra["ename"])
ida_bytes.op_enum(self.ea, self.n, id, self.extra["serial"])
if self.op == "struct":
path_len = len(self.extra["spath"])
path = ida_pro.tid_array(path_len)
for i in range(path_len):
sname = self.extra["spath"][i]
path[i] = ida_struct.get_struc_id(sname)
path[i] = idc.get_struc_id(sname)
insn = ida_ua.insn_t()
ida_ua.decode_insn(insn, self.ea)
ida_bytes.op_stroff(
Expand All @@ -433,7 +436,7 @@ def __init__(self, enum, name):
self.name = name

def __call__(self):
ida_enum.add_enum(self.enum, self.name, 0)
idc.add_enum(self.enum, self.name, 0)


class EnumDeletedEvent(Event):
Expand All @@ -444,7 +447,7 @@ def __init__(self, ename):
self.ename = ename

def __call__(self):
ida_enum.del_enum(ida_enum.get_enum(self.ename))
idc.del_enum(idc.get_enum(self.ename))


class EnumRenamedEvent(Event):
Expand All @@ -458,11 +461,11 @@ def __init__(self, oldname, newname, is_enum):

def __call__(self):
if self.is_enum:
enum = ida_enum.get_enum(self.oldname)
ida_enum.set_enum_name(enum, self.newname)
enum = idc.get_enum(self.oldname)
idc.set_enum_name(enum, self.newname)
else:
emem = ida_enum.get_enum_member_by_name(self.oldname)
ida_enum.set_enum_member_name(emem, self.newname)
emem = idc.get_enum_member_by_name(self.oldname)
idc.set_enum_member_name(emem, self.newname)


class EnumBfChangedEvent(Event):
Expand All @@ -474,8 +477,8 @@ def __init__(self, ename, bf_flag):
self.bf_flag = bf_flag

def __call__(self):
enum = ida_enum.get_enum(self.ename)
ida_enum.set_enum_bf(enum, self.bf_flag)
enum = idc.get_enum(self.ename)
idc.set_enum_bf(enum, self.bf_flag)


class EnumCmtChangedEvent(Event):
Expand All @@ -488,9 +491,9 @@ def __init__(self, emname, cmt, repeatable_cmt):
self.repeatable_cmt = repeatable_cmt

def __call__(self):
emem = ida_enum.get_enum_member_by_name(self.emname)
emem = idc.get_enum_member_by_name(self.emname)
cmt = self.cmt if self.cmt else ""
ida_enum.set_enum_cmt(emem, cmt, self.repeatable_cmt)
idc.set_enum_cmt(emem, cmt, self.repeatable_cmt)


class EnumMemberCreatedEvent(Event):
Expand All @@ -504,8 +507,8 @@ def __init__(self, ename, name, value, bmask):
self.bmask = bmask

def __call__(self):
enum = ida_enum.get_enum(self.ename)
ida_enum.add_enum_member(
enum = idc.get_enum(self.ename)
idc.add_enum_member(
enum, self.name, self.value, self.bmask
)

Expand All @@ -521,8 +524,8 @@ def __init__(self, ename, value, serial, bmask):
self.bmask = bmask

def __call__(self):
enum = ida_enum.get_enum(self.ename)
ida_enum.del_enum_member(enum, self.value, self.serial, self.bmask)
enum = idc.get_enum(self.ename)
idc.del_enum_member(enum, self.value, self.serial, self.bmask)


class StrucCreatedEvent(Event):
Expand All @@ -535,7 +538,7 @@ def __init__(self, struc, name, is_union):
self.is_union = is_union

def __call__(self):
ida_struct.add_struc(
idc.add_struc(
ida_idaapi.BADADDR, self.name, self.is_union
)

Expand All @@ -548,8 +551,8 @@ def __init__(self, sname):
self.sname = sname

def __call__(self):
struc = ida_struct.get_struc_id(self.sname)
ida_struct.del_struc(ida_struct.get_struc(struc))
struc = idc.get_struc_id(self.sname)
idc.del_struc(idc.get_struc(struc))


class StrucRenamedEvent(Event):
Expand All @@ -561,8 +564,8 @@ def __init__(self, oldname, newname):
self.newname = newname

def __call__(self):
struc = ida_struct.get_struc_id(self.oldname)
ida_struct.set_struc_name(struc, self.newname)
struc = idc.get_struc_id(self.oldname)
idc.set_struc_name(struc, self.newname)


class StrucCmtChangedEvent(Event):
Expand All @@ -576,16 +579,16 @@ def __init__(self, sname, smname, cmt, repeatable_cmt):
self.repeatable_cmt = repeatable_cmt

def __call__(self):
struc = ida_struct.get_struc_id(self.sname)
sptr = ida_struct.get_struc(struc)
struc = idc.get_struc_id(self.sname)
sptr = idc.get_struc(struc)
cmt = self.cmt if self.cmt else ""
if self.smname:
mptr = ida_struct.get_member_by_name(
mptr = idc.get_member_by_name(
sptr, self.smname
)
ida_struct.set_member_cmt(mptr, cmt, self.repeatable_cmt)
idc.set_member_cmt(mptr, cmt, self.repeatable_cmt)
else:
ida_struct.set_struc_cmt(sptr.id, cmt, self.repeatable_cmt)
idc.set_struc_cmt(sptr.id, cmt, self.repeatable_cmt)


class StrucMemberEvent(Event):
Expand All @@ -594,14 +597,14 @@ class StrucMemberEvent(Event):
"""
@staticmethod
def _get_sptr(struct_name):
struc_id = ida_struct.get_struc_id(struct_name)
return ida_struct.get_struc(struc_id)
struc_id = idc.get_struc_id(struct_name)
return idc.get_struc(struc_id)

@staticmethod
def _get_member_type(type_flag, extra):
mt = ida_nalt.opinfo_t()
if ida_bytes.is_struct(type_flag):
mt.tid = ida_struct.get_struc_id(extra['struc_name'])
mt.tid = idc.get_struc_id(extra['struc_name'])
if type_flag & ida_bytes.off_flag():
mt.ri = ida_nalt.refinfo_t()
mt.ri.init(
Expand Down Expand Up @@ -635,7 +638,7 @@ def __init__(self, sname, fieldname, offset, flag, nbytes, extra):
def __call__(self):
sptr = self._get_sptr(self.sname)
mt = self._get_member_type(self.flag, self.extra)
ida_struct.add_struc_member(
idc.add_struc_member(
sptr,
self.fieldname,
self.offset,
Expand All @@ -659,7 +662,7 @@ def __init__(self, sname, soff, eoff, flag, extra):
def __call__(self):
sptr = self._get_sptr(self.sname)
mt = self._get_member_type(self.flag, self.extra)
ida_struct.set_member_type(
idc.set_member_type(
sptr, self.soff, self.flag, mt, self.eoff - self.soff
)

Expand All @@ -674,7 +677,7 @@ def __init__(self, sname, offset):

def __call__(self):
sptr = self._get_sptr(self.sname)
ida_struct.del_struc_member(sptr, self.offset)
idc.del_struc_member(sptr, self.offset)


class StrucMemberRenamedEvent(StrucMemberEvent):
Expand All @@ -688,7 +691,7 @@ def __init__(self, sname, offset, newname):

def __call__(self):
sptr = self._get_sptr(self.sname)
ida_struct.set_member_name(
idc.set_member_name(
sptr, self.offset, self.newname
)

Expand All @@ -703,9 +706,9 @@ def __init__(self, sname, offset, delta):
self.delta = delta

def __call__(self):
struc = ida_struct.get_struc_id(self.sname)
sptr = ida_struct.get_struc(struc)
ida_struct.expand_struc(sptr, self.offset, self.delta)
struc = idc.get_struc_id(self.sname)
sptr = idc.get_struc(struc)
idc.expand_struc(sptr, self.offset, self.delta)


class SegmAddedEvent(Event):
Expand Down
Loading