For a few versions I had issues running IDA Pro in Crossover with IDAPython enabled. Prior to the starting issues, everything worked fine, e.g. in the IDA 6.x version range. Please note that the setup of IDA Pro also succeeded with 7.x versions, but the program would crash and write a minidump whenever it started (provided it was installed with a Python it could detect).
Finally I got around to fixing the underlying issue (meanwhile I tested it with subsequent versions, see bottom of this post).
The steps are as follows:
- Create a Windows 10 64-bit bottle in Crossover
- (Optional!) Using “Run Command…” to start Wine’s
regedit
disable audio for the bottle by creating a keyHKEY_CURRENT_USER\Software\Wine\Drivers
with an emptyREG_SZ
(string) value namedAudio
- Next use “Install” searching for “IDA Pro – Interactive Disassembler” 1 in the first step, picking the IDA installer, e.g.
idapronw_*_*.exe
, in the second and selecting the prepared bottle in the third, then finishing the installation- Follow the steps of the IDA Setup, leaving the defaults until the step following the installation password prompt
- When it offers “Install Python 3” (the current default), uncheck that checkbox and proceed to the installation step with the progress bar
- DO NOT be alarmed when after the installation concludes you get to see “The configuration failed with the following output:” complaining “No Python installations were found” — we are going to fix this part soon enough
- The next step will claim success anyway
- (Optional!) For giggles you can now start the freshly installed IDA — it should work fine, but without IDAPython active
- (Optional!) Back in Crossover under “Edit Menus” uncheck the “Uninstall IDA …” item as well as the two other items from the start menu, without the IDA version number; only leaving the two items from the Desktop
- Next, download the Python 64-bit installer (e.g.
python-3.10.1-amd64.exe
) and install it into the bottle using “Run Command…”- Enable the “Add Python … to PATH” option on the initial setup wizard screen
- Then click the “Customize installation” button
- Leaving everything as is on the next page, proceed with “Next”
- In the “Advanced Options” step check the “Install for all users” checkbox, which will alter the installation path to go into
%ProgramFiles%
- Proceed with the installation
and wait for it to finish
- (Optional!) Back in Crossover under “Edit Menus” for the current bottle, I get rid of the IDLE entry, just leaving the Python, Manuals and Module Docs be
- Start the freshly installed IDA (64-bit) — it should work fine, but without IDAPython active
- Now comes the crucial final step, starting
regedit
using “Run Command…”, head to the IDA key (HKEY_CURRENT_USER\Software\Hex-Rays\IDA
) and create aREG_SZ
(string) value namedPython3TargetDLL
and containing the full path to thepython3.dll
inside the bottle, e.g.C:\Program Files\Python310\python3.dll
for Python 3.10.x!
NB: refrain from usingpython310.dll
. Picking it appears to be part of the trouble!
The outcome should look somewhat akin to this:
// Oliver
NB: These instructions were tested with IDA Pro 7.6 SP1 (+ Python 3.8 + Python 3.10.0) and with IDA Pro 7.7 (+ Python 3.10.1) on Crossover 21 … and were tested again with IDA Pro 8.0 SP1 (+ Python 3.10.6) on Crossover 22 and IDA Pro 8.1 and 8.2 (+ 3.10) on Crossover 22.0.1 (does not work with Python 3.11) and IDA Pro 8.3 (+ 3.11) on Crossover 22.1.1 and IDA 8.4 (+ 3.10) on Crossover 24.0.0
PS: Once done, make sure to run /opt/cxoffice/bin/cxassoc --sync --bottle IDA
… the outcome should look about like this when editing associations:
The $BOTTLEPATH/cxassoc.conf
will contain the following entries:
[.i64] "Mode" = "default" "MimeType" = "" "Description" = "IDA (64-bit) Database" "AppName" = "The Interactive Disassembler" "Type" = "Windows" [.idb] "Mode" = "default" "MimeType" = "" "Description" = "IDA (32-bit) Database" "AppName" = "The Interactive Disassembler" "Type" = "Windows"
- You could also use “Unlisted Application” here, but picking the above will allow the associations for
.idb
and.i64
to work [↩]