name: Test
permissions:
contents: read
on:
push:
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: full
jobs:
test-anti-debug:
strategy:
matrix:
os:
- name: linux-amd64
runner: ubuntu-latest
debugger: gdb
- name: linux-arm64
runner: ubuntu-24.04-arm
debugger: gdb
- name: windows-amd64
runner: windows-latest
debugger: gdb
- name: macos-arm64
runner: macos-latest
debugger: lldb
- name: macos-amd64
runner: macos-15-intel
debugger: lldb
fail-fast: false
name: Test anti-debug on ${{ matrix.os.name }} with ${{ matrix.os.debugger }}
runs-on: ${{ matrix.os.runner }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Check rust version
run: rustup --version
- name: Install dependencies on linux
if: ${{ contains(matrix.os.name, 'linux') }}
run: |
sudo apt update
sudo apt-get install -y gdb
- name: Build
run: cargo build --release --example ci_anti_debug
- name: Test disable
run: ./target/release/examples/ci_anti_debug
- name: Test enable
run: ./target/release/examples/ci_anti_debug
env:
ANTI_DEBUG: 1
- name: Test disable with gdb
if: ${{ matrix.os.debugger == 'gdb' }}
shell: bash
run: |
gdb --batch -ex="run" -ex="quit" ./target/release/examples/ci_anti_debug >output.txt 2>&1
cat output.txt
[ $(grep "exited normally" output.txt -c) -eq 1 ] || exit 1
- name: Test enable with gdb
if: ${{ matrix.os.debugger == 'gdb' }}
shell: bash
run: |
gdb --batch -ex="run" -ex="quit" ./target/release/examples/ci_anti_debug >output.txt 2>&1
cat output.txt
[ $(grep "exited normally" output.txt -c) -eq 0 ] || exit 1
env:
ANTI_DEBUG: 1
- name: Test disable with lldb
if: ${{ matrix.os.debugger == 'lldb' }}
shell: bash
run: |
lldb --batch -o "run" -o "quit" -- ./target/release/examples/ci_anti_debug >output.txt 2>&1
cat output.txt
[ $(grep "exited with status = 0 (0x00000000)" output.txt -c) -eq 1 ] || exit 1
- name: Test enable with lldb
if: ${{ matrix.os.debugger == 'lldb' }}
shell: bash
run: |
lldb --batch -o "run" -o "quit" -- ./target/release/examples/ci_anti_debug >output.txt 2>&1
cat output.txt
[ $(grep "exited with status = 0 (0x00000000)" output.txt -c) -eq 0 ] || exit 1
env:
ANTI_DEBUG: 1
test-deny-attach:
strategy:
matrix:
os:
- name: linux-amd64
runner: ubuntu-latest
debugger: gdb
- name: linux-arm64
runner: ubuntu-24.04-arm
debugger: gdb
- name: windows-amd64
runner: windows-latest
debugger: gdb
- name: macos-arm64
runner: macos-latest
debugger: lldb
- name: macos-amd64
runner: macos-15-intel
debugger: lldb
fail-fast: false
name: Test deny-attach on ${{ matrix.os.name }} with ${{ matrix.os.debugger }}
runs-on: ${{ matrix.os.runner }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Check rust version
run: rustup --version
- name: Install dependencies on linux
if: ${{ contains(matrix.os.name, 'linux') }}
run: sudo apt update && sudo apt-get install -y gdb
- name: Build
run: cargo build --release --example ci_deny_attach
- name: Test disable
run: ./target/release/examples/ci_deny_attach
- name: Test enable
run: ./target/release/examples/ci_deny_attach
env:
ANTI_DEBUG: 1
- name: Test disable with gdb
if: ${{ matrix.os.debugger == 'gdb' }}
shell: bash
run: |
gdb --batch -ex="run" -ex="quit" ./target/release/examples/ci_deny_attach >output.txt 2>&1
cat output.txt
[ $(grep "exited normally" output.txt -c) -eq 1 ] || exit 1
- name: Test enable with gdb
if: ${{ matrix.os.debugger == 'gdb' }}
shell: bash
run: |
gdb --batch -ex="run" -ex="quit" ./target/release/examples/ci_deny_attach >output.txt 2>&1
cat output.txt
[ $(grep "exited normally" output.txt -c) -eq 0 ] || exit 1
env:
ANTI_DEBUG: 1
- name: Test disable with lldb
if: ${{ matrix.os.debugger == 'lldb' }}
shell: bash
run: |
lldb --batch -o "run" -o "quit" -- ./target/release/examples/ci_deny_attach >output.txt 2>&1
cat output.txt
[ $(grep "exited with status = 0 (0x00000000)" output.txt -c) -eq 1 ] || exit 1
- name: Test enable with lldb
if: ${{ matrix.os.debugger == 'lldb' }}
shell: bash
run: |
lldb --batch -o "run" -o "quit" -- ./target/release/examples/ci_deny_attach >output.txt 2>&1
cat output.txt
[ $(grep "exited with status = 0 (0x00000000)" output.txt -c) -eq 0 ] || exit 1
env:
ANTI_DEBUG: 1