Skip to content

address changes in the config_t structure on IDA 93#57

Open
yeggor wants to merge 6 commits intomasterfrom
update/ida93-license-manager
Open

address changes in the config_t structure on IDA 93#57
yeggor wants to merge 6 commits intomasterfrom
update/ida93-license-manager

Conversation

@yeggor
Copy link
Contributor

@yeggor yeggor commented Jan 22, 2026

I tested idalib on the recently released IDA 93 Beta 2 (Version 9.3.260119.bd658ba9).

It was not working due to the changes in the structures related to license checking logic.
The changes were minor, related to config_t (similar to previous update).

As we can see from the pseudocode below, with the changes applied, the logic resolves correctly in libida:

  memset(&qerror, 0, sizeof(qerror));
  license_manager = get_license_manager(v6);
  license_res = license_manager->_vtbl->check_license_params(license_manager, 0, 0);
  if ( license_res && license_res->is_ok )
    goto _exit;
  license_location = get_config()->license_location;
  config0 = get_config();
  license_info = config0->license_info;
  if ( (debug & 0x200) != 0 )
  {
    get_license_str(config0->license_info->lid, &qinfo);
    license = qinfo.n ? qinfo.body : &g_qstring_nullstr;
    callui_msg("Attempting to acquire license: %s\n", license);
    if ( qinfo.body )
    {
      qinfo.n = 0;
      qfree(qinfo.body);
    }
  }
  if ( !license_manager->_vtbl->get_or_borrow_license(license_manager, license_location, license_info, 16, &qerror) )
    goto _exit;
  if ( (g_error_debug & 0xFFFFFFFE) == 2 )
  {
    if ( qerror.n )
      body = qerror.body;
    else
      body = &g_qstring_nullstr;
    result = msg("Failed to retrieve license: %s", body);
    goto _exit_with_err;
  }
  callui(ui_process_action);
  if ( !license_manager->_vtbl->check_license_params(license_manager, 0, 0) )
  {
    result = msg("Cannot continue without a valid license");
_exit_with_err:
    __break(1u);
    return result;
  }

The changes have been tested on macos/linux/windows.

Also, starting with version 9.3, hex-rays provides "armlinux" installers, however libraries are not yet available in releases/9.3.0-beta branch: https://github.com/HexRaysSA/ida-sdk/tree/53900700e45498ccff48edadf6b495c9be2532ae/src/lib. But I verified statically that uint8_t _skip_a[0x2a0]; will work for it (structures are matches between x86-64/AArch64).

@yeggor yeggor marked this pull request as ready for review February 13, 2026 22:28
@yeggor
Copy link
Contributor Author

yeggor commented Feb 13, 2026

@xorpse I've updated the ida-sdk submodule and tested changes with the 9.3.260213.91fc47de released today (macos/windows/linux-x86). We still can't test it with IDA Pro Linux ARM64 9.3 because libraries were not released: https://github.com/HexRaysSA/ida-sdk/tree/d5db59ab4e9d2ae92038e9520082affd0da6fe20/src/lib.

Linking the issue in ida-sdk: HexRaysSA/ida-sdk#32.

@xorpse
Copy link
Member

xorpse commented Feb 14, 2026

I think we can still move to make an initial release--this one would be a new platform anyway, so it's unlikely to affect any current users. I propose to do a quick release with the support we have, then make a follow-up with additional support and #46 once it's ready. After that, we can do a major release with the mutability rework.

@yeggor
Copy link
Contributor Author

yeggor commented Feb 14, 2026

Yeah sounds good

@yeggor yeggor requested a review from xorpse February 16, 2026 14:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants