Add struct member at offset

Hi,

One of the most time-consuming tasks in reverse engineering is figuring out struct layouts. I’d like to suggest an improvement for IDA.

Currently, if a variable uses a struct type but references members that don’t exist yet, IDA shows something like [rax+(test.field_1+23h)]. Fixing this requires manually updating the struct in Local Types. A GUI action like “Define struct member at referenced offset” directly from the disassembly would be very helpful, with a warning if it overwrites an existing member.

Binary Ninja, for example, shows all offset references—including non-existing members—and lets you populate them in just two clicks. IDA can create new structs for the current function, but can’t update existing ones the same way. Selecting a range, pressing T, choosing a register, and “Add missing fields” works (sometimes it treats gap as declared member though), but it’s still slow by modern standards. Adding this feature would make struct editing much smoother. IDA is the most advanced reverse engineering tool, but struct handling feels outdated compared to the competition.

2 Likes

Hi @yuiozank,

Thanks again for the detailed feedback. The good news is that we’ve already added this to our roadmap, so stay tuned for the upcoming releases.
Meanwhile, you may find the hrtng plugin helpful.

1 Like