-
Notifications
You must be signed in to change notification settings - Fork 21
Add GitHub + IDA HCLI setup #37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,307 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: Build IDA Plugin | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| on: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| push: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| branches: [master] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pull_request: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| branches: [master] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| jobs: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| build-linux: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| runs-on: ubuntu-latest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| env: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| HCLI_API_KEY: ${{ secrets.HCLI_API_KEY }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| steps: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Checkout repository | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/checkout@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| submodules: recursive | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Install build dependencies | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sudo apt-get update | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sudo apt-get install -y build-essential cmake ninja-build \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| libgl1-mesa-dev libxcb-xinerama0-dev libxkbcommon-dev \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| libxcb-cursor-dev libxcb-icccm4-dev libxcb-image0-dev \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render-util0-dev \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| libxext-dev libxfixes-dev libxi-dev libxrender-dev libxkbcommon-x11-dev | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Install HCLI | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| run: pip install ida-hcli==0.14.2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Download IDA SDK | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| hcli --disable-updates download release/9.2/sdk-and-utilities/idasdk92.zip | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| unzip -q idasdk92.zip -d ./ida-temp | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| mv ./ida-temp/src ./ida-sdk | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Download and Install IDA Free | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| hcli --disable-updates download release/9.2/ida-free/ida-free-pc_92_x64linux.run | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| chmod +x ida-free-pc_92_x64linux.run | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ./ida-free-pc_92_x64linux.run --mode unattended --prefix ${{ github.workspace }}/ida | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+37
to
+46
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| hcli --disable-updates download release/9.2/sdk-and-utilities/idasdk92.zip | |
| unzip -q idasdk92.zip -d ./ida-temp | |
| mv ./ida-temp/src ./ida-sdk | |
| - name: Download and Install IDA Free | |
| run: | | |
| hcli --disable-updates download release/9.2/ida-free/ida-free-pc_92_x64linux.run | |
| chmod +x ida-free-pc_92_x64linux.run | |
| ./ida-free-pc_92_x64linux.run --mode unattended --prefix ${{ github.workspace }}/ida | |
| set -euo pipefail | |
| hcli --disable-updates download release/9.2/sdk-and-utilities/idasdk92.zip || { echo "ERROR: Failed to download IDA SDK (idasdk92.zip) with hcli."; exit 1; } | |
| if [ ! -f idasdk92.zip ]; then | |
| echo "ERROR: Expected IDA SDK archive 'idasdk92.zip' not found after download." | |
| exit 1 | |
| fi | |
| unzip -q idasdk92.zip -d ./ida-temp || { echo "ERROR: Failed to unzip IDA SDK archive 'idasdk92.zip'."; exit 1; } | |
| if [ ! -d ./ida-temp/src ]; then | |
| echo "ERROR: Expected IDA SDK directory './ida-temp/src' not found after unzip." | |
| exit 1 | |
| fi | |
| mv ./ida-temp/src ./ida-sdk || { echo "ERROR: Failed to move IDA SDK directory from './ida-temp/src' to './ida-sdk'."; exit 1; } | |
| - name: Download and Install IDA Free | |
| run: | | |
| set -euo pipefail | |
| hcli --disable-updates download release/9.2/ida-free/ida-free-pc_92_x64linux.run || { echo "ERROR: Failed to download IDA Free installer with hcli."; exit 1; } | |
| if [ ! -f ida-free-pc_92_x64linux.run ]; then | |
| echo "ERROR: Expected IDA Free installer 'ida-free-pc_92_x64linux.run' not found after download." | |
| exit 1 | |
| fi | |
| chmod +x ida-free-pc_92_x64linux.run || { echo "ERROR: Failed to make IDA Free installer executable."; exit 1; } | |
| ./ida-free-pc_92_x64linux.run --mode unattended --prefix ${{ github.workspace }}/ida || { echo "ERROR: IDA Free installer failed."; exit 1; } |
Copilot
AI
Dec 26, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The HCLI_API_KEY secret is exposed to the entire job environment, which could potentially leak through log outputs or error messages. Consider using the secret only in the specific steps that require it by setting it as an environment variable at the step level rather than the job level, limiting the exposure surface.
Copilot
AI
Dec 26, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Windows build job is missing the IDA installation step that is present in both the Linux (line 41-45) and macOS (line 218-223) jobs. Without IDA installed, the DIDA_INSTALL_DIR CMake variable is not set, which may cause the build to fail if the CMake configuration requires it. Consider adding a step to download and install IDA Free for Windows similar to the other platforms.
Copilot
AI
Dec 26, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The HCLI_API_KEY secret is exposed to the entire job environment, which could potentially leak through log outputs or error messages. Consider using the secret only in the specific steps that require it by setting it as an environment variable at the step level rather than the job level, limiting the exposure surface.
Copilot
AI
Dec 26, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The DIDA_INSTALL_DIR path contains a hardcoded version-specific directory name "IDA Free 9.2.app". This creates a maintenance burden as the path will need to be updated whenever IDA version changes. Consider using a variable or dynamically finding the IDA installation path to make the workflow more maintainable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The HCLI_API_KEY secret is exposed to the entire job environment, which could potentially leak through log outputs or error messages. Consider using the secret only in the specific steps that require it by setting it as an environment variable at the step level rather than the job level, limiting the exposure surface.