mirror of
https://github.com/radareorg/iaito.git
synced 2026-11-07 14:38:16 -10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4a8ee1df1a | ||
|
|
3c0efeeb7e | ||
|
|
0bdcf1330b | ||
|
|
6e669c73df | ||
|
|
eacb49c19d | ||
|
|
f91c721c29 | ||
|
|
359e9e99c2 | ||
|
|
84849b76df | ||
|
|
aec953b014 | ||
|
|
495cd1a4e0 | ||
|
|
ce8bbfb897 | ||
|
|
e2802599f9 | ||
|
|
68ff0ad687 | ||
|
|
9e42554405 | ||
|
|
ea975ecdd8 | ||
|
|
e448b3d8b6 | ||
|
|
ef913fcc12 | ||
|
|
face9ca63c | ||
|
|
0aa97752a4 | ||
|
|
97bee62c32 | ||
|
|
91b2dcbe84 | ||
|
|
4567054dde | ||
|
|
16c1f5d928 | ||
|
|
14afa872e2 | ||
|
|
827e86b6a6 | ||
|
|
02a130e1c9 | ||
|
|
36c245f3cb | ||
|
|
9ce1029970 | ||
|
|
f4572ebd3a | ||
|
|
5f5ea915c3 | ||
|
|
c414d25949 | ||
|
|
90745685b8 | ||
|
|
07407f2603 | ||
|
|
e33170f1fe | ||
|
|
d29ecb9832 | ||
|
|
5c34c270e8 | ||
|
|
14166f17af | ||
|
|
836f06f624 | ||
|
|
e296df6661 | ||
|
|
81fa1a5f53 | ||
|
|
05fd2eb752 | ||
|
|
320d63a9a7 | ||
|
|
b8040a7c7f | ||
|
|
e307129c51 | ||
|
|
37611551a6 | ||
|
|
a60fb8ef89 | ||
|
|
6936121560 | ||
|
|
e1b3d54199 | ||
|
|
037ebe09d2 | ||
|
|
3146a1ec93 | ||
|
|
d6655ee136 | ||
|
|
4387a28f28 | ||
|
|
1000025fd1 | ||
|
|
46db1266c0 | ||
|
|
217724f3a8 | ||
|
|
5b99f55bd4 | ||
|
|
6c45fc8897 | ||
|
|
5b198d7cfe | ||
|
|
1d3bf7ddca | ||
|
|
3e6fdd8a18 | ||
|
|
865487d444 | ||
|
|
ce820ba391 | ||
|
|
db8736c102 | ||
|
|
72b89ceecb | ||
|
|
8ab448ea3e | ||
|
|
c557a4653f | ||
|
|
625dc13077 | ||
|
|
1eaa9223be | ||
|
|
f3cde628f1 | ||
|
|
ca8588191f | ||
|
|
8400eb4cce | ||
|
|
e927ce77fe | ||
|
|
a373bcbb2e | ||
|
|
061633e157 | ||
|
|
5310b73d01 | ||
|
|
368c37d519 | ||
|
|
5b1ae7f435 | ||
|
|
9a5a63b29b | ||
|
|
5e797fa380 | ||
|
|
d71e659b0e | ||
|
|
94291239dd | ||
|
|
b2429b241f | ||
|
|
942219f371 | ||
|
|
3d17c96ddc | ||
|
|
14cbc4448b | ||
|
|
0b9dbf2c6d | ||
|
|
7eccea7693 | ||
|
|
caa778b89f | ||
|
|
4505d9c2f2 | ||
|
|
d77ae74e96 | ||
|
|
193320e5dd | ||
|
|
be383c3826 | ||
|
|
b68b0feb24 | ||
|
|
a016642441 | ||
|
|
0a24a2575e | ||
|
|
9b2af5399f | ||
|
|
aa525c04cb | ||
|
|
9871d3b0fc | ||
|
|
85811cb18d | ||
|
|
53df3aeb33 | ||
|
|
01bb0ab306 | ||
|
|
7496b8255b | ||
|
|
8cbe8f2975 | ||
|
|
3e34672e7e | ||
|
|
7d9729bbff | ||
|
|
19435220bf | ||
|
|
86ee0a9cae | ||
|
|
b8c74e073d | ||
|
|
f73ad3216a | ||
|
|
8f773e9c14 | ||
|
|
baf2c363d5 | ||
|
|
82b2351954 |
No files matched your search
+7
-7
@@ -35,7 +35,7 @@ environment:
|
||||
install:
|
||||
- ps: $env:path = ($env:path -split ";").Where({!($_ -like "*Microsoft SQL Server*")}) -join ";"
|
||||
- cmd: C:\msys64\usr\bin\bash -lc "cd $APPVEYOR_BUILD_FOLDER && scripts/fetch_deps.sh"
|
||||
- cmd: set "CUTTER_DEPS_DIR=%APPVEYOR_BUILD_FOLDER%\cutter-deps"
|
||||
- cmd: set "IAITO_DEPS_DIR=%APPVEYOR_BUILD_FOLDER%\cutter-deps"
|
||||
- cmd: set "PATH=%CD%;%PYTHON%;%PATH%"
|
||||
- cmd: call "%VSVARSALLPATH%" %ARCH%
|
||||
- cmd: if "%USE_APPVEYOR_QT%" == "false" ( set "QTPATH=%APPVEYOR_BUILD_FOLDER%\%QTPATH%" )
|
||||
@@ -45,7 +45,7 @@ install:
|
||||
- cmd: where meson.exe
|
||||
- cmd: powershell -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; wget %NINJA_URL% -OutFile ninja.zip; Expand-Archive .\ninja.zip -DestinationPath ."
|
||||
# Artifacts
|
||||
- cmd: set "ARTIFACT_NAME=Cutter-v1.12.0-%ARCH%.Windows"
|
||||
- cmd: set "ARTIFACT_NAME=Iaito-v1.12.0-%ARCH%.Windows"
|
||||
- cmd: if defined MESON ( set "ARTIFACT_PATH=dist_%ARCH%" ) else ( set "ARTIFACT_PATH=build_%ARCH%\cutter" )
|
||||
|
||||
before_build:
|
||||
@@ -56,7 +56,7 @@ before_build:
|
||||
build_script:
|
||||
- cmd: if defined QMAKE ( call prepare_r2.bat )
|
||||
- cmd: if defined QMAKE ( C:\msys64\usr\bin\bash -lc "export PATH=\"/c/msys64/usr/bin:$PATH\" && cd \"$APPVEYOR_BUILD_FOLDER\" && scripts/appveyor_r2ghidra.sh" )
|
||||
- cmd: if defined QMAKE ( call build.bat CUTTER_APPVEYOR_R2DEC=true CUTTER_R2GHIDRA_STATIC=true R2GHIDRA_SOURCE="%APPVEYOR_BUILD_FOLDER%/r2ghidra" R2GHIDRA_INSTALL_PATH="%APPVEYOR_BUILD_FOLDER%/r2_dist/lib/plugins" CUTTER_ENABLE_CRASH_REPORTS=true CUTTER_ENABLE_PYTHON=true CUTTER_ENABLE_PYTHON_BINDINGS=true CUTTER_DEPS_DIR="%CUTTER_DEPS_DIR%" )
|
||||
- cmd: if defined QMAKE ( call build.bat IAITO_APPVEYOR_R2DEC=true IAITO_R2GHIDRA_STATIC=true R2GHIDRA_SOURCE="%APPVEYOR_BUILD_FOLDER%/r2ghidra" R2GHIDRA_INSTALL_PATH="%APPVEYOR_BUILD_FOLDER%/r2_dist/lib/plugins" IAITO_ENABLE_CRASH_REPORTS=true IAITO_ENABLE_PYTHON=true IAITO_ENABLE_PYTHON_BINDINGS=true IAITO_DEPS_DIR="%IAITO_DEPS_DIR%" )
|
||||
- cmd: if defined MESON ( python meson.py --release --dist=%ARTIFACT_PATH% --backend=%BACKEND% --python )
|
||||
|
||||
after_build:
|
||||
@@ -64,9 +64,9 @@ after_build:
|
||||
#- cmd: if defined QMAKE ( C:\msys64\usr\bin\bash -lc "export PATH=\"/c/msys64/usr/bin:$PATH\" && cd \"$APPVEYOR_BUILD_FOLDER\" && scripts/appveyor_r2ghidra.sh" )
|
||||
#- cmd: powershell scripts\bundle_openssl.ps1 %ARCH% "%CD%\%ARTIFACT_PATH%"
|
||||
- cmd: powershell scripts\bundle_python.ps1 %ARCH% "%CD%\%ARTIFACT_PATH%"
|
||||
- cmd: xcopy "%CUTTER_DEPS_DIR%\pyside\lib\site-packages" "%ARTIFACT_PATH%\python36\site-packages" /e /i /h
|
||||
- cmd: copy "%CUTTER_DEPS_DIR%\pyside\bin\shiboken2.abi3.dll" "%ARTIFACT_PATH%\"
|
||||
- cmd: copy "%CUTTER_DEPS_DIR%\pyside\bin\pyside2.abi3.dll" "%ARTIFACT_PATH%\"
|
||||
- cmd: xcopy "%IAITO_DEPS_DIR%\pyside\lib\site-packages" "%ARTIFACT_PATH%\python36\site-packages" /e /i /h
|
||||
- cmd: copy "%IAITO_DEPS_DIR%\pyside\bin\shiboken2.abi3.dll" "%ARTIFACT_PATH%\"
|
||||
- cmd: copy "%IAITO_DEPS_DIR%\pyside\bin\pyside2.abi3.dll" "%ARTIFACT_PATH%\"
|
||||
|
||||
# Tests
|
||||
test: off
|
||||
@@ -77,7 +77,7 @@ artifacts:
|
||||
name: "%ARTIFACT_NAME%"
|
||||
|
||||
deploy:
|
||||
description: 'Cutter binaries'
|
||||
description: 'Iaito binaries'
|
||||
provider: GitHub
|
||||
auth_token:
|
||||
secure: 2SmsqS2RaX2N5c9UwUcfBwNmMX64FfPAZFShLyxIkZXiC8vLaYCHToWxBYEuWRSk
|
||||
|
||||
@@ -4,37 +4,18 @@ about: Create a report to help us improve
|
||||
|
||||
---
|
||||
|
||||
**Environment information**
|
||||
* Operating System:
|
||||
* Cutter version:
|
||||
* Obtained from:
|
||||
- [x] Built from source
|
||||
- [ ] Downloaded release from Cutter website or GitHub
|
||||
- [ ] Distribution repository
|
||||
* File format:
|
||||
## Environment Details
|
||||
|
||||
**Describe the bug**
|
||||
Despite we only fix issues reproducible in git-master branch, it's fine to report issues found in releases. And those will be closed when a new release comes out.
|
||||
|
||||
<!-- A clear and concise description of what the bug is. -->
|
||||
```sh
|
||||
# copypaste this script into your shell and replace it with the output
|
||||
iaito -v
|
||||
date
|
||||
r2 -v
|
||||
uname -ms
|
||||
```
|
||||
|
||||
**To Reproduce**
|
||||
## Description
|
||||
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
|
||||
<!-- A clear and concise description of what you expected to happen. -->
|
||||
|
||||
|
||||
**Screenshots**
|
||||
|
||||
<!-- If applicable, add screenshots to help explain your problem. -->
|
||||
|
||||
|
||||
**Additional context**
|
||||
|
||||
<!-- Add any other context about the problem here. -->
|
||||
<!-- Explain what's the issue, how to repro and what you expect, we love screenshots -->
|
||||
@@ -2,9 +2,9 @@ blank_issues_enabled: false
|
||||
|
||||
contact_links:
|
||||
- name: Questions Telegram
|
||||
url: https://t.me/r2cutter
|
||||
about: Please ask questions about Cutter here or one of the other community channels, not in the issue tracker.
|
||||
url: https://t.me/radare
|
||||
about: Please ask questions about Iaito in the radare telegram or IRC chat
|
||||
|
||||
- name: Questions IRC
|
||||
url: https://webchat.freenode.net/#cutter
|
||||
about: "#cutter on irc.freenode.net"
|
||||
- name: Questions Discord
|
||||
url: https://discord.gg/MgEdxrMnqx
|
||||
about: "Official Discord server"
|
||||
@@ -4,19 +4,6 @@ about: Suggest an idea for this project
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
**Feature Request Description**
|
||||
|
||||
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
|
||||
|
||||
**Describe the solution you'd like**
|
||||
|
||||
<!-- A clear and concise description of what you want to happen.
|
||||
For UI requests, don't hesitate to post some draws. -->
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
|
||||
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
|
||||
|
||||
**Additional context**
|
||||
|
||||
<!-- Add any other context or screenshots about the feature request here. -->
|
||||
<!-- Describe your feature request for iaito only using ascii and jpegs only -->
|
||||
+64
-33
@@ -1,4 +1,4 @@
|
||||
name: r2cutter CI
|
||||
name: iaito CI
|
||||
|
||||
on:
|
||||
push:
|
||||
@@ -9,6 +9,36 @@ on:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
acr-linux-r2git:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true # 'recursive' 'true' or 'false'
|
||||
persist-credentials: false
|
||||
- uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: 3.7.x
|
||||
- name: apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install libgraphviz-dev mesa-common-dev ninja-build
|
||||
sudo apt-get install qt5-default libqt5svg5-dev qttools5-dev qttools5-dev-tools
|
||||
- name: install r2
|
||||
run: |
|
||||
git clone --depth=1 https://github.com/radareorg/radare2 r2git
|
||||
cd r2git && sys/install.sh
|
||||
- name: build iaito
|
||||
run: |
|
||||
./configure --prefix=/usr
|
||||
make -j4
|
||||
- name: packaging
|
||||
run: |
|
||||
make -C dist/debian
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: iaito-amd64.deb
|
||||
path: dist/debian/*/*.deb
|
||||
acr-linux:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
@@ -26,10 +56,10 @@ jobs:
|
||||
sudo apt-get install qt5-default libqt5svg5-dev qttools5-dev qttools5-dev-tools
|
||||
- name: install r2
|
||||
run: |
|
||||
wget -q https://github.com/radareorg/radare2/releases/download/5.1.0/radare2_5.1.0_amd64.deb
|
||||
wget -q https://github.com/radareorg/radare2/releases/download/5.1.0/radare2-dev_5.1.0_amd64.deb
|
||||
wget -q https://github.com/radareorg/radare2/releases/download/5.2.1/radare2_5.2.1_amd64.deb
|
||||
wget -q https://github.com/radareorg/radare2/releases/download/5.2.1/radare2-dev_5.2.1_amd64.deb
|
||||
sudo dpkg -i *.deb
|
||||
- name: build r2cutter
|
||||
- name: build iaito
|
||||
run: |
|
||||
./configure --prefix=/usr
|
||||
make -j4
|
||||
@@ -38,6 +68,7 @@ jobs:
|
||||
make -C dist/debian
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: iaito-amd64.deb
|
||||
path: dist/debian/*/*.deb
|
||||
acr-macos:
|
||||
runs-on: macos-latest
|
||||
@@ -57,20 +88,20 @@ jobs:
|
||||
pip3 install meson
|
||||
- name: install r2
|
||||
run: |
|
||||
wget -q https://github.com/radareorg/radare2/releases/download/5.1.0/radare2-5.1.0.pkg
|
||||
wget -q https://github.com/radareorg/radare2/releases/download/5.2.1/radare2-5.2.1.pkg
|
||||
sudo installer -pkg *.pkg -target /
|
||||
- name: build r2cutter
|
||||
- name: build iaito
|
||||
run: |
|
||||
# export PATH="/usr/local/opt/qt/bin:$PATH" # doesnt seems to be necessary
|
||||
./configure --prefix=/usr
|
||||
./configure
|
||||
make -j4
|
||||
- name: packaging
|
||||
run: |
|
||||
make -C dist/macos
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: r2cutter-5.1.0_macos.pkg
|
||||
path: dist/macos/macos-pkg/*.pkg
|
||||
name: iaito-mac.pkg
|
||||
path: dist/macos/macos-pkg/iaito*.pkg
|
||||
build:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
@@ -115,7 +146,7 @@ jobs:
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: contains(matrix.os, 'ubuntu')
|
||||
with:
|
||||
name: r2cutter-5.1.0_amd64.deb
|
||||
name: iaito_amd64.deb
|
||||
path: dist/debian/*/*.deb
|
||||
- name: cmake ubuntu
|
||||
if: contains(matrix.os, 'ubuntu')
|
||||
@@ -144,19 +175,19 @@ jobs:
|
||||
cmake \
|
||||
-G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCUTTER_ENABLE_PYTHON=ON \
|
||||
-DIAITO_ENABLE_PYTHON=ON \
|
||||
-DPYTHON_LIBRARY="$CUTTER_DEPS_PYTHON_PREFIX/lib/libpython3.6m.so.1.0" \
|
||||
-DPYTHON_INCLUDE_DIR="$CUTTER_DEPS_PYTHON_PREFIX/include/python3.6m" \
|
||||
-DPYTHON_EXECUTABLE="$CUTTER_DEPS_PYTHON_PREFIX/bin/python3" \
|
||||
-DCUTTER_ENABLE_PYTHON_BINDINGS=OFF \
|
||||
-DCUTTER_ENABLE_CRASH_REPORTS=ON \
|
||||
-DCUTTER_USE_BUNDLED_RADARE2=ON \
|
||||
-DIAITO_ENABLE_PYTHON_BINDINGS=OFF \
|
||||
-DIAITO_ENABLE_CRASH_REPORTS=ON \
|
||||
-DIAITO_USE_BUNDLED_RADARE2=ON \
|
||||
../src
|
||||
else
|
||||
cmake \
|
||||
-G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCUTTER_USE_BUNDLED_RADARE2=ON \
|
||||
-DIAITO_USE_BUNDLED_RADARE2=ON \
|
||||
../src
|
||||
fi
|
||||
ninja
|
||||
@@ -167,7 +198,7 @@ jobs:
|
||||
scripts/fetch_deps.sh
|
||||
source cutter-deps/env.sh
|
||||
set -euo pipefail
|
||||
wget -q https://github.com/radareorg/radare2/releases/download/5.1.0/radare2-5.1.0.pkg
|
||||
wget -q https://github.com/radareorg/radare2/releases/download/5.2.1/radare2-5.2.1.pkg
|
||||
sudo installer -pkg *.pkg -target /
|
||||
export PATH=/usr/local/opt/llvm/bin:$PATH
|
||||
source scripts/prepare_breakpad_macos.sh
|
||||
@@ -178,24 +209,24 @@ jobs:
|
||||
-DPYTHON_LIBRARY="$CUTTER_DEPS_PYTHON_PREFIX/lib/libpython3.6m.dylib" \
|
||||
-DPYTHON_INCLUDE_DIR="$CUTTER_DEPS_PYTHON_PREFIX/include/python3.6m" \
|
||||
-DPYTHON_EXECUTABLE="$CUTTER_DEPS_PYTHON_PREFIX/bin/python3" \
|
||||
-DCUTTER_ENABLE_PYTHON=ON \
|
||||
-DCUTTER_ENABLE_PYTHON_BINDINGS=ON \
|
||||
-DCUTTER_ENABLE_CRASH_REPORTS=ON \
|
||||
-DCUTTER_USE_BUNDLED_RADARE2=ON \
|
||||
-DCUTTER_ENABLE_PACKAGING=ON \
|
||||
-DCUTTER_PACKAGE_DEPENDENCIES=ON \
|
||||
-DCUTTER_ENABLE_DEPENDENCY_DOWNLOADS=ON \
|
||||
-DIAITO_ENABLE_PYTHON=ON \
|
||||
-DIAITO_ENABLE_PYTHON_BINDINGS=OFF \
|
||||
-DIAITO_ENABLE_CRASH_REPORTS=ON \
|
||||
-DIAITO_USE_BUNDLED_RADARE2=ON \
|
||||
-DIAITO_ENABLE_PACKAGING=ON \
|
||||
-DIAITO_PACKAGE_DEPENDENCIES=ON \
|
||||
-DIAITO_ENABLE_DEPENDENCY_DOWNLOADS=ON \
|
||||
-DCMAKE_FRAMEWORK_PATH="$BREAKPAD_FRAMEWORK_DIR" \
|
||||
../src && \
|
||||
make -j4;
|
||||
make package
|
||||
export CUTTER_VERSION=$(python3 ../scripts/get_version.py)
|
||||
echo PACKAGE_NAME=r2cutter-${CUTTER_VERSION}-Darwin.tar.gz >> $GITHUB_ENV
|
||||
export IAITO_VERSION=$(python3 ../scripts/get_version.py)
|
||||
echo PACKAGE_NAME=iaito-mac.tar.gz >> $GITHUB_ENV
|
||||
cd .. && make -C dist/macos
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: contains(matrix.os, 'macos')
|
||||
with:
|
||||
name: r2cutter-5.1.0_macos.pkg
|
||||
name: iaito-mac.pkg
|
||||
path: dist/macos/macos-pkg/*.pkg
|
||||
- name: windows dependencies
|
||||
if: contains(matrix.os, 'windows-latest')
|
||||
@@ -209,7 +240,7 @@ jobs:
|
||||
shell: cmd
|
||||
run: |
|
||||
set ARCH=x64
|
||||
set CUTTER_DEPS=%CD%\cutter-deps
|
||||
set IAITO_DEPS=%CD%\cutter-deps
|
||||
set PATH=%CD%\cutter-deps\qt\bin;%CD%\r2_dist\bin;%PATH%
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
|
||||
move radare2 radare2_git
|
||||
@@ -218,12 +249,12 @@ jobs:
|
||||
cd
|
||||
mkdir build
|
||||
cd build
|
||||
set PACKAGE_NAME=r2cutter-git-x64.Windows
|
||||
set PACKAGE_NAME=iaito-w64
|
||||
cmake ^
|
||||
-DCMAKE_BUILD_TYPE=Release ^
|
||||
-DCUTTER_PACKAGE_DEPENDENCIES=ON ^
|
||||
-DCUTTER_ENABLE_DEPENDENCY_DOWNLOADS=ON ^
|
||||
-DCUTTER_ENABLE_CRASH_REPORTS=ON ^
|
||||
-DIAITO_PACKAGE_DEPENDENCIES=ON ^
|
||||
-DIAITO_ENABLE_DEPENDENCY_DOWNLOADS=ON ^
|
||||
-DIAITO_ENABLE_CRASH_REPORTS=ON ^
|
||||
-DCMAKE_PREFIX_PATH="%CUTTER_DEPS%\pyside" ^
|
||||
-DCPACK_PACKAGE_FILE_NAME=%PACKAGE_NAME% ^
|
||||
-G Ninja ^
|
||||
@@ -231,8 +262,8 @@ jobs:
|
||||
cmake --build . --config Release
|
||||
cmake --build . --config Release --target package
|
||||
echo PACKAGE_NAME=%PACKAGE_NAME%.zip >> %GITHUB_ENV%
|
||||
# -DCUTTER_ENABLE_PYTHON=ON ^
|
||||
# -DCUTTER_ENABLE_PYTHON_BINDINGS=ON ^
|
||||
# -DIAITO_ENABLE_PYTHON=ON ^
|
||||
# -DIAITO_ENABLE_PYTHON_BINDINGS=ON ^
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: env.PACKAGE_NAME != null
|
||||
with:
|
||||
|
||||
@@ -41,7 +41,7 @@ jobs:
|
||||
export LD_LIBRARY_PATH="`llvm-config --libdir`:$LD_LIBRARY_PATH"
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCUTTER_USE_BUNDLED_RADARE2=ON ../src
|
||||
cmake -DIAITO_USE_BUNDLED_RADARE2=ON ../src
|
||||
|
||||
- name: Build with cov-build
|
||||
run: |
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
--form [email protected] \
|
||||
--form [email protected] \
|
||||
--form version=trunk \
|
||||
--form description="Cutter" \
|
||||
--form description="Iaito" \
|
||||
https://scan.coverity.com/builds?project=radareorg%2Fcutter
|
||||
env:
|
||||
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
|
||||
+1
-1
@@ -3,4 +3,4 @@
|
||||
url = https://github.com/radareorg/radare2
|
||||
[submodule "src/translations"]
|
||||
path = src/translations
|
||||
url = https://github.com/radareorg/cutter-translations
|
||||
url = https://github.com/radareorg/iaito-translations
|
||||
-297
@@ -1,297 +0,0 @@
|
||||
language: cpp
|
||||
|
||||
cache: ccache
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- debug
|
||||
- /^v\d.*$/
|
||||
- /^deploy-test(-.*)?$/
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- name: Linux QMake
|
||||
os: linux
|
||||
dist: xenial
|
||||
env: BUILD_SYSTEM=qmake
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- mesa-common-dev
|
||||
- libgl1-mesa-glx
|
||||
- libgl1-mesa-dev
|
||||
- libxkbcommon-x11-dev
|
||||
- ninja-build/xenial-backports
|
||||
|
||||
- name: Linux CMake
|
||||
os: linux
|
||||
env: BUILD_SYSTEM=cmake_nodep
|
||||
before_install:
|
||||
- ls $(pyenv root)/versions
|
||||
- pyenv global 3.7
|
||||
- pip3 install meson
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- mesa-common-dev
|
||||
- ninja-build
|
||||
- libgraphviz-dev
|
||||
- qt5-default
|
||||
- libqt5svg5-dev
|
||||
- qttools5-dev
|
||||
|
||||
- name: Linux CMake + Deploy
|
||||
os: linux
|
||||
env: BUILD_SYSTEM=cmake DEPLOY=1
|
||||
dist: xenial
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- mesa-common-dev
|
||||
- libgl1-mesa-glx
|
||||
- libgl1-mesa-dev
|
||||
- libxkbcommon-x11-dev
|
||||
- ninja-build/xenial-backports
|
||||
|
||||
#- name: Linux Ubuntu 16.04 # test that Cutter can be built on an old distro using system libraries
|
||||
# os: linux
|
||||
# env: BUILD_SYSTEM=cmake_nodep PATH="/usr/bin:$PATH"
|
||||
# dist: xenial
|
||||
# addons:
|
||||
# apt:
|
||||
# packages:
|
||||
# - ninja-build
|
||||
# - libgraphviz-dev
|
||||
# - qt5-default
|
||||
# - libqt5svg5-dev
|
||||
# - qttools5-dev
|
||||
# - qttools5-dev-tools
|
||||
# - cmake
|
||||
# before_install:
|
||||
# - pyenv install 3.5.2
|
||||
# - pyenv global 3.5.2
|
||||
# - pip install meson==0.52.1
|
||||
|
||||
|
||||
- name: macOS QMake + Deploy
|
||||
os: osx
|
||||
osx_image: xcode11
|
||||
env: BUILD_SYSTEM=qmake DEPLOY=1
|
||||
before_install: ~
|
||||
|
||||
- name: macOS CMake
|
||||
os: osx
|
||||
osx_image: xcode11
|
||||
env: BUILD_SYSTEM=cmake
|
||||
before_install: ~
|
||||
addons:
|
||||
homebrew:
|
||||
brewfile: scripts/Brewfile
|
||||
update: true # updating brew to get slightly newer meson, 0.54 doesn't work on macOS.
|
||||
|
||||
- name: Documentation + Translations + Deploy
|
||||
os: linux
|
||||
cache: ~
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- doxygen
|
||||
- libgraphviz-dev
|
||||
before_install:
|
||||
- pyenv global 3.7
|
||||
- pip3 install -U sphinx
|
||||
- pip3 install -U breathe
|
||||
- pip3 install -U sphinx-rtd-theme
|
||||
- pip3 install -U recommonmark
|
||||
install: ~
|
||||
before_script: ~
|
||||
after_success: ~
|
||||
script:
|
||||
- cd docs
|
||||
- make html
|
||||
before_deploy:
|
||||
- cd "$TRAVIS_BUILD_DIR"
|
||||
- openssl aes-256-cbc -K $encrypted_bd0ed4c1fd75_key -iv $encrypted_bd0ed4c1fd75_iv -in scripts/deploy_docs_rsa.enc -out scripts/deploy_docs_rsa -d
|
||||
- openssl aes-256-cbc -K $encrypted_df6d16737705c_key -iv $encrypted_df6d16737705c_iv -in scripts/deploy_translations_rsa.enc -out scripts/deploy_translations_rsa -d
|
||||
- chmod 600 scripts/deploy_docs_rsa
|
||||
- chmod 600 scripts/deploy_translations_rsa
|
||||
- export GIT_SSH_COMMAND="/usr/bin/ssh -i $TRAVIS_BUILD_DIR/scripts/deploy_docs_rsa"
|
||||
- git config --global user.name "Travis CI"
|
||||
- git config --global user.email "[email protected]"
|
||||
deploy:
|
||||
skip_cleanup: true
|
||||
provider: script
|
||||
script: bash -c "./scripts/deploy_docs.sh; ./scripts/deploy_translations.sh"
|
||||
on:
|
||||
repo: radareorg/cutter
|
||||
branch: translate
|
||||
|
||||
|
||||
sudo: required
|
||||
dist: bionic
|
||||
|
||||
addons:
|
||||
homebrew:
|
||||
brewfile: scripts/Brewfile
|
||||
# update: true
|
||||
|
||||
before_install:
|
||||
- ls $(pyenv root)/versions
|
||||
- pyenv global 3.7.1
|
||||
- pip3 install meson
|
||||
|
||||
install:
|
||||
- if [[ "$BUILD_SYSTEM" != "cmake_nodep" ]]; then
|
||||
scripts/fetch_deps.sh;
|
||||
source cutter-deps/env.sh;
|
||||
fi
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
export PATH=/usr/local/opt/llvm/bin:$PATH;
|
||||
source scripts/prepare_breakpad_macos.sh;
|
||||
fi
|
||||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
||||
export LD_LIBRARY_PATH="`llvm-config --libdir`:$LD_LIBRARY_PATH";
|
||||
source scripts/prepare_breakpad_linux.sh;
|
||||
fi
|
||||
|
||||
before_script:
|
||||
- cd radare2
|
||||
- if [[ "$BUILD_SYSTEM" == "qmake" ]] || ([[ "$BUILD_SYSTEM" == "cmake" ]] && [[ "$TRAVIS_OS_NAME" == "linux" ]]) ; then
|
||||
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
||||
INSTALL_TARGET=install sys/install.sh /usr;
|
||||
else
|
||||
LDFLAGS=-headerpad_max_install_names INSTALL_TARGET=install sys/install.sh;
|
||||
fi
|
||||
fi
|
||||
- cd ..
|
||||
|
||||
script:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- export PKG_CONFIG_PATH="$CUSTOM_BREAKPAD_PREFIX/lib/pkgconfig:$CUSTOM_PYTHON_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
||||
if [[ "$BUILD_SYSTEM" == "qmake" ]]; then
|
||||
qmake
|
||||
CUTTER_ENABLE_PYTHON=true
|
||||
CUTTER_ENABLE_PYTHON_BINDINGS=true
|
||||
CUTTER_ENABLE_CRASH_REPORTS=true
|
||||
PREFIX=/usr
|
||||
../src &&
|
||||
make -j4;
|
||||
elif [[ "$BUILD_SYSTEM" == "cmake" ]]; then
|
||||
cmake
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_PREFIX_PATH="$Qt5_ROOT"
|
||||
-DPYTHON_LIBRARY="$CUTTER_DEPS_PYTHON_PREFIX/lib/libpython3.6m.so.1.0"
|
||||
-DPYTHON_INCLUDE_DIR="$CUTTER_DEPS_PYTHON_PREFIX/include/python3.6m"
|
||||
-DPYTHON_EXECUTABLE="$CUTTER_DEPS_PYTHON_PREFIX/bin/python3"
|
||||
-DCUTTER_ENABLE_PYTHON=ON
|
||||
-DCUTTER_ENABLE_PYTHON_BINDINGS=ON
|
||||
-DCUTTER_ENABLE_CRASH_REPORTS=ON
|
||||
-DCUTTER_USE_BUNDLED_RADARE2=OFF
|
||||
-DCUTTER_APPIMAGE_BUILD=ON
|
||||
-DCMAKE_INSTALL_PREFIX=appdir/usr
|
||||
../src &&
|
||||
make -j4;
|
||||
elif [[ "$BUILD_SYSTEM" == "cmake_nodep" ]]; then
|
||||
cmake
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCUTTER_USE_BUNDLED_RADARE2=ON
|
||||
../src &&
|
||||
make -j4;
|
||||
fi
|
||||
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
if [[ "$BUILD_SYSTEM" == "qmake" ]]; then
|
||||
qmake
|
||||
CUTTER_ENABLE_PYTHON=true
|
||||
CUTTER_ENABLE_PYTHON_BINDINGS=true
|
||||
SHIBOKEN_EXTRA_OPTIONS=-isystem/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include
|
||||
CUTTER_BUNDLE_R2_APPBUNDLE=true
|
||||
CUTTER_ENABLE_CRASH_REPORTS=true
|
||||
PYTHON_FRAMEWORK_DIR=$CUTTER_DEPS_PYTHON_FRAMEWORK_DIR
|
||||
BREAKPAD_FRAMEWORK_DIR=$BREAKPAD_FRAMEWORK_DIR
|
||||
../src &&
|
||||
make -j4;
|
||||
elif [[ "$BUILD_SYSTEM" == "cmake" ]]; then
|
||||
cmake
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DPYTHON_LIBRARY="$CUTTER_DEPS_PYTHON_PREFIX/lib/libpython3.6m.dylib"
|
||||
-DPYTHON_INCLUDE_DIR="$CUTTER_DEPS_PYTHON_PREFIX/include/python3.6m"
|
||||
-DPYTHON_EXECUTABLE="$CUTTER_DEPS_PYTHON_PREFIX/bin/python3"
|
||||
-DCUTTER_ENABLE_PYTHON=ON
|
||||
-DCUTTER_ENABLE_PYTHON_BINDINGS=ON
|
||||
-DSHIBOKEN_EXTRA_OPTIONS=-isystem/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include
|
||||
-DCUTTER_ENABLE_CRASH_REPORTS=ON
|
||||
-DCUTTER_USE_BUNDLED_RADARE2=ON
|
||||
-DBREAKPAD_FRAMEWORK_DIR="$BREAKPAD_FRAMEWORK_DIR"
|
||||
../src &&
|
||||
make -j4;
|
||||
fi
|
||||
fi
|
||||
|
||||
after_success:
|
||||
# Do the release
|
||||
- export CUTTER_VERSION=$(python ../scripts/get_version.py)
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
lrelease ../src/Cutter.pro &&
|
||||
mkdir -p Cutter.app/Contents/Resources/translations &&
|
||||
cp ../src/translations/*.qm Cutter.app/Contents/Resources/translations/ &&
|
||||
macdeployqt Cutter.app -executable=Cutter.app/Contents/MacOS/Cutter -libpath="../Frameworks" &&
|
||||
macdeployqt Cutter.app -executable=Cutter.app/Contents/MacOS/Cutter -libpath="../Frameworks" &&
|
||||
cp -a "$QTDIR/lib/QtDBus.framework" "$QTDIR/lib/QtPrintSupport.framework" Cutter.app/Contents/Frameworks &&
|
||||
cp -a "$BREAKPAD_FRAMEWORK_DIR/Breakpad.framework" Cutter.app/Contents/Frameworks &&
|
||||
"$TRAVIS_BUILD_DIR/scripts/appbundle_embed_python.sh" "$CUTTER_DEPS_PYTHON_FRAMEWORK_DIR/Python.framework" Cutter.app Cutter.app/Contents/MacOS/Cutter &&
|
||||
mv Cutter.app/Contents/MacOS/Cutter Cutter.app/Contents/MacOS/Cutter.bin &&
|
||||
cp ../src/macos/Cutter.sh Cutter.app/Contents/MacOS/Cutter &&
|
||||
chmod +x Cutter.app/Contents/MacOS/Cutter &&
|
||||
mkdir -p Cutter.app/Contents/Resources/r2/share &&
|
||||
cp -a /usr/local/share/radare2 Cutter.app/Contents/Resources/r2/share/ &&
|
||||
"$TRAVIS_BUILD_DIR/scripts/r2ghidra.sh" -DCMAKE_INSTALL_PREFIX="`pwd`/Cutter.app/Contents/Resources/r2" -DBUILD_CUTTER_PLUGIN=ON -DCUTTER_INSTALL_PLUGDIR="`pwd`/Cutter.app/Contents/Resources/plugins/native" -DCUTTER_SOURCE_DIR="$TRAVIS_BUILD_DIR" &&
|
||||
"$TRAVIS_BUILD_DIR/scripts/r2dec.sh" --prefix="`pwd`/Cutter.app/Contents/Resources/r2" &&
|
||||
mkdir image && cp -a Cutter.app image/ &&
|
||||
export VOL_NAME="Cutter v${CUTTER_VERSION}" &&
|
||||
export DMG_TMP_FILE="Cutter-v$CUTTER_VERSION-x64.macOS-tmp.dmg" &&
|
||||
export DMG_FILE="Cutter-v$CUTTER_VERSION-x64.macOS.dmg" &&
|
||||
export SIZE=`du -sh "image" | sed 's/\([0-9\.]*\)M\(.*\)/\1/'` &&
|
||||
export SIZE=`echo "${SIZE} + 10.0" | bc | awk '{print int($1+0.5)}'` &&
|
||||
hdiutil create -srcfolder image -volname "${VOL_NAME}" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${SIZE}M "$DMG_TMP_FILE" &&
|
||||
export DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP_FILE}" | egrep '^/dev/' | sed 1q | awk '{print $1}') &&
|
||||
sleep 2 &&
|
||||
../scripts/prepare_package_ui_macos.sh "Cutter" "${PWD}/../src/macos/cutter_mac_app.png" "${VOL_NAME}" &&
|
||||
hdiutil detach "${DEVICE}" &&
|
||||
hdiutil convert "${DMG_TMP_FILE}" -format UDZO -imagekey zlib-level=9 -o "${DMG_FILE}" &&
|
||||
export FILE_TO_UPLOAD="$DMG_FILE"
|
||||
; fi
|
||||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ $DEPLOY == 1 ]]; then
|
||||
export VERSION=$CUTTER_VERSION &&
|
||||
make install &&
|
||||
cp -r /usr/share/radare2 appdir/usr/share/ &&
|
||||
"$TRAVIS_BUILD_DIR/scripts/appimage_embed_python.sh" appdir &&
|
||||
"$TRAVIS_BUILD_DIR/scripts/r2ghidra.sh" -DCMAKE_INSTALL_PREFIX="`pwd`/appdir/usr" -DBUILD_CUTTER_PLUGIN=ON -DCUTTER_SOURCE_DIR="$TRAVIS_BUILD_DIR" &&
|
||||
"$TRAVIS_BUILD_DIR/scripts/r2dec.sh" --prefix=`pwd`/appdir/usr &&
|
||||
wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/6/linuxdeployqt-6-x86_64.AppImage" &&
|
||||
chmod a+x linuxdeployqt*.AppImage &&
|
||||
rm -fv "$TRAVIS_BUILD_DIR/cutter-deps/qt/plugins/imageformats/libqjp2.so" &&
|
||||
./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -executable=./appdir/usr/bin/python3 -bundle-non-qt-libs -no-strip -exclude-libs=libnss3.so,libnssutil3.so,libqjp2.so -ignore-glob=usr/lib/python3.6/**/* -verbose=2 &&
|
||||
./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -executable=./appdir/usr/bin/python3 -appimage -no-strip -exclude-libs=libnss3.so,libnssutil3.so,libqjp2.so -ignore-glob=usr/lib/python3.6/**/* -verbose=2 &&
|
||||
find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq &&
|
||||
export APPIMAGE_FILE="Cutter-v$CUTTER_VERSION-x64.Linux.AppImage" &&
|
||||
mv Cutter-*-x86_64.AppImage "$APPIMAGE_FILE" &&
|
||||
export FILE_TO_UPLOAD="$APPIMAGE_FILE"
|
||||
; fi
|
||||
|
||||
deploy:
|
||||
skip_cleanup: true
|
||||
provider: releases
|
||||
draft: true
|
||||
prerelease: true
|
||||
tag_name: $TRAVIS_TAG
|
||||
api_key:
|
||||
secure: ZXuSX8JXyL0HlJvSIda3ftMkvYsrxoWDcWm2LxO+f0uNFghCHNnISuH/btdipn2mjCBaBQl6/1IK5cg/AZ5OSkiaVsJJqY8kkPsZvR8K+k4oarsr2ApetlLZiZWtydC3J+UyNhsgCt4iuYPsvusANFPZBpVmqT+A5CHS7aPIqP00awbkJYG1uOENe2XVZ0vyotBqU0E7A9f8UO5ps0+qysS8W+NDB+CGLgKLeBfCk3U+IYKGYXcv66xCmSSZ5f7IVIXEjG4voFHGp9XLRY2R/iJgiKQKDbu519vUB3iKPzmLTB/Q9bNz4VMZCREa4SHaLDen730fMHbfm6ZhGZDzXg1DgZoh6RHptWf0WjcHTr1ch8ajpnBMxh/qmoRpaS00FJQMraMT3Il38ekYd+hOhsP58Bj1Db2vjBKopGEHGmVyFQZKuynrdKmpmY+kRNUT3QerIsiAHwHV2QXnMARHYXJrM0T7LNACa2mhiwQD2vNIqLRieIbHbSWgDUrTVTDeII23AAHCzD0YxcCAjSExjun/rc9dJjevgCoBpTM/NHPLCW4big1myx+vRQGPNdlf+dI7igm6bPVWB7znp5uXlI8q5irvqTVtRSvKbcaeDWOz/ki7QgOzaxmGFtaw30hxeY0wFlnSMXc8m42udWLkp/l0b4L0hcoaMTc1TvVU0i4=
|
||||
file:
|
||||
- "${FILE_TO_UPLOAD}"
|
||||
on:
|
||||
tags: true
|
||||
condition: $DEPLOY = 1
|
||||
|
||||
Vendored
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"cmake.sourceDirectory": "${workspaceFolder}/src",
|
||||
"cmake.configureSettings": {
|
||||
"CUTTER_USE_BUNDLED_RADARE2": "ON"
|
||||
"IAITO_USE_BUNDLED_RADARE2": "ON"
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
-7
@@ -1,25 +1,25 @@
|
||||
# Contributing to r2cutter
|
||||
# Contributing to iaito
|
||||
|
||||
There are different ways you can help contributing to Cutter:
|
||||
There are different ways you can help contributing to Iaito:
|
||||
|
||||
## Opening an issue
|
||||
|
||||
Make a clear description of the bug/feature, use screenshots, send binaries, etc.
|
||||
This will help us improve the software for you.
|
||||
You can create an issue by clicking on [this link](https://github.com/radareorg/r2cutter/issues/new/choose).
|
||||
You can create an issue by clicking on [this link](https://github.com/radareorg/iaito/issues/new/choose).
|
||||
|
||||
## Submit a Pull Request
|
||||
|
||||
Note that cutter is still under development and many parts of the code are to be improved.
|
||||
The best way is to check the opened issues [here](https://github.com/radareorg/r2cutter/issues) or discuss with radareorg team.
|
||||
The best way is to check the opened issues [here](https://github.com/radareorg/iaito/issues) or discuss with radareorg team.
|
||||
Please follow our contribution guidelines: https://cutter.re/docs/contributing.html
|
||||
|
||||
## Write Some Documentation
|
||||
|
||||
The documentation is something important for newcomers. As of today the documentation can be found [here](https://cutter.re/docs/) and it stands in the [docs](https://github.com/radareorg/r2cutter/tree/master/docs) folder.
|
||||
The documentation is something important for newcomers. As of today the documentation can be found [here](https://cutter.re/docs/) and it stands in the [docs](https://github.com/radareorg/iaito/tree/master/docs) folder.
|
||||
The API Reference is automatically generated from the source code, so it is strongly advised to document your code.
|
||||
Check issues marked as "Documentation" on our issues [list](https://github.com/radareorg/r2cutter/issues?q=is%3Aissue+is%3Aopen+label%3ADocumentation).
|
||||
Check issues marked as "Documentation" on our issues [list](https://github.com/radareorg/iaito/issues?q=is%3Aissue+is%3Aopen+label%3ADocumentation).
|
||||
|
||||
## Translations
|
||||
|
||||
You can help Cutter by adding translations to the project! We use the [Crowdin](https://crowdin.com/project/r2cutter) platform to help us share translations. Feel free to contribute and add translations to the project. If you need to add a language, ask any radareorg developer.
|
||||
You can help Iaito by adding translations to the project! We use the [Crowdin](https://crowdin.com/project/iaito) platform to help us share translations. Feel free to contribute and add translations to the project. If you need to add a language, ask any radareorg developer.
|
||||
@@ -1,72 +1,86 @@
|
||||
include config.mk
|
||||
|
||||
ifeq ($(shell uname),Darwin)
|
||||
BIN=build/r2cutter.app/Contents/MacOS/r2cutter
|
||||
BIN=build/iaito.app/Contents/MacOS/iaito
|
||||
else
|
||||
BIN=build/r2cutter
|
||||
BIN=build/iaito
|
||||
endif
|
||||
|
||||
# linux or win
|
||||
CUTTER_OS=macos
|
||||
CUTTER_DEPS_URL=https://github.com/rizinorg/cutter-deps/releases/download/v13/cutter-deps-$(CUTTER_OS).tar.gz
|
||||
IAITO_OS=macos
|
||||
IAITO_DEPS_URL=https://github.com/rizinorg/cutter-deps/releases/download/v13/cutter-deps-$(IAITO_OS).tar.gz
|
||||
|
||||
ifeq ($(WANT_PYTHON),1)
|
||||
QMAKE_FLAGS+=CUTTER_ENABLE_PYTHON=true
|
||||
QMAKE_FLAGS+=IAITO_ENABLE_PYTHON=true
|
||||
|
||||
# cutter deps should provide deps.mk
|
||||
CMAKE_FLAGS+=-DPYTHON_LIBRARY="$(CUTTER_DEPS)/python/lib/libpython3.6m.so.1.0"
|
||||
CMAKE_FLAGS+=-DPYTHON_INCLUDE_DIR="$(CUTTER_DEPS)/include/python3.6m"
|
||||
CMAKE_FLAGS+=-DPYTHON_EXECUTABLE="$(CUTTER_DEPS)/bin/python3"
|
||||
CMAKE_FLAGS+=-DCUTTER_ENABLE_PYTHON=ON
|
||||
CMAKE_FLAGS+=-DCUTTER_ENABLE_PYTHON_BINDINGS=ON
|
||||
CMAKE_FLAGS+=-DPYTHON_LIBRARY="$(IAITO_DEPS)/python/lib/libpython3.6m.so.1.0"
|
||||
CMAKE_FLAGS+=-DPYTHON_INCLUDE_DIR="$(IAITO_DEPS)/include/python3.6m"
|
||||
CMAKE_FLAGS+=-DPYTHON_EXECUTABLE="$(IAITO_DEPS)/bin/python3"
|
||||
CMAKE_FLAGS+=-DIAITO_ENABLE_PYTHON=ON
|
||||
CMAKE_FLAGS+=-DIAITO_ENABLE_PYTHON_BINDINGS=ON
|
||||
endif
|
||||
ifeq ($(WANT_PYTHON_BINDINGS),1)
|
||||
QMAKE_FLAGS+=CUTTER_ENABLE_PYTHON_BINDINGS=true
|
||||
QMAKE_FLAGS+=IAITO_ENABLE_PYTHON_BINDINGS=true
|
||||
endif
|
||||
ifeq ($(WANT_CRASH_REPORTS),1)
|
||||
QMAKE_FLAGS+=CUTTER_ENABLE_CRASH_REPORTS=true
|
||||
QMAKE_FLAGS+=IAITO_ENABLE_CRASH_REPORTS=true
|
||||
endif
|
||||
|
||||
all: r2cutter
|
||||
all: iaito
|
||||
|
||||
cbuild:
|
||||
mkdir -p cbuild
|
||||
cd cbuild && cmake $(CMAKE_FLAGS) \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCUTTER_ENABLE_CRASH_REPORTS=ON \
|
||||
-DCUTTER_USE_BUNDLED_RADARE2=OFF \
|
||||
-DCUTTER_APPIMAGE_BUILD=ON \
|
||||
-DIAITO_ENABLE_CRASH_REPORTS=ON \
|
||||
-DIAITO_USE_BUNDLED_RADARE2=OFF \
|
||||
-DIAITO_APPIMAGE_BUILD=ON \
|
||||
-DCMAKE_INSTALL_PREFIX=appdir/usr \
|
||||
../src
|
||||
|
||||
.PHONY: cmake
|
||||
clean:
|
||||
|
||||
mrproper: clean
|
||||
rm -rf build
|
||||
|
||||
.PHONY: cmake install build run user-install clean mrproper translations
|
||||
|
||||
cmake: cbuild
|
||||
$(MAKE)
|
||||
|
||||
r2cutter: translations
|
||||
iaito: translations
|
||||
$(MAKE) -C build -j4
|
||||
|
||||
translations: build src/translations/README.md
|
||||
lrelease src/Cutter.pro
|
||||
$(MAKE) -C src/translations
|
||||
# lrelease src/Iaito.pro
|
||||
|
||||
src/translations/README.md:
|
||||
git submodule update --init
|
||||
|
||||
# qmake build
|
||||
# force qt5 build when QtCreator is installed in user's home
|
||||
ifeq ($(shell test -x ~/Qt/5.12.3/clang_64/bin/qmake || echo err),)
|
||||
QMAKE=~/Qt/5.12.3/clang_64/bin/qmake
|
||||
endif
|
||||
|
||||
build:
|
||||
mkdir -p build
|
||||
cd build && $(QMAKE) ../src/Cutter.pro $(QMAKE_FLAGS)
|
||||
cd build && $(QMAKE) ../src/Iaito.pro $(QMAKE_FLAGS)
|
||||
|
||||
install:
|
||||
install: translations
|
||||
ifeq ($(shell uname),Darwin)
|
||||
rm -rf $(DESTDIR)/Applications/iaito.app
|
||||
mkdir -p $(DESTDIR)/Applications
|
||||
cp -rf build/r2cutter.app $(DESTDIR)/Applications/r2cutter.app
|
||||
cp -rf build/iaito.app $(DESTDIR)/Applications/iaito.app
|
||||
mkdir -p $(DESTDIR)/usr/local/bin
|
||||
ln -fs '/Applications/r2cutter.app/Contents/MacOS/r2cutter' $(DESTDIR)'/usr/local/bin/r2cutter'
|
||||
ln -fs '/Applications/iaito.app/Contents/MacOS/iaito' $(DESTDIR)'/usr/local/bin/iaito'
|
||||
else
|
||||
$(MAKE) -C build install INSTALL_ROOT=$(DESTDIR)
|
||||
endif
|
||||
$(MAKE) -C src/translations install
|
||||
mkdir -p "$(DESTDIR)/$(PREFIX)/share/iaito/translations"
|
||||
cp -f src/translations/build/*.qm "$(DESTDIR)/$(PREFIX)/share/iaito/translations"
|
||||
|
||||
user-install:
|
||||
|
||||
|
||||
@@ -1,32 +1,39 @@
|
||||
<img width="150" height="150" align="left" style="float: left; margin: 0 10px 0 0;" alt="Cutter logo" src="https://raw.githubusercontent.com/radareorg/r2cutter/master/src/img/r2cutter.svg?sanitize=true">
|
||||
<img width="150" height="150" align="left" style="float: left; margin: 0 10px 0 0;" alt="Iaito logo" src="https://raw.githubusercontent.com/radareorg/iaito/master/src/img/iaito-circle.svg?sanitize=true">
|
||||
|
||||
# r2cutter
|
||||
# iaito
|
||||
|
||||
r2cutter is the continuation of [Cutter](https://cutter.re) before the fork to keep [radare2](https://github.com/radareorg/radare2) as backend.
|
||||
iaito is the official graphical interface for radare2 written in Qt/C++.
|
||||
|
||||
* Focus on supporting latest version of radare2
|
||||
* Recommend the use of system installed
|
||||
* Closer integration between r2 and the UI
|
||||
It is the continuation of [Cutter](https://cutter.re) before the [fork](https://github.com/rizinorg/cutter) to keep [radare2](https://github.com/radareorg/radare2) as backend.
|
||||
|
||||
[](https://github.com/radareorg/r2cutter/actions)
|
||||
* Iaito was the original name of this GUI before being forked as Cutter.
|
||||
* Support latest versions and features of radare2
|
||||
* Use r2 plugins (f.ex: no need for r2ghidra-iaito plugin if r2ghidra is installed)
|
||||
* Focus on parity of commands and r2-style workflows.
|
||||
* Translations are in the early steps, please [contribute](https://crowdin.com/project/iaito)!
|
||||
|
||||

|
||||
[](https://crowdin.com/project/iaito)
|
||||
[](https://github.com/radareorg/iaito/actions)
|
||||
[](https://repology.org/project/iaito/versions)
|
||||
|
||||
|
||||

|
||||
|
||||
## Downloading a release
|
||||
|
||||
r2cutter is available for Linux, macOS and Windows.
|
||||
Get the builds from the [releases](https://github.com/radareorg/r2cutter/releases) page in Github.
|
||||
iaito is available for Linux, macOS and Windows.
|
||||
Get the builds from the [releases](https://github.com/radareorg/iaito/releases) page in Github.
|
||||
|
||||
## Installing dependencies
|
||||
|
||||
r2cutter depends on r2, you should install it
|
||||
iaito depends on r2, and you should install it from git:
|
||||
|
||||
```
|
||||
$ git clone https://github.com/radareorg/radare2
|
||||
$ cd radare2 ; sys/install.sh
|
||||
```
|
||||
|
||||
Extra dependencies are needed for macOS
|
||||
Extra dependencies are needed for macOS, see the .github/workflows/ci.yml for more details
|
||||
|
||||
```
|
||||
brew install qt5
|
||||
@@ -35,7 +42,7 @@ brew install qt5
|
||||
On Ubuntu/Debian
|
||||
|
||||
```
|
||||
sudo apt install qttools5-dev-tools make
|
||||
sudo apt install qttools5-dev-tools qt5-default libqt5svg5-dev make
|
||||
```
|
||||
|
||||
## Building from sources
|
||||
@@ -45,22 +52,19 @@ sudo apt install qttools5-dev-tools make
|
||||
make
|
||||
make run
|
||||
```
|
||||
|
||||
## Docker
|
||||
|
||||
To deploy *cutter* using a pre-built `Dockerfile`, it's possible to use the [provided configuration](docker). The corresponding `README.md` file also contains instructions on how to get started using the docker image with minimal effort.
|
||||
To install the app and the translations in your home:
|
||||
|
||||
```
|
||||
make -C docker
|
||||
make install
|
||||
```
|
||||
|
||||
## Plugins
|
||||
r2cutter supports both Python and Native C++ plugins. For now the api is compatible with Cutter. Read the [Plugins](https://cutter.re/docs/plugins) section on their documentation.
|
||||
iaito supports both Python and Native C++ plugins. For now the api is compatible with Iaito. Read the [Plugins](https://cutter.re/docs/plugins) section on their documentation.
|
||||
|
||||
## Help
|
||||
|
||||
Get help, updates, meet the community or discuss about development in these channels:
|
||||
|
||||
- **Telegram:** https://t.me/radare
|
||||
- **IRC:** #radare and #cutter on irc.freenode.net
|
||||
- **IRC:** #radare on irc.freenode.net
|
||||
- **Twitter:** [@radareorg](https://twitter.com/radareorg)
|
||||
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Look for the 'acr' tool here: https://github.com/radare/acr
|
||||
# Clone last version of ACR from here:
|
||||
# git clone https://github.com/radare/acr
|
||||
#
|
||||
# -- pancake
|
||||
|
||||
r2pm -h >/dev/null 2>&1
|
||||
if [ $? = 0 ]; then
|
||||
echo "Installing the last version of 'acr'..."
|
||||
r2pm -i acr > /dev/null
|
||||
r2pm -r acr -h > /dev/null 2>&1
|
||||
if [ $? = 0 ]; then
|
||||
echo "Running 'acr -p'..."
|
||||
r2pm -r acr -p
|
||||
else
|
||||
echo "Cannot find 'acr' in PATH"
|
||||
fi
|
||||
else
|
||||
echo "Running acr..."
|
||||
acr -p
|
||||
fi
|
||||
|
||||
. configure
|
||||
|
||||
sed \
|
||||
-e "s,^IAITO_VERSION_MAJOR.*,IAITO_VERSION_MAJOR = ${VERSION_MAJOR}," \
|
||||
-e "s,^IAITO_VERSION_MINOR.*,IAITO_VERSION_MINOR = ${VERSION_MINOR}," \
|
||||
-e "s,^IAITO_VERSION_PATCH.*,IAITO_VERSION_PATCH = ${VERSION_PATCH}," \
|
||||
< src/Iaito.pro > src/Iaito.pro.sed
|
||||
|
||||
mv src/Iaito.pro.sed src/Iaito.pro
|
||||
|
||||
#V=`./configure -qV | cut -d - -f -1`
|
||||
# meson rewrite kwargs set project / version "$V"
|
||||
# if [ -n "$1" ]; then
|
||||
# echo "./configure $*"
|
||||
# ./configure $*
|
||||
#fi
|
||||
@@ -23,12 +23,12 @@ FOR %%i in (src\translations\*.ts) DO lrelease %%i
|
||||
|
||||
CD %BUILDDIR%
|
||||
|
||||
IF NOT DEFINED CUTTER_ENABLE_CRASH_REPORTS (
|
||||
SET "CUTTER_ENABLE_CRASH_REPORTS=false"
|
||||
IF NOT DEFINED IAITO_ENABLE_CRASH_REPORTS (
|
||||
SET "IAITO_ENABLE_CRASH_REPORTS=false"
|
||||
)
|
||||
|
||||
ECHO Building cutter
|
||||
qmake BREAKPAD_SOURCE_DIR=%BREAKPAD_SOURCE_DIR% CUTTER_ENABLE_CRASH_REPORTS=%CUTTER_ENABLE_CRASH_REPORTS% %* ..\src\cutter.pro -config release
|
||||
qmake BREAKPAD_SOURCE_DIR=%BREAKPAD_SOURCE_DIR% IAITO_ENABLE_CRASH_REPORTS=%IAITO_ENABLE_CRASH_REPORTS% %* ..\src\cutter.pro -config release
|
||||
IF !ERRORLEVEL! NEQ 0 EXIT /B 1
|
||||
nmake
|
||||
IF !ERRORLEVEL! NEQ 0 EXIT /B 1
|
||||
|
||||
@@ -29,7 +29,7 @@ find_qmake() {
|
||||
qmakepath=$(command -v qmake)
|
||||
fi
|
||||
if [ -z "$qmakepath" ]; then
|
||||
echo "You need qmake to build Cutter."
|
||||
echo "You need qmake to build Iaito."
|
||||
echo "Please make sure qmake is in your PATH environment variable."
|
||||
exit 1
|
||||
fi
|
||||
@@ -42,7 +42,7 @@ find_lrelease() {
|
||||
lreleasepath=$(command -v lrelease)
|
||||
fi
|
||||
if [ -z "$lreleasepath" ]; then
|
||||
echo "You need lrelease to build Cutter."
|
||||
echo "You need lrelease to build Iaito."
|
||||
echo "Please make sure lrelease is in your PATH environment variable."
|
||||
exit 1
|
||||
fi
|
||||
@@ -57,7 +57,7 @@ find_gmake() {
|
||||
|
||||
${gmakepath} --help 2>&1 | grep -q gnu
|
||||
if [ $? != 0 ]; then
|
||||
echo "You need GNU make to build Cutter."
|
||||
echo "You need GNU make to build Iaito."
|
||||
echo "Please make sure gmake is in your PATH environment variable."
|
||||
exit 1
|
||||
fi
|
||||
@@ -99,15 +99,15 @@ else
|
||||
fi
|
||||
|
||||
# Create translations
|
||||
$(find_lrelease) ./src/Cutter.pro
|
||||
$(find_lrelease) ./src/Iaito.pro
|
||||
|
||||
# Build
|
||||
if [ "${QMAKE_CONF#*CUTTER_ENABLE_CRASH_REPORTS=true}" != "$QMAKE_CONF" ]; then
|
||||
if [ "${QMAKE_CONF#*IAITO_ENABLE_CRASH_REPORTS=true}" != "$QMAKE_CONF" ]; then
|
||||
prepare_breakpad
|
||||
fi
|
||||
mkdir -p "$BUILD"
|
||||
cd "$BUILD" || exit 1
|
||||
$(find_qmake) ../src/Cutter.pro "$QMAKE_CONF"
|
||||
$(find_qmake) ../src/Iaito.pro "$QMAKE_CONF"
|
||||
$(find_gmake) -j4
|
||||
ERR=$((ERR+$?))
|
||||
|
||||
@@ -122,15 +122,15 @@ if [ ${ERR} -gt 0 ]; then
|
||||
echo "Something went wrong!"
|
||||
else
|
||||
echo "Build complete."
|
||||
printf "This build of Cutter will be installed. Do you agree? [Y/n] "
|
||||
printf "This build of Iaito will be installed. Do you agree? [Y/n] "
|
||||
read -r answer
|
||||
if [ -z "$answer" ] || [ "$answer" = "Y" ] || [ "$answer" = "y" ]; then
|
||||
$(find_gmake) install
|
||||
else
|
||||
echo "Binary available at $BUILD/r2cutter"
|
||||
echo "Binary available at $BUILD/iaito"
|
||||
fi
|
||||
if [ -x '/usr/local/bin/r2cutter.app/Contents/MacOS/r2cutter' ]; then
|
||||
ln -fs '/usr/local/bin/r2cutter.app/Contents/MacOS/r2cutter' '/usr/local/bin/r2cutter'
|
||||
if [ -x '/usr/local/bin/iaito.app/Contents/MacOS/iaito' ]; then
|
||||
ln -fs '/usr/local/bin/iaito.app/Contents/MacOS/iaito' '/usr/local/bin/iaito'
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -84,6 +84,7 @@ CROSSBUILD=0
|
||||
BUILD=`guess_os`
|
||||
HOST="${BUILD}"
|
||||
TARGET="${HOST}"
|
||||
ETCDIR="/etc"
|
||||
SYSCONFDIR=""
|
||||
|
||||
create_environ() {
|
||||
@@ -91,14 +92,14 @@ create_environ() {
|
||||
: ${SPREFIX:="${PREFIX}"}
|
||||
: ${BINDIR:="${SPREFIX}/bin"}
|
||||
: ${SBINDIR:="${PREFIX}/sbin"}
|
||||
: ${SYSCONFDIR:="${SPREFIX}/etc"}
|
||||
: ${ETCDIR:="${SPREFIX}/etc"}
|
||||
: ${LIBDIR:="${SPREFIX}/lib"}
|
||||
: ${LIBEXECDIR:="${SPREFIX}/libexec"}
|
||||
: ${INCLUDEDIR:="${SPREFIX}/include"}
|
||||
: ${DATADIR:="${SPREFIX}/share"}
|
||||
: ${INFODIR:="${DATADIR}/info"}
|
||||
: ${MANDIR:="${DATADIR}/man"}
|
||||
: ${DOCDIR:="${DATADIR}/doc/r2cutter"}
|
||||
: ${DOCDIR:="${DATADIR}/doc/iaito"}
|
||||
: ${LOCALSTATEDIR:="${SPREFIX}/var"}
|
||||
for A in `echo ${PATH} | sed -e 's,:, ,g'` ; do
|
||||
[ -e "$A"/ginstall ] && : ${INSTALL:="$A"/ginstall} && break
|
||||
@@ -111,12 +112,12 @@ done
|
||||
: ${INSTALL_PROGRAM_STRIP:=${INSTALL} -m 755 -s}
|
||||
: ${INSTALL_MAN:=${INSTALL} -m 444}
|
||||
: ${INSTALL_LIB:=${INSTALL} -m 755 -c}
|
||||
PKGNAME='r2cutter' ; VERSION='0.1.0' ; VERSION_MAJOR=0; VERSION_MINOR=1; VERSION_PATCH=0; VERSION_NUMBER=00100; CONTACT_MAIL="[email protected]" ; CONTACT_NAME="pancake" ; CONTACT="pancake <[email protected]>" ;
|
||||
PKGNAME='iaito' ; VERSION='5.2.2' ; VERSION_MAJOR=5; VERSION_MINOR=2; VERSION_PATCH=2; VERSION_NUMBER=50202; CONTACT_MAIL="[email protected]" ; CONTACT_NAME="pancake" ; CONTACT="pancake <[email protected]>" ;
|
||||
}
|
||||
|
||||
show_usage() {
|
||||
cat <<EOF2
|
||||
'configure' configures r2cutter-0.1.0 to adapt to many kinds of systems.
|
||||
'configure' configures iaito-5.2.2 to adapt to many kinds of systems.
|
||||
|
||||
Usage: ./configure [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -139,7 +140,7 @@ Installation directories:
|
||||
Fine tuning of the installation directories:
|
||||
--bindir=DIR user executables [EPREFIX/bin]
|
||||
--datadir=DIR read-only architecture-independent data [PREFIX/share]
|
||||
--docdir=DIR documentation directory [DATADIR/doc/r2cutter]
|
||||
--docdir=DIR documentation directory [DATADIR/doc/iaito]
|
||||
--includedir=DIR C header files [PREFIX/include]
|
||||
--infodir=DIR info documentation [DATADIR/info]
|
||||
--libexecdir=DIR program executables [EPREFIX/libexec]
|
||||
@@ -148,6 +149,7 @@ Fine tuning of the installation directories:
|
||||
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
||||
--mandir=DIR man documentation [DATADIR/man]
|
||||
--sbindir=DIR system admin executables [EPREFIX/sbin]
|
||||
--etcdir=DIR same as --sysconfdir (/etc)
|
||||
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
||||
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
||||
|
||||
@@ -194,10 +196,10 @@ ocho() {
|
||||
|
||||
show_version() {
|
||||
if [ "$QUIET" = 1 ]; then
|
||||
echo "0.1.0"
|
||||
echo "5.2.2"
|
||||
exit 0
|
||||
fi
|
||||
echo "r2cutter-0.1.0 configuration script done with acr v1.9.8.
|
||||
echo "iaito-5.2.2 configuration script done with acr v1.9.8.
|
||||
The 'Free Software Foundation' message is only for autodetection.
|
||||
Originally written by pancake <nopcode.org>."
|
||||
exit 0
|
||||
@@ -225,8 +227,8 @@ case $flag in
|
||||
-V|-version|--version)
|
||||
show_version ; ;;
|
||||
-r|--r|--report)
|
||||
echo "PKGNAME: r2cutter"
|
||||
echo "VERSION: 0.1.0"
|
||||
echo "PKGNAME: iaito"
|
||||
echo "VERSION: 5.2.2"
|
||||
echo "LANGS: c++"
|
||||
echo "PKG-CONFIG: r_core"
|
||||
echo "FLAGS: --with-python --with-python-bindings --with-crash-reports"
|
||||
@@ -259,7 +261,11 @@ echo "FLAGS: --with-python --with-python-bindings --with-crash-reports"
|
||||
--datadir)
|
||||
DATADIR="$value"; ;;
|
||||
--sysconfdir)
|
||||
SYSCONFDIR="$value"; ;;
|
||||
SYSCONFDIR="$value"
|
||||
ETCDIR="$value"; ;;
|
||||
--etcdir)
|
||||
SYSCONFDIR="$value"
|
||||
ETCDIR="$value"; ;;
|
||||
--sharedstatedir)
|
||||
SHAREDSTATEDIR="$value"; ;;
|
||||
--localstatedir)
|
||||
@@ -295,7 +301,7 @@ parse_options "$1"
|
||||
shift
|
||||
done
|
||||
|
||||
ENVWORDS="MANDIR INFODIR LIBDIR INCLUDEDIR LOCALSTATEDIR SYSCONFDIR DATADIR DOCDIR LIBEXECDIR SBINDIR BINDIR EPREFIX PREFIX SPREFIX TARGET HOST BUILD INSTALL INSTALL_LIB INSTALL_MAN INSTALL_PROGRAM INSTALL_PROGRAM_STRIP INSTALL_DIR INSTALL_SCRIPT INSTALL_DATA HOST_OS HOST_CPU BUILD_OS BUILD_CPU TARGET_OS TARGET_CPU VERSION VERSION_MAJOR VERSION_MINOR VERSION_PATCH VERSION_NUMBER PKGNAME VPATH CONTACT CONTACT_NAME CONTACT_MAIL CXX CXXFLAGS LDFLAGS HAVE_LANG_CXX CPP PKGCONFIG HAVE_R2 R2 R2_CFLAGS R2_LDFLAGS HAVE_PKGCFG_R_CORE HAVE_QMAKE QMAKE HAVE_LRELEASE LRELEASE WANT_PYTHON WANT_PYTHON_BINDINGS WANT_CRASH_REPORTS"
|
||||
ENVWORDS="MANDIR INFODIR LIBDIR INCLUDEDIR LOCALSTATEDIR ETCDIR SYSCONFDIR DATADIR DOCDIR LIBEXECDIR SBINDIR BINDIR EPREFIX PREFIX SPREFIX TARGET HOST BUILD INSTALL INSTALL_LIB INSTALL_MAN INSTALL_PROGRAM INSTALL_PROGRAM_STRIP INSTALL_DIR INSTALL_SCRIPT INSTALL_DATA HOST_OS HOST_CPU BUILD_OS BUILD_CPU TARGET_OS TARGET_CPU VERSION VERSION_MAJOR VERSION_MINOR VERSION_PATCH VERSION_NUMBER PKGNAME VPATH CONTACT CONTACT_NAME CONTACT_MAIL CXX CXXFLAGS LDFLAGS HAVE_LANG_CXX CPP PKGCONFIG HAVE_R2 R2 R2_CFLAGS R2_LDFLAGS HAVE_PKGCFG_R_CORE HAVE_QMAKE QMAKE HAVE_LRELEASE LRELEASE WANT_PYTHON WANT_PYTHON_BINDINGS WANT_CRASH_REPORTS"
|
||||
|
||||
create_environ
|
||||
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
PKGNAME r2cutter
|
||||
VERSION 0.1.0
|
||||
PKGNAME iaito
|
||||
VERSION 5.2.2
|
||||
CONTACT pancake ; [email protected]
|
||||
|
||||
LANG_CXX!
|
||||
|
||||
Vendored
+18
-18
@@ -1,4 +1,4 @@
|
||||
set(CUTTER_DEPS "${CMAKE_CURRENT_SOURCE_DIR}/../cutter-deps")
|
||||
set(IAITO_DEPS "${CMAKE_CURRENT_SOURCE_DIR}/../cutter-deps")
|
||||
unset(RZ_GHIDRA_PREFIX_PATH)
|
||||
|
||||
################################################
|
||||
@@ -9,18 +9,18 @@ if(WIN32)
|
||||
set(CPACK_GENERATOR "ZIP")
|
||||
set(RIZIN_INSTALL_PLUGDIR "lib/plugins")
|
||||
|
||||
if (CUTTER_PACKAGE_DEPENDENCIES)
|
||||
if (CUTTER_ENABLE_PYTHON)
|
||||
if (CUTTER_ENABLE_DEPENDENCY_DOWNLOADS)
|
||||
if (IAITO_PACKAGE_DEPENDENCIES)
|
||||
if (IAITO_ENABLE_PYTHON)
|
||||
if (IAITO_ENABLE_DEPENDENCY_DOWNLOADS)
|
||||
set(CPACK_INSTALL_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/WindowsBundlePython.cmake)
|
||||
endif()
|
||||
find_package(PythonInterp REQUIRED)
|
||||
install(DIRECTORY ${CUTTER_DEPS}/pyside/lib/site-packages DESTINATION "python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}")
|
||||
install(FILES ${CUTTER_DEPS}/pyside/bin/shiboken2.abi3.dll ${CUTTER_DEPS}/pyside/bin/pyside2.abi3.dll DESTINATION .)
|
||||
install(DIRECTORY ${IAITO_DEPS}/pyside/lib/site-packages DESTINATION "python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}")
|
||||
install(FILES ${IAITO_DEPS}/pyside/bin/shiboken2.abi3.dll ${IAITO_DEPS}/pyside/bin/pyside2.abi3.dll DESTINATION .)
|
||||
endif()
|
||||
install(SCRIPT WindowsBundleQt.cmake)
|
||||
endif()
|
||||
if (CUTTER_PACKAGE_R2DEC AND CUTTER_ENABLE_DEPENDENCY_DOWNLOADS)
|
||||
if (IAITO_PACKAGE_R2DEC AND IAITO_ENABLE_DEPENDENCY_DOWNLOADS)
|
||||
install(CODE "
|
||||
set(ENV{RZ_ALT_SRC_DIR} 1)
|
||||
set(ENV{PATH} \"\${CMAKE_INSTALL_PREFIX};\$ENV{PATH}\")
|
||||
@@ -40,8 +40,8 @@ endif()
|
||||
|
||||
if(APPLE)
|
||||
set(CPACK_GENERATOR "Bundle")
|
||||
set(CPACK_BUNDLE_NAME "r2cutter")
|
||||
set(ICON "r2cutter")
|
||||
set(CPACK_BUNDLE_NAME "iaito")
|
||||
set(ICON "iaito")
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/Info.plist.in" "${CMAKE_CURRENT_BINARY_DIR}/macos/Info.plist")
|
||||
set(CPACK_BUNDLE_PLIST "${CMAKE_CURRENT_BINARY_DIR}/macos/Info.plist")
|
||||
set(CPACK_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/macos/cutter.icns")
|
||||
@@ -59,10 +59,10 @@ if(APPLE)
|
||||
list(APPEND ADJUST_RIZIN_LIBS "${RIZIN_INSTALL_DIR}/lib/lib${_lib}.dylib")
|
||||
endforeach()
|
||||
|
||||
if(CUTTER_PACKAGE_DEPENDENCIES AND CUTTER_ENABLE_PYTHON)
|
||||
if(IAITO_PACKAGE_DEPENDENCIES AND IAITO_ENABLE_PYTHON)
|
||||
set(EMBED_PYTHON_SH "${CMAKE_CURRENT_SOURCE_DIR}/appbundle_embed_python.sh")
|
||||
set(PYTHON_FRAMEWORK_DIR "${CUTTER_DEPS}/python/Python.framework")
|
||||
set(PYSIDE_PREFIX "${CUTTER_DEPS}/pyside")
|
||||
set(PYTHON_FRAMEWORK_DIR "${IAITO_DEPS}/python/Python.framework")
|
||||
set(PYSIDE_PREFIX "${IAITO_DEPS}/pyside")
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/MacOSBundlePython.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/MacOSBundlePython.cmake" @ONLY)
|
||||
install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/MacOSBundlePython.cmake")
|
||||
@@ -83,12 +83,12 @@ endif()
|
||||
# rz-ghidra
|
||||
################################################
|
||||
|
||||
if(CUTTER_PACKAGE_RZ_GHIDRA)
|
||||
if(CUTTER_ENABLE_DEPENDENCY_DOWNLOADS)
|
||||
if(IAITO_PACKAGE_RZ_GHIDRA)
|
||||
if(IAITO_ENABLE_DEPENDENCY_DOWNLOADS)
|
||||
# Currently using external project only for downloading source
|
||||
# It neeeds to link against compiled cutter so for now build it using custom install script.
|
||||
# That way rz-ghidra build process is the same as with any other external plugin built against
|
||||
# installed Cutter.
|
||||
# installed Iaito.
|
||||
ExternalProject_Add(rz-ghidra
|
||||
GIT_REPOSITORY https://github.com/rizinorg/rz-ghidra
|
||||
GIT_TAG master
|
||||
@@ -100,11 +100,11 @@ if(CUTTER_PACKAGE_RZ_GHIDRA)
|
||||
if (WIN32)
|
||||
set (GHIDRA_OPTIONS "
|
||||
\"-DRIZIN_INSTALL_PLUGDIR=\${CMAKE_INSTALL_PREFIX}/${RIZIN_INSTALL_PLUGDIR}\"
|
||||
-DCUTTER_INSTALL_PLUGDIR=plugins/native")
|
||||
-DIAITO_INSTALL_PLUGDIR=plugins/native")
|
||||
elseif (APPLE)
|
||||
set (GHIDRA_OPTIONS "
|
||||
\"-DRIZIN_INSTALL_PLUGDIR=\${CMAKE_INSTALL_PREFIX}/${RIZIN_INSTALL_PLUGDIR}\"
|
||||
-DCUTTER_INSTALL_PLUGDIR=plugins/native")
|
||||
-DIAITO_INSTALL_PLUGDIR=plugins/native")
|
||||
else()
|
||||
set (GHIDRA_OPTIONS "")
|
||||
endif()
|
||||
@@ -118,7 +118,7 @@ if(CUTTER_PACKAGE_RZ_GHIDRA)
|
||||
\"-DCMAKE_PREFIX_PATH=\${CMAKE_INSTALL_PREFIX};\${CMAKE_INSTALL_PREFIX}/include/librz;\${CMAKE_INSTALL_PREFIX}/include/librz/sdb;${RZ_GHIDRA_PREFIX_PATH}\"
|
||||
-DCMAKE_INSTALL_PREFIX=\${CMAKE_INSTALL_PREFIX}
|
||||
${GHIDRA_OPTIONS}
|
||||
-DBUILD_CUTTER_PLUGIN=ON
|
||||
-DBUILD_IAITO_PLUGIN=ON
|
||||
-DBUILD_SLEIGH_PLUGIN=OFF
|
||||
-G Ninja
|
||||
)
|
||||
|
||||
Vendored
+1
-1
@@ -12,7 +12,7 @@ execute_process(COMMAND
|
||||
"${EMBED_PYTHON_SH}"
|
||||
"${PYTHON_FRAMEWORK_DIR}"
|
||||
"${BUNDLE_PATH}"
|
||||
"${BUNDLE_PATH}/Contents/MacOS/Cutter"
|
||||
"${BUNDLE_PATH}/Contents/MacOS/Iaito"
|
||||
RESULT_VARIABLE SCRIPT_RESULT)
|
||||
if(SCRIPT_RESULT)
|
||||
message(FATAL_ERROR "Failed to bundle python")
|
||||
|
||||
Vendored
+9
-9
@@ -3,10 +3,10 @@ include(BundleUtilities)
|
||||
set(MACDEPLOYQT_PATH "@MACDEPLOYQT_PATH@")
|
||||
set(INFO_PLIST_PATH "@CPACK_BUNDLE_PLIST@")
|
||||
set(ADJUST_RIZIN_LIBS "@ADJUST_RIZIN_LIBS@")
|
||||
set(CUTTER_ENABLE_CRASH_REPORTS "@CUTTER_ENABLE_CRASH_REPORTS@")
|
||||
set(IAITO_ENABLE_CRASH_REPORTS "@IAITO_ENABLE_CRASH_REPORTS@")
|
||||
set(Breakpad_LINK_LIBRARIES "@Breakpad_LINK_LIBRARIES@")
|
||||
set(CUTTER_PACKAGE_DEPENDENCIES "@CUTTER_PACKAGE_DEPENDENCIES@")
|
||||
set(CUTTER_ENABLE_PYTHON "@CUTTER_ENABLE_PYTHON@")
|
||||
set(IAITO_PACKAGE_DEPENDENCIES "@IAITO_PACKAGE_DEPENDENCIES@")
|
||||
set(IAITO_ENABLE_PYTHON "@IAITO_ENABLE_PYTHON@")
|
||||
|
||||
macro(run_or_die)
|
||||
execute_process(${ARGV} RESULT_VARIABLE PROC_RESULT)
|
||||
@@ -36,10 +36,10 @@ endforeach()
|
||||
foreach(_lib ${ADJUST_RIZIN_LIBS})
|
||||
get_filename_component(_lib "${_lib}" REALPATH)
|
||||
get_filename_component(_name "${_lib}" NAME)
|
||||
# Cutter reference to lib
|
||||
# Iaito reference to lib
|
||||
run_or_die(COMMAND install_name_tool
|
||||
-change "${_lib}" "@rpath/${_name}"
|
||||
"${EXECUTABLE_DIR}/Cutter")
|
||||
"${EXECUTABLE_DIR}/Iaito")
|
||||
# lib LC_ID_DYLIB
|
||||
run_or_die(COMMAND install_name_tool
|
||||
-id "@rpath/${_name}"
|
||||
@@ -57,15 +57,15 @@ endforeach()
|
||||
# Add rpaths because macdeployqt fails to do that properly
|
||||
run_or_die(COMMAND install_name_tool
|
||||
-add_rpath "@executable_path/../Frameworks"
|
||||
"${EXECUTABLE_DIR}/Cutter")
|
||||
"${EXECUTABLE_DIR}/Iaito")
|
||||
run_or_die(COMMAND install_name_tool
|
||||
-add_rpath "@executable_path/../Resources/lib"
|
||||
"${EXECUTABLE_DIR}/Cutter")
|
||||
"${EXECUTABLE_DIR}/Iaito")
|
||||
|
||||
set(MACDEPLOYQT_COMMAND "${MACDEPLOYQT_PATH}" "${BUNDLE_PATH}" "-verbose=2" "-libpath=${CMAKE_INSTALL_PREFIX}/lib")
|
||||
message("Running macdeployqt \"${MACDEPLOYQT_COMMAND}\"")
|
||||
run_or_die(COMMAND ${MACDEPLOYQT_COMMAND}) # First run
|
||||
if (CUTTER_PACKAGE_DEPENDENCIES AND CUTTER_ENABLE_PYTHON)
|
||||
if (IAITO_PACKAGE_DEPENDENCIES AND IAITO_ENABLE_PYTHON)
|
||||
file(REAL_PATH "${FRAMEWORK_DIR}/Python.framework/Python" _python_lib_path)
|
||||
message("Python lib ${_python_lib_path}")
|
||||
list(APPEND MACDEPLOYQT_COMMAND "-executable=${_python_lib_path}")
|
||||
@@ -81,7 +81,7 @@ foreach(_lib ${ADJUST_RIZIN_LIBS})
|
||||
file(REMOVE "${BUNDLE_PATH}/Contents/Frameworks/${_name}")
|
||||
endforeach()
|
||||
|
||||
if (CUTTER_ENABLE_CRASH_REPORTS)
|
||||
if (IAITO_ENABLE_CRASH_REPORTS)
|
||||
message("Copying Breakpad ${Breakpad_LINK_LIBRARIES}")
|
||||
set(_breakpad_lib "Versions/A/Breakpad")
|
||||
copy_resolved_framework_into_bundle("${Breakpad_LINK_LIBRARIES}/${_breakpad_lib}" "${FRAMEWORK_DIR}/Breakpad.framework/${_breakpad_lib}")
|
||||
|
||||
Vendored
+6
-2
@@ -1,7 +1,11 @@
|
||||
NAME=r2cutter
|
||||
NAME=iaito
|
||||
SECTION=editors
|
||||
PRIORITY=optional
|
||||
DEPENDS=qt5-default libqt5svg5
|
||||
MAINTAINER=pancake <[email protected]>
|
||||
ARCH?=amd64
|
||||
VERSION?=$(shell r2 -qv)
|
||||
VERSION=$(shell ../../../configure -qV)
|
||||
ifeq ($(VERSION),)
|
||||
error:
|
||||
@echo Cannot retrieve version number from r2
|
||||
endif
|
||||
Vendored
+3
-3
@@ -1,8 +1,8 @@
|
||||
all:
|
||||
make -C r2cutter
|
||||
make -C iaito
|
||||
|
||||
clean:
|
||||
make -C r2cutter clean
|
||||
make -C iaito clean
|
||||
|
||||
mrproper:
|
||||
make -C r2cutter mrproper
|
||||
make -C iaito mrproper
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
PACKAGE=r2cutter
|
||||
PACKAGE=iaito
|
||||
|
||||
include ../CONFIG
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
QT frontend for radare2
|
||||
This is the continuation of Iaito after the project forked out so it keeps using radare2 as backend.
|
||||
@@ -19,7 +19,7 @@ all:
|
||||
$(MAKE) deb
|
||||
|
||||
root:
|
||||
cd ../../.. && $(MAKE) && $(MAKE) install PREFIX=/usr DESTDIR=/tmp/r2cutter-deb
|
||||
mv /tmp/r2cutter-deb root
|
||||
cd ../../.. && $(MAKE) && $(MAKE) install PREFIX=/usr DESTDIR=/tmp/iaito-deb
|
||||
mv /tmp/iaito-deb root
|
||||
|
||||
include ../deb_hand.mak
|
||||
Vendored
-3
@@ -1,3 +0,0 @@
|
||||
QT frontend for radare2
|
||||
This is the continuation of Cutter after the project forked out so it keeps using radare2 as backend.
|
||||
|
||||
Vendored
+6
-6
@@ -2,7 +2,7 @@
|
||||
<installer-gui-script minSpecVersion="2">
|
||||
<title>Radare</title>
|
||||
<license file="COPYING.LESSER" mime-type="text/plain"/>
|
||||
<pkg-ref id="org.radare.r2cutter">
|
||||
<pkg-ref id="org.radare.iaito">
|
||||
<bundle-version/>
|
||||
</pkg-ref>
|
||||
<options customize="never" require-scripts="false" hostArchitectures="i386,x86_64,arm64"/>
|
||||
@@ -13,14 +13,14 @@
|
||||
</volume-check>
|
||||
<choices-outline>
|
||||
<line choice="default">
|
||||
<line choice="org.radare.r2cutter"/>
|
||||
<line choice="org.radare.iaito"/>
|
||||
</line>
|
||||
</choices-outline>
|
||||
<choice id="default" customLocation="usr"/>
|
||||
<choice id="org.radare.r2cutter" visible="false">
|
||||
<pkg-ref id="org.radare.r2cutter"/>
|
||||
<choice id="org.radare.iaito" visible="false">
|
||||
<pkg-ref id="org.radare.iaito"/>
|
||||
</choice>
|
||||
<pkg-ref id="org.radare.r2cutter" version="0" onConclusion="none" installKBytes="51182">#r2cutter.pkg</pkg-ref>
|
||||
<pkg-ref id="org.radare.iaito" version="0" onConclusion="none" installKBytes="51182">#iaito.pkg</pkg-ref>
|
||||
<welcome file="welcome.rtf" mime-type="text/enriched"/>
|
||||
<background file="r2cutter.png" mime-type="image/png" alignment="bottomleft"/>
|
||||
<background file="iaito-o.png" mime-type="image/png" alignment="bottomleft"/>
|
||||
</installer-gui-script>
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
Vendored
+13
-9
@@ -4,16 +4,16 @@
|
||||
# http://blog.coolaj86.com/articles/how-to-unpackage-and-repackage-pkg-macos.html
|
||||
|
||||
# to uninstall:
|
||||
# sudo pkgutil --forget org.radare.r2cutter
|
||||
# sudo pkgutil --forget org.radare.iaito
|
||||
|
||||
SRC=/tmp/r2cutter-macos
|
||||
SRC=/tmp/iaito-macos
|
||||
PREFIX=/usr/local
|
||||
DST="$(pwd)/macos-pkg/r2cutter.unpkg"
|
||||
DST="$(pwd)/macos-pkg/iaito.unpkg"
|
||||
if [ -n "$1" ]; then
|
||||
VERSION="$1"
|
||||
else
|
||||
VERSION="`./configure -qv`"
|
||||
[ -z "${VERSION}" ] && VERSION=5.1.0
|
||||
VERSION="`../../configure -qV`"
|
||||
[ -z "${VERSION}" ] && VERSION=5.2.2
|
||||
fi
|
||||
[ -z "${MAKE}" ] && MAKE=make
|
||||
|
||||
@@ -25,11 +25,15 @@ done
|
||||
|
||||
[ ! -x "$PWD/configure" ] && exit 1
|
||||
|
||||
rm -rf "${SRC}"
|
||||
${MAKE} mrproper 2>/dev/null
|
||||
pwd
|
||||
if [ ! -d build/iaito.app ]; then
|
||||
rm -rf "${SRC}"
|
||||
${MAKE} mrproper 2>/dev/null
|
||||
# ${MAKE} -j4 || exit 1
|
||||
fi
|
||||
export CFLAGS=-O2
|
||||
./configure --prefix="${PREFIX}" || exit 1
|
||||
# ${MAKE} -j4 || exit 1
|
||||
make -C .. translations
|
||||
${MAKE} install PREFIX="${PREFIX}" DESTDIR=${SRC} || exit 1
|
||||
mkdir -p "${DST}"
|
||||
if [ -d "${SRC}" ]; then
|
||||
@@ -39,7 +43,7 @@ if [ -d "${SRC}" ]; then
|
||||
)
|
||||
mkbom ${SRC} "${DST}/Bom"
|
||||
# Repackage
|
||||
pkgutil --flatten "${DST}" "${DST}/../r2cutter-${VERSION}.pkg"
|
||||
pkgutil --flatten "${DST}" "${DST}/../iaito-${VERSION}.pkg"
|
||||
else
|
||||
echo "Failed install. DESTDIR is empty"
|
||||
exit 1
|
||||
|
||||
+3
-3
@@ -20,11 +20,11 @@ RUN apk add --no-cache \
|
||||
unzip \
|
||||
wget
|
||||
|
||||
# Get, compile and test Cutter from master branch
|
||||
# Get, compile and test Iaito from master branch
|
||||
RUN git clone --recurse-submodules https://github.com/radareorg/cutter.git /opt/cutter
|
||||
RUN cd /opt/cutter && \
|
||||
yes | bash build.sh && \
|
||||
bash -c 'if [[ ! -x "/opt/cutter/build/Cutter" ]]; then exit -1; fi'
|
||||
bash -c 'if [[ ! -x "/opt/cutter/build/Iaito" ]]; then exit -1; fi'
|
||||
|
||||
FROM alpine:latest AS runner
|
||||
|
||||
@@ -38,7 +38,7 @@ RUN apk add --no-cache \
|
||||
shadow \
|
||||
su-exec
|
||||
|
||||
# Get the compiled Cutter, r2 libs and bins from the builder
|
||||
# Get the compiled Iaito, r2 libs and bins from the builder
|
||||
COPY --from=builder /opt/cutter /opt/cutter
|
||||
COPY --from=builder /usr/lib /usr/lib
|
||||
COPY --from=builder /usr/share/radare2 /usr/share/radare2
|
||||
|
||||
@@ -34,7 +34,7 @@ COPY scripts /opt/cutter/scripts
|
||||
COPY src /opt/cutter/src
|
||||
|
||||
RUN bash build_cutter.sh && \
|
||||
bash -c 'if [[ ! -x "/opt/cutter/build/Cutter" ]]; then exit -1; fi'
|
||||
bash -c 'if [[ ! -x "/opt/cutter/build/Iaito" ]]; then exit -1; fi'
|
||||
|
||||
FROM alpine:latest AS runner
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
@@ -61,7 +61,7 @@ RUN mkdir /var/sharedFolder && \
|
||||
|
||||
COPY ./docker/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
|
||||
# Get the compiled Cutter, r2 libs and bins from the builder
|
||||
# Get the compiled Iaito, r2 libs and bins from the builder
|
||||
COPY --from=builder /opt/cutter /opt/cutter
|
||||
COPY --from=builder /usr/lib /usr/lib
|
||||
COPY --from=builder /usr/share/radare2 /usr/share/radare2
|
||||
|
||||
+2
-2
@@ -37,7 +37,7 @@ build-nc: ## Build the container without caching
|
||||
|
||||
run: ## Run container
|
||||
XSOCK=/tmp/.X11-unix && \
|
||||
XAUTH=$(shell mktemp /tmp/r2cutter_tmp.XXX.xauth) && \
|
||||
XAUTH=$(shell mktemp /tmp/iaito_tmp.XXX.xauth) && \
|
||||
xauth nlist $$DISPLAY | sed -e 's/^..../ffff/' | xauth -f $$XAUTH nmerge - && \
|
||||
chmod 644 $$XAUTH && \
|
||||
touch $(DIR)/radare2rc && \
|
||||
@@ -60,7 +60,7 @@ run: ## Run container
|
||||
$(IMAGE_NAME):$(VERSION) $(RUNFLAGS) && \
|
||||
rm $$XAUTH
|
||||
|
||||
get: ## Get the latest Cutter image
|
||||
get: ## Get the latest Iaito image
|
||||
sudo docker pull $(IMAGE_NAME):$(VERSION)
|
||||
|
||||
stop: ## Stop a running container
|
||||
|
||||
+4
-4
@@ -1,6 +1,6 @@
|
||||
# Docker Configuration for Cutter
|
||||
# Docker Configuration for Iaito
|
||||
|
||||
These files provide an easy way to deploy *Cutter* in a Docker container. After additional configuration you may want to apply to the `Makefile`, execute `make run`. By default, the *Cutter* image on [Docker Hub](https://hub.docker.com/r/radareorg/cutter/) will be used along with additional UID, capability, X and mount settings:
|
||||
These files provide an easy way to deploy *Iaito* in a Docker container. After additional configuration you may want to apply to the `Makefile`, execute `make run`. By default, the *Iaito* image on [Docker Hub](https://hub.docker.com/r/radareorg/cutter/) will be used along with additional UID, capability, X and mount settings:
|
||||
|
||||
- Xauthority settings which avoid using potentially insecure `xhost` directives. The settings have been adapted from [this post](https://stackoverflow.com/questions/16296753/can-you-run-gui-apps-in-a-docker-container/25280523#25280523).
|
||||
- Mount directives to mount a shared folder and radare2 configuration files.
|
||||
@@ -8,11 +8,11 @@ These files provide an easy way to deploy *Cutter* in a Docker container. After
|
||||
|
||||
## Using Local Files
|
||||
|
||||
To deploy *Cutter* using local files rather than those in the Master branch set LOCAL_DEV to 'y' when executing `make build` or `make build-nc`, e.g. `make LOCAL_DEV=y build`. This will tell *make* to use `Dockerfile-dev` rather than `Dockerfile` which will copy local files into the container rather than cloning from Git.
|
||||
To deploy *Iaito* using local files rather than those in the Master branch set LOCAL_DEV to 'y' when executing `make build` or `make build-nc`, e.g. `make LOCAL_DEV=y build`. This will tell *make* to use `Dockerfile-dev` rather than `Dockerfile` which will copy local files into the container rather than cloning from Git.
|
||||
|
||||
## Mounting and Using a Specific Binary
|
||||
|
||||
The `Makefile` allows mounting a single binary file as read-only, which will also be used as an input for *Cutter*. To use this feature, execute `make run BINARY=/absolute/path/to/binary`.
|
||||
The `Makefile` allows mounting a single binary file as read-only, which will also be used as an input for *Iaito*. To use this feature, execute `make run BINARY=/absolute/path/to/binary`.
|
||||
|
||||
## Additional Notes
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ find_qmake() {
|
||||
qmakepath=$(command -v qmake)
|
||||
fi
|
||||
if [ -z "$qmakepath" ]; then
|
||||
echo "You need qmake to build Cutter."
|
||||
echo "You need qmake to build Iaito."
|
||||
echo "Please make sure qmake is in your PATH environment variable."
|
||||
exit 1
|
||||
fi
|
||||
@@ -29,7 +29,7 @@ find_lrelease() {
|
||||
lreleasepath=$(command -v lrelease)
|
||||
fi
|
||||
if [ -z "$lreleasepath" ]; then
|
||||
echo "You need lrelease to build Cutter."
|
||||
echo "You need lrelease to build Iaito."
|
||||
echo "Please make sure lrelease is in your PATH environment variable."
|
||||
exit 1
|
||||
fi
|
||||
@@ -44,7 +44,7 @@ find_gmake() {
|
||||
|
||||
${gmakepath} --help 2>&1 | grep -q gnu
|
||||
if [ $? != 0 ]; then
|
||||
echo "You need GNU make to build Cutter."
|
||||
echo "You need GNU make to build Iaito."
|
||||
echo "Please make sure gmake is in your PATH environment variable."
|
||||
exit 1
|
||||
fi
|
||||
@@ -67,15 +67,15 @@ prepare_breakpad() {
|
||||
}
|
||||
|
||||
# Create translations
|
||||
$(find_lrelease) ./src/Cutter.pro
|
||||
$(find_lrelease) ./src/Iaito.pro
|
||||
|
||||
# Build
|
||||
if [ "${QMAKE_CONF#*CUTTER_ENABLE_CRASH_REPORTS=true}" != "$QMAKE_CONF" ]; then
|
||||
if [ "${QMAKE_CONF#*IAITO_ENABLE_CRASH_REPORTS=true}" != "$QMAKE_CONF" ]; then
|
||||
prepare_breakpad
|
||||
fi
|
||||
mkdir -p "$BUILD"
|
||||
cd "$BUILD" || exit 1
|
||||
$(find_qmake) ../src/Cutter.pro "$QMAKE_CONF"
|
||||
$(find_qmake) ../src/Iaito.pro "$QMAKE_CONF"
|
||||
$(find_gmake) -j4
|
||||
ERR=$((ERR+$?))
|
||||
|
||||
@@ -90,12 +90,12 @@ if [ ${ERR} -gt 0 ]; then
|
||||
echo "Something went wrong!"
|
||||
else
|
||||
echo "Build complete."
|
||||
printf "This build of Cutter will be installed. Do you agree? [Y/n] "
|
||||
printf "This build of Iaito will be installed. Do you agree? [Y/n] "
|
||||
read -r answer
|
||||
if [ -z "$answer" ] || [ "$answer" = "Y" ] || [ "$answer" = "y" ]; then
|
||||
$(find_gmake) install
|
||||
else
|
||||
echo "Binary available at $BUILD/Cutter"
|
||||
echo "Binary available at $BUILD/Iaito"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#!/bin/bash
|
||||
USERNAME="r2"
|
||||
|
||||
echo "Cutter: Starting with UID:GID $LOCAL_USER_ID:$LOCAL_GROUP_ID"
|
||||
echo "Iaito: Starting with UID:GID $LOCAL_USER_ID:$LOCAL_GROUP_ID"
|
||||
usermod -u $LOCAL_USER_ID $USERNAME
|
||||
usermod -g $LOCAL_GROUP_ID $USERNAME
|
||||
export HOME=/home/$USERNAME
|
||||
|
||||
exec su-exec $USERNAME "/opt/cutter/build/Cutter" $@
|
||||
exec su-exec $USERNAME "/opt/cutter/build/Iaito" $@
|
||||
+1
-1
@@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
|
||||
# title of most generated pages and in a few other places.
|
||||
# The default value is: My Project.
|
||||
|
||||
PROJECT_NAME = "r2cutter"
|
||||
PROJECT_NAME = "iaito"
|
||||
|
||||
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Cutter graph export</dc:title>
|
||||
<dc:title>Iaito graph export</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
@@ -54,7 +54,7 @@
|
||||
inkscape:current-layer="svg1246"
|
||||
units="px" />
|
||||
<title
|
||||
id="title2">Cutter graph export</title>
|
||||
id="title2">Iaito graph export</title>
|
||||
<desc
|
||||
id="desc4">Generated with Qt</desc>
|
||||
<defs
|
||||
|
||||
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
+47
-47
@@ -3,7 +3,7 @@ Building
|
||||
|
||||
.. note::
|
||||
|
||||
If you just want to use the latest Release version of r2cutter, please note
|
||||
If you just want to use the latest Release version of iaito, please note
|
||||
that we provide pre-compiled binaries for Windows, Linux and macOS on
|
||||
our `release page. <https://github.com/radareorg/cutter/releases/latest>`_
|
||||
|
||||
@@ -17,15 +17,15 @@ Make sure you've ``git`` installed in your system (`Installation guide <https://
|
||||
git clone --recurse-submodules https://github.com/radareorg/cutter
|
||||
|
||||
|
||||
This will clone the r2cutter source and it's dependencies(radare2, etc.)
|
||||
This will clone the iaito source and it's dependencies(radare2, etc.)
|
||||
under **cutter** and you should see the following dir structure:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
cutter/-|
|
||||
|-docs/ # r2cutter Documentation
|
||||
|-docs/ # iaito Documentation
|
||||
|-radare2/ # radare2 submodule
|
||||
|-src/ # r2cutter Source Code
|
||||
|-src/ # iaito Source Code
|
||||
|
||||
Following sections assume that **cutter** is your working dir. (if not, do ``cd cutter``)
|
||||
|
||||
@@ -52,7 +52,7 @@ On Linux, you will need:
|
||||
|
||||
`*` Recommended while building with ``make``/``Cmake``.
|
||||
|
||||
`**` Optional. If present, these add extra features to r2cutter. See `CMake Building Options`_.
|
||||
`**` Optional. If present, these add extra features to iaito. See `CMake Building Options`_.
|
||||
|
||||
On Debian-based Linux distributions, all of these essential packages can be installed with this single command:
|
||||
|
||||
@@ -72,37 +72,37 @@ On Arch-based Linux distributions:
|
||||
Building Steps
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
The recommended way to build r2cutter on Linux is by using CMake. Simply invoke CMake to build r2cutter and its dependency radare2.
|
||||
The recommended way to build iaito on Linux is by using CMake. Simply invoke CMake to build iaito and its dependency radare2.
|
||||
|
||||
.. code:: sh
|
||||
|
||||
mkdir build && cd build
|
||||
cmake -DCUTTER_USE_BUNDLED_RADARE2=ON ../src
|
||||
cmake -DIAITO_USE_BUNDLED_RADARE2=ON ../src
|
||||
cmake --build .
|
||||
|
||||
If your operating system has a newer version of CMake (> v3.12) you can use this cleaner solution:
|
||||
|
||||
.. code:: sh
|
||||
|
||||
cmake -S src -B build -DCUTTER_USE_BUNDLED_RADARE2=ON
|
||||
cmake -S src -B build -DIAITO_USE_BUNDLED_RADARE2=ON
|
||||
cmake --build build
|
||||
|
||||
.. note::
|
||||
If you want to use r2cutter with another version of radare2 you can omit ``-DCUTTER_USE_BUNDLED_RADARE2=ON``. Note that using a version of radare2 which isn't the version r2cutter is using can cause issues and the compilation might fail.
|
||||
If you want to use iaito with another version of radare2 you can omit ``-DIAITO_USE_BUNDLED_RADARE2=ON``. Note that using a version of radare2 which isn't the version iaito is using can cause issues and the compilation might fail.
|
||||
|
||||
.. note::
|
||||
|
||||
If you are interested in building r2cutter with support for Python plugins,
|
||||
If you are interested in building iaito with support for Python plugins,
|
||||
Syntax Highlighting, Crash Reporting and more,
|
||||
please look at the full list of `CMake Building Options`_.
|
||||
|
||||
|
||||
After the build process is complete, you should have the ``r2cutter`` executable in the **build** dir.
|
||||
You can now execute r2cutter like this:
|
||||
After the build process is complete, you should have the ``iaito`` executable in the **build** dir.
|
||||
You can now execute iaito like this:
|
||||
|
||||
.. code:: sh
|
||||
|
||||
./build/r2cutter
|
||||
./build/iaito
|
||||
|
||||
|
||||
Building on Windows
|
||||
@@ -111,8 +111,8 @@ Building on Windows
|
||||
Requirements
|
||||
~~~~~~~~~~~~
|
||||
|
||||
r2cutter works on Windows 7 or newer.
|
||||
To compile r2cutter it is necessary to have the following installed:
|
||||
iaito works on Windows 7 or newer.
|
||||
To compile iaito it is necessary to have the following installed:
|
||||
|
||||
* A version of Visual Studio (2015, 2017 and 2019 are supported)
|
||||
* CMake
|
||||
@@ -121,7 +121,7 @@ To compile r2cutter it is necessary to have the following installed:
|
||||
Recommended Way
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
To build r2cutter on Windows machines using CMake,
|
||||
To build iaito on Windows machines using CMake,
|
||||
you will have to make sure that the executables are available
|
||||
in your ``%PATH%`` environment variable.
|
||||
|
||||
@@ -138,13 +138,13 @@ Note that the paths below may vary depending on your version of Qt and Visual St
|
||||
Click ``Configure`` and select your version of Visual Studio from the list,
|
||||
for example ``Visual Studio 14 2015``.
|
||||
After the configuration is done, click ``Generate`` and you can open
|
||||
``r2cutter.sln`` to compile the code as usual.
|
||||
``iaito.sln`` to compile the code as usual.
|
||||
|
||||
|
||||
Building with Meson
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
There is another way to compile r2cutter on Windows if the one above does
|
||||
There is another way to compile iaito on Windows if the one above does
|
||||
not work or does not suit your needs.
|
||||
|
||||
Additional requirements:
|
||||
@@ -153,7 +153,7 @@ Additional requirements:
|
||||
- Meson build system
|
||||
|
||||
Download and unpack
|
||||
`Ninja <https://github.com/ninja-build/ninja/releases>`__ to the r2cutter
|
||||
`Ninja <https://github.com/ninja-build/ninja/releases>`__ to the iaito
|
||||
source root directory (ie. **cutter** - working dir).
|
||||
|
||||
Note that in the below steps, the paths may vary depending on your version of Qt and Visual Studio.
|
||||
@@ -175,7 +175,7 @@ Install Meson:
|
||||
|
||||
python -m pip install meson
|
||||
|
||||
To compile r2cutter, run:
|
||||
To compile iaito, run:
|
||||
|
||||
.. code:: batch
|
||||
|
||||
@@ -193,7 +193,7 @@ Using QtCreator
|
||||
|
||||
One standard way is to simply load the project inside QtCreator.
|
||||
To do so, open QtCreator and on the welcome screen click on "Open Project",
|
||||
and finally select the ``cutter/src/r2cutter.pro`` file.
|
||||
and finally select the ``cutter/src/iaito.pro`` file.
|
||||
QtCreator will then allow you to directly edit the source code and build the project.
|
||||
|
||||
.. note::
|
||||
@@ -205,7 +205,7 @@ Compiling on Linux / macOS
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The easiest way, but not the one we recommend, is to simply run ``./build.sh`` from the root directory,
|
||||
and let the magic happen. The script will use ``qmake`` to build r2cutter.
|
||||
and let the magic happen. The script will use ``qmake`` to build iaito.
|
||||
The ``build.sh`` script is meant to be deprecated and will be deleted in the future.
|
||||
|
||||
If you want to manually use qmake, follow these steps:
|
||||
@@ -213,7 +213,7 @@ If you want to manually use qmake, follow these steps:
|
||||
.. code:: sh
|
||||
|
||||
mkdir build; cd build
|
||||
qmake ../src/r2cutter.pro
|
||||
qmake ../src/iaito.pro
|
||||
make
|
||||
cd ..
|
||||
|
||||
@@ -224,8 +224,8 @@ On macOS you will also have to copy the launcher bash script:
|
||||
|
||||
.. code:: sh
|
||||
|
||||
mv r2cutter.app/Contents/MacOS/r2cutter r2cutter.app/Contents/MacOS/r2cutter.bin
|
||||
cp ../src/macos/r2cutter r2cutter.app/Contents/MacOS/r2cutter && chmod +x r2cutter.app/Contents/MacOS/r2cutter
|
||||
mv iaito.app/Contents/MacOS/iaito iaito.app/Contents/MacOS/iaito.bin
|
||||
cp ../src/macos/iaito iaito.app/Contents/MacOS/iaito && chmod +x iaito.app/Contents/MacOS/iaito
|
||||
|
||||
|
||||
--------------
|
||||
@@ -235,41 +235,41 @@ CMake Building Options
|
||||
|
||||
Note that there are some major building options available:
|
||||
|
||||
* ``CUTTER_USE_BUNDLED_RADARE2`` automatically compile Radare2 from submodule.
|
||||
* ``CUTTER_ENABLE_PYTHON`` compile with Python support.
|
||||
* ``CUTTER_ENABLE_PYTHON_BINDINGS`` automatically generate Python Bindings with Shiboken2, required for Python plugins!
|
||||
* ``CUTTER_ENABLE_KSYNTAXHIGHLIGHTING`` use KSyntaxHighlighting for code highlighting.
|
||||
* ``CUTTER_ENABLE_GRAPHVIZ`` enable Graphviz for graph layouts.
|
||||
* ``CUTTER_EXTRA_PLUGIN_DIRS`` List of addition plugin locations. Useful when preparing package for Linux distros that have strict package layout rules.
|
||||
* ``IAITO_USE_BUNDLED_RADARE2`` automatically compile Radare2 from submodule.
|
||||
* ``IAITO_ENABLE_PYTHON`` compile with Python support.
|
||||
* ``IAITO_ENABLE_PYTHON_BINDINGS`` automatically generate Python Bindings with Shiboken2, required for Python plugins!
|
||||
* ``IAITO_ENABLE_KSYNTAXHIGHLIGHTING`` use KSyntaxHighlighting for code highlighting.
|
||||
* ``IAITO_ENABLE_GRAPHVIZ`` enable Graphviz for graph layouts.
|
||||
* ``IAITO_EXTRA_PLUGIN_DIRS`` List of addition plugin locations. Useful when preparing package for Linux distros that have strict package layout rules.
|
||||
|
||||
r2cutter binary release options, not needed for most users and might not work easily outside CI environment:
|
||||
iaito binary release options, not needed for most users and might not work easily outside CI environment:
|
||||
|
||||
* ``CUTTER_ENABLE_CRASH_REPORTS`` is used to compile r2cutter with crash handling system enabled (Breakpad).
|
||||
* ``CUTTER_ENABLE_DEPENDENCY_DOWNLOADS`` Enable downloading of dependencies. Setting to OFF doesn't affect any downloads done by r2 build. This option is used for preparing r2cutter binary release packges. Turned off by default.
|
||||
* ``CUTTER_PACKAGE_DEPENDENCIES`` During install step include the third party dependencies. This option is used for preparing r2cutter binary release packges.
|
||||
* ``IAITO_ENABLE_CRASH_REPORTS`` is used to compile iaito with crash handling system enabled (Breakpad).
|
||||
* ``IAITO_ENABLE_DEPENDENCY_DOWNLOADS`` Enable downloading of dependencies. Setting to OFF doesn't affect any downloads done by r2 build. This option is used for preparing iaito binary release packges. Turned off by default.
|
||||
* ``IAITO_PACKAGE_DEPENDENCIES`` During install step include the third party dependencies. This option is used for preparing iaito binary release packges.
|
||||
|
||||
|
||||
These options can be enabled or disabled from the command line arguments passed to CMake.
|
||||
For example, to build r2cutter with support for Python plugins, you can run this command:
|
||||
For example, to build iaito with support for Python plugins, you can run this command:
|
||||
|
||||
::
|
||||
|
||||
cmake -B build -DCUTTER_ENABLE_PYTHON=ON -DCUTTER_ENABLE_PYTHON_BINDINGS=ON
|
||||
cmake -B build -DIAITO_ENABLE_PYTHON=ON -DIAITO_ENABLE_PYTHON_BINDINGS=ON
|
||||
|
||||
Or if one wants to explicitly disable an option:
|
||||
|
||||
::
|
||||
|
||||
cmake -B build -DCUTTER_ENABLE_PYTHON=OFF
|
||||
cmake -B build -DIAITO_ENABLE_PYTHON=OFF
|
||||
|
||||
|
||||
--------------
|
||||
|
||||
Compiling r2cutter with Breakpad Support
|
||||
Compiling iaito with Breakpad Support
|
||||
--------------------------------------
|
||||
|
||||
If you want to build r2cutter with crash handling system, you will want to first prepare Breakpad.
|
||||
For this, simply run one of the scripts (according to your OS) from root r2cutter directory:
|
||||
If you want to build iaito with crash handling system, you will want to first prepare Breakpad.
|
||||
For this, simply run one of the scripts (according to your OS) from root iaito directory:
|
||||
|
||||
.. code:: sh
|
||||
|
||||
@@ -306,12 +306,12 @@ containing bin/, lib/, include/, etc.) and specify it to CMake using
|
||||
rm CMakeCache.txt # the cache may be polluted with unwanted libraries found before
|
||||
cmake -DCMAKE_PREFIX_PATH=/opt/Qt/5.9.1/gcc_64 ..
|
||||
|
||||
* **Radare2's libr_*.so cannot be found when running r2cutter**
|
||||
* **Radare2's libr_*.so cannot be found when running iaito**
|
||||
|
||||
./r2cutter: error while loading shared libraries: libr_lang.so: cannot open shared object file: No such file or directory
|
||||
./iaito: error while loading shared libraries: libr_lang.so: cannot open shared object file: No such file or directory
|
||||
|
||||
The exact r2 .so file that cannot be found may vary. On some systems, the linker by default uses RUNPATH instead of RPATH which is incompatible with the way r2 is currently compiled. It results in some of the r2 libraries not being found when running cutter. You can verify if this is the problem by running `ldd ./r2cutter`. If all the r2 libraries are missing you have a different problem.
|
||||
The workaround is to either add the `--disable-new-dtags` linker flag when compiling r2cutter or add the r2 installation path to LD_LIBRARY_PATH environment variable.
|
||||
The exact r2 .so file that cannot be found may vary. On some systems, the linker by default uses RUNPATH instead of RPATH which is incompatible with the way r2 is currently compiled. It results in some of the r2 libraries not being found when running cutter. You can verify if this is the problem by running `ldd ./iaito`. If all the r2 libraries are missing you have a different problem.
|
||||
The workaround is to either add the `--disable-new-dtags` linker flag when compiling iaito or add the r2 installation path to LD_LIBRARY_PATH environment variable.
|
||||
|
||||
::
|
||||
|
||||
@@ -322,7 +322,7 @@ The workaround is to either add the `--disable-new-dtags` linker flag when compi
|
||||
r_util/r_annotated_code.h: No such file or directory
|
||||
|
||||
If you face an error where some header file starting with ``r_`` is missing, you should check the **radare2** submodule and
|
||||
make sure it is in sync with upstream **r2cutter** repo. Simply run:
|
||||
make sure it is in sync with upstream **iaito** repo. Simply run:
|
||||
|
||||
::
|
||||
|
||||
@@ -363,7 +363,7 @@ installed with brew. Run this command to work around the issue:
|
||||
|
||||
sudo mv /usr/local/lib/libjpeg.dylib /usr/local/lib/libjpeg.dylib.not-found
|
||||
* **LSOpenURLsWithRole() failed with error -10810**
|
||||
On macOS High Sierra r2cutter crashes due to the absence of ``gettext`` library. To fix this problem, simply install the missing package:
|
||||
On macOS High Sierra iaito crashes due to the absence of ``gettext`` library. To fix this problem, simply install the missing package:
|
||||
|
||||
::
|
||||
|
||||
|
||||
+9
-9
@@ -19,9 +19,9 @@
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = 'Cutter'
|
||||
copyright = '2020, The Cutter Developers'
|
||||
author = 'The Cutter Developers'
|
||||
project = 'Iaito'
|
||||
copyright = '2020, The Iaito Developers'
|
||||
author = 'The Iaito Developers'
|
||||
|
||||
# The short X.Y version
|
||||
version = '1.12'
|
||||
@@ -129,7 +129,7 @@ html_sidebars = {
|
||||
# -- Options for HTMLHelp output ---------------------------------------------
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'CutterDoc'
|
||||
htmlhelp_basename = 'IaitoDoc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output ------------------------------------------------
|
||||
@@ -156,8 +156,8 @@ latex_elements = {
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, 'Cutter.tex', 'Cutter Documentation',
|
||||
'The Cutter Developers', 'manual'),
|
||||
(master_doc, 'Iaito.tex', 'Iaito Documentation',
|
||||
'The Iaito Developers', 'manual'),
|
||||
]
|
||||
|
||||
|
||||
@@ -166,7 +166,7 @@ latex_documents = [
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
(master_doc, 'cutter', 'Cutter Documentation',
|
||||
(master_doc, 'cutter', 'Iaito Documentation',
|
||||
[author], 1)
|
||||
]
|
||||
|
||||
@@ -177,8 +177,8 @@ man_pages = [
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, 'Cutter', 'Cutter Documentation',
|
||||
author, 'Cutter', 'One line description of project.',
|
||||
(master_doc, 'Iaito', 'Iaito Documentation',
|
||||
author, 'Iaito', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
Contributing to Cutter
|
||||
Contributing to Iaito
|
||||
=======================
|
||||
|
||||
So you like Cutter and want to get involved? Great! This part of the documentation will help and guide you through everything you need to know when contributing to Cutter. Welcome, we're delighted to see you!
|
||||
So you like Iaito and want to get involved? Great! This part of the documentation will help and guide you through everything you need to know when contributing to Iaito. Welcome, we're delighted to see you!
|
||||
|
||||
.. tip::
|
||||
**Need help?** Our community strives to be friendly, open, and accessible for new contributors. If you have any difficulties getting involved or finding answers to you questions, please `come and ask your questions on our Telegram or IRC groups <https://cutter.re/#community>`_.
|
||||
|
||||
We know that set up to work on Cutter and finding issues that are a good fit for your skills can be a challenge. We're always looking for ways to improve this process: making Cutter more open, accessible, and easier to participate with. If you're having any trouble following this documentation or hit a barrier you can't get around, please contact us.
|
||||
We know that set up to work on Iaito and finding issues that are a good fit for your skills can be a challenge. We're always looking for ways to improve this process: making Iaito more open, accessible, and easier to participate with. If you're having any trouble following this documentation or hit a barrier you can't get around, please contact us.
|
||||
|
||||
.. rubric:: How do you want to help?
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ Developer Documentation
|
||||
=======================
|
||||
|
||||
.. note::
|
||||
New to Cutter development? Check out our :doc:`tutorial for new developers <code/getting-started>`.
|
||||
New to Iaito development? Check out our :doc:`tutorial for new developers <code/getting-started>`.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
Crash Handling System
|
||||
=====================
|
||||
|
||||
Cutter uses `Breakpad <https://github.com/google/breakpad>`__ as a backend
|
||||
Iaito uses `Breakpad <https://github.com/google/breakpad>`__ as a backend
|
||||
for crash handling.
|
||||
|
||||
Crash Handling System is disabled by default to not interfere with developers while debugging.
|
||||
To enable this system, set the ``CUTTER_ENABLE_CRASH_REPORTS`` build option.
|
||||
To enable this system, set the ``IAITO_ENABLE_CRASH_REPORTS`` build option.
|
||||
|
||||
Solution Description
|
||||
--------------------
|
||||
@@ -16,7 +16,7 @@ There are only 2 source files:
|
||||
* ``CrashHandler.cpp``
|
||||
|
||||
And the API is very simple: One function, ``initCrashHandler()``, enables the Crash Handling System if
|
||||
``CUTTER_ENABLE_CRASH_REPORTS`` is true, otherwise it does nothing.
|
||||
``IAITO_ENABLE_CRASH_REPORTS`` is true, otherwise it does nothing.
|
||||
|
||||
As soon as a signal is raised, ``crashHandler(int signum)`` is called with the signal's code as an argument.
|
||||
This function first writes a crash dump to the operating system's temporary directory to catch core and
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
|
||||
Cutter Development Guidelines
|
||||
Iaito Development Guidelines
|
||||
===============================
|
||||
|
||||
.. note::
|
||||
New to Cutter development? Check out our :doc:`tutorial for new developers <getting-started>`.
|
||||
New to Iaito development? Check out our :doc:`tutorial for new developers <getting-started>`.
|
||||
|
||||
|
||||
Common Usage
|
||||
--------------
|
||||
|
||||
CutterCore Class
|
||||
IaitoCore Class
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
This is the main class where every link with r2 is made. It is *unique*
|
||||
@@ -26,17 +26,17 @@ Calling a radare2 Command
|
||||
|
||||
There are multiple ways to call a radare2 command:
|
||||
|
||||
- ``CutterCore::cmdj(<command>)`` - To be used with json commands like ``cmdj("agj")`` or ``cmdj("aflj")``.
|
||||
- ``IaitoCore::cmdj(<command>)`` - To be used with json commands like ``cmdj("agj")`` or ``cmdj("aflj")``.
|
||||
This is the command we used to fetch structured data from radare2.
|
||||
|
||||
- ``CutterCore::cmdRaw(<command>)`` - Executes a single radare2 command
|
||||
- ``IaitoCore::cmdRaw(<command>)`` - Executes a single radare2 command
|
||||
without going through radare2 shell functionality like output redirects, grep, and multiple command parsing.
|
||||
|
||||
The command then returns its output. This should be used when a command doesn't have output or the output should be handled as-is. If possible, using the JSON variation with ``cmdj`` is always preferred.
|
||||
|
||||
- ``CutterCore::cmdRawAt(<command>, <address>)`` - Executes a single radare2 command in a given address and returns the output. This helps avoiding weird strings concatenation like ``cmd("ph " + hash + " @ " + QString::num(address))``.
|
||||
- ``IaitoCore::cmdRawAt(<command>, <address>)`` - Executes a single radare2 command in a given address and returns the output. This helps avoiding weird strings concatenation like ``cmd("ph " + hash + " @ " + QString::num(address))``.
|
||||
|
||||
- ``CutterCore::cmd()`` - *(Discouraged)* Only use it when ``cmdj`` or ``cmdRaw`` cannot be used. This is used for complex commands using concatenation of several commands (``px 5; pd 7; afl;``), for grepping (``pd 5~call``). for commands inside commands (``?e `afn.```) and so on.
|
||||
- ``IaitoCore::cmd()`` - *(Discouraged)* Only use it when ``cmdj`` or ``cmdRaw`` cannot be used. This is used for complex commands using concatenation of several commands (``px 5; pd 7; afl;``), for grepping (``pd 5~call``). for commands inside commands (``?e `afn.```) and so on.
|
||||
This is also used when the output is complex and is not parsed correctly in ``cmdRaw``.
|
||||
Make sure to carefully sanitize user-controlled variables that are passed to the command, to avoid unexpected command injections.
|
||||
|
||||
@@ -52,9 +52,9 @@ Example:
|
||||
Seek the Current File
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To modify radare2 seek use ``CutterCore::seek(const RVA offset)``. This
|
||||
To modify radare2 seek use ``IaitoCore::seek(const RVA offset)``. This
|
||||
is important because it will emit a
|
||||
``CutterCore::seekChanged(RVA offset)`` signal. Never ever call
|
||||
``IaitoCore::seekChanged(RVA offset)`` signal. Never ever call
|
||||
``cmd("s offset")``;
|
||||
|
||||
Example:
|
||||
@@ -65,13 +65,13 @@ Example:
|
||||
|
||||
.. note::
|
||||
|
||||
Cutter also supports a silent seek which doesn't trigger the ``seekChanged`` event and doesn't add new entries to the seek history.
|
||||
Iaito also supports a silent seek which doesn't trigger the ``seekChanged`` event and doesn't add new entries to the seek history.
|
||||
|
||||
|
||||
Creating a Widget
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Make sure to connect the ``CutterCore::seekChanged(RVA offset)`` signal
|
||||
Make sure to connect the ``IaitoCore::seekChanged(RVA offset)`` signal
|
||||
so your widget refreshes its output when radare2 seek is modified
|
||||
(switching to another function, etc.).
|
||||
|
||||
@@ -86,9 +86,9 @@ to the style is:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
astyle --project=src/Cutter.astylerc src/filename.cpp
|
||||
astyle --project=src/Iaito.astylerc src/filename.cpp
|
||||
|
||||
In contrast to the official guidelines of Qt, in Cutter we always use curly braces in conditional statements, even if the body of a conditional statement contains only one line.
|
||||
In contrast to the official guidelines of Qt, in Iaito we always use curly braces in conditional statements, even if the body of a conditional statement contains only one line.
|
||||
|
||||
.. code:: cpp
|
||||
|
||||
@@ -224,12 +224,12 @@ You can find the class documentation in the API Reference menu item.
|
||||
Updating the Git Submodules
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Git submodules play a major part in Cutter. This, because Cutter is powered
|
||||
Git submodules play a major part in Iaito. This, because Iaito is powered
|
||||
by radare2, its parent project, and it tries to stay up-to-date with its
|
||||
recent version, which allows us to implement new features, and enjoy bug
|
||||
fixes and performance improvements on radare2. Often, we need to update
|
||||
the radare2 submodule or the others, to push their most recent
|
||||
version to Cutter.
|
||||
version to Iaito.
|
||||
|
||||
You can view the list of all the submodules from the cutter root folder with:
|
||||
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
Contributing code to Cutter
|
||||
Contributing code to Iaito
|
||||
============================
|
||||
|
||||
Thank you so much for your interest in contributing to Cutter! Contributors like you are a treasured resource for Cutter and their contributions have made the project what it is. And so, we appreciate everyone who gives the community the gift of their time <3.
|
||||
Thank you so much for your interest in contributing to Iaito! Contributors like you are a treasured resource for Iaito and their contributions have made the project what it is. And so, we appreciate everyone who gives the community the gift of their time <3.
|
||||
|
||||
The following section in our documentation is *not* intended to be comprehensive but rather a quick guide to walk you through the basic flow of contributing to Cutter. For more thorough documentation, follow the links on this page and read our Development Guidelines.
|
||||
The following section in our documentation is *not* intended to be comprehensive but rather a quick guide to walk you through the basic flow of contributing to Iaito. For more thorough documentation, follow the links on this page and read our Development Guidelines.
|
||||
|
||||
Clone and compile Cutter
|
||||
Clone and compile Iaito
|
||||
-------------------------
|
||||
The first step before starting to add code to Cutter is to build it on your environment. Whether it is Linux, Windows, or macOS, we have you covered and detailed the instructions to compile Cutter on our :doc:`/building`. Once you are done and Cutter is built successfully, test that it works correctly and continue to the next steps.
|
||||
The first step before starting to add code to Iaito is to build it on your environment. Whether it is Linux, Windows, or macOS, we have you covered and detailed the instructions to compile Iaito on our :doc:`/building`. Once you are done and Iaito is built successfully, test that it works correctly and continue to the next steps.
|
||||
|
||||
.. tip::
|
||||
If you are facing issues with building Cutter on your environment, make sure you didn't miss anything in the documentation. Specifically, check the :ref:`Building:Troubleshooting` section.
|
||||
If you are facing issues with building Iaito on your environment, make sure you didn't miss anything in the documentation. Specifically, check the :ref:`Building:Troubleshooting` section.
|
||||
|
||||
.. tip::
|
||||
If you need help configuring your development environment, make sure to read our :doc:`instructions, recommendations and tips <ide-setup>` for setting up a Cutter development environment for popular IDEs.
|
||||
If you need help configuring your development environment, make sure to read our :doc:`instructions, recommendations and tips <ide-setup>` for setting up a Iaito development environment for popular IDEs.
|
||||
|
||||
|
||||
|
||||
Find something to work on
|
||||
--------------------------
|
||||
Some will reach this page with a clear idea of what issue they want to fix or what feature they wish to implement. But some would simply want to help Cutter getting better while doing open-source, without having a specific thing in mind. If you already have something in mind - great! Move forward to the next section. If you don't have anything specific, stick with us a little bit more.
|
||||
Some will reach this page with a clear idea of what issue they want to fix or what feature they wish to implement. But some would simply want to help Iaito getting better while doing open-source, without having a specific thing in mind. If you already have something in mind - great! Move forward to the next section. If you don't have anything specific, stick with us a little bit more.
|
||||
|
||||
The issues and the feature-requests of Cutter are listed and tracked on our `Github Issues <https://github.com/radareorg/cutter/issues>`_ page. Don't get scared by the number of issues open, we will learn how to filter them to find those which fit you best.
|
||||
The issues and the feature-requests of Iaito are listed and tracked on our `Github Issues <https://github.com/radareorg/cutter/issues>`_ page. Don't get scared by the number of issues open, we will learn how to filter them to find those which fit you best.
|
||||
|
||||
.. tip::
|
||||
**Fix your pet peeve!** Anything specific that annoys you about Cutter? Fantastic! This can be a great place to start.
|
||||
**Fix your pet peeve!** Anything specific that annoys you about Iaito? Fantastic! This can be a great place to start.
|
||||
|
||||
|
||||
Organizing issues
|
||||
*******************
|
||||
In order to organize the hundreds of Issues opened on Cutter, we use several features of Github for project management. Get yourself familiar with the following features, it will help you filter the issues.
|
||||
In order to organize the hundreds of Issues opened on Iaito, we use several features of Github for project management. Get yourself familiar with the following features, it will help you filter the issues.
|
||||
|
||||
Labels
|
||||
^^^^^^^^
|
||||
@@ -37,7 +37,7 @@ Tagging issues and pull requests with labels allows us to quickly search for the
|
||||
|
||||
Projects
|
||||
^^^^^^^^^^
|
||||
We use `project boards <https://github.com/radareorg/cutter/projects>`_ to gather together tasks and issues for specific features or problems. For example, we have dedicated project boards for Debugger, Hexdump widget, Decompiler widget, and High DPI support. If you are interested to take part in developing a major feature, or you want to get a broader look at a progress of a specific part in Cutter, this can be a good place to visit.
|
||||
We use `project boards <https://github.com/radareorg/cutter/projects>`_ to gather together tasks and issues for specific features or problems. For example, we have dedicated project boards for Debugger, Hexdump widget, Decompiler widget, and High DPI support. If you are interested to take part in developing a major feature, or you want to get a broader look at a progress of a specific part in Iaito, this can be a good place to visit.
|
||||
|
||||
Milestones
|
||||
^^^^^^^^^^^^
|
||||
@@ -55,7 +55,7 @@ Before choosing an issue to work on, make sure it is not assigned to anyone. If
|
||||
Get familiar with the current situation
|
||||
----------------------------------------
|
||||
|
||||
Run Cutter and get familiar with how the functionality you want to modify works currently. For example, if it is a dialog, make sure you understand its role and how our users are using it. If it is a bug, try to repeat it using the instructions from the bug report.
|
||||
Run Iaito and get familiar with how the functionality you want to modify works currently. For example, if it is a dialog, make sure you understand its role and how our users are using it. If it is a bug, try to repeat it using the instructions from the bug report.
|
||||
|
||||
.. tip::
|
||||
If you are inexperienced with binary analysis tasks, you can always ask other developers in the team about the feature and how it should be used. The team and the community will be happy to help and instruct you with everything you need to know.
|
||||
@@ -85,12 +85,12 @@ In the Pull Request template you will be required to add a "Test plan". For exam
|
||||
Repeat
|
||||
-------
|
||||
|
||||
**Thank you!** You've made your very first contribution, and Cutter is better for it. But don't stop now. Go back to the first steps, as there is plenty more to do. A mentor or other developers might suggest a new issue for you to work on.
|
||||
**Thank you!** You've made your very first contribution, and Iaito is better for it. But don't stop now. Go back to the first steps, as there is plenty more to do. A mentor or other developers might suggest a new issue for you to work on.
|
||||
|
||||
|
||||
More Information
|
||||
-----------------
|
||||
|
||||
.. important::
|
||||
We're always in the process of improving the information on this page for newcomers to the Cutter. Please help us by suggesting improvements and tell us about the information that this page lacks.
|
||||
We're always in the process of improving the information on this page for newcomers to the Iaito. Please help us by suggesting improvements and tell us about the information that this page lacks.
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
Development environment setup
|
||||
=============================
|
||||
|
||||
This page contains recommendations and tips on how to better setup different IDEs for Cutter development.
|
||||
This page contains recommendations and tips on how to better setup different IDEs for Iaito development.
|
||||
|
||||
|
||||
General advice
|
||||
--------------
|
||||
Everyone has their own preferences for their favorite IDE or code editor.
|
||||
There are no strict requirements for using a specific one for Cutter development.
|
||||
There are no strict requirements for using a specific one for Iaito development.
|
||||
Any IDE with good CMake integration should work well.
|
||||
|
||||
For most development builds, unless you are working on packaging issues, it is recommended to use ``CUTTER_USE_BUNDLED_RADARE2=ON`` Cmake option. It is the easiest way to ensure that a compatible r2 version is used, and helps you deal with different versions of radare2 when working with multiple Cutter branches. On Linux, in case you have multiple r2 versions without ``CUTTER_USE_BUNDLED_RADARE2``, the ``PKG_CONFIG_PATH`` environment variable can be used to select the desired radare2 installation.
|
||||
For most development builds, unless you are working on packaging issues, it is recommended to use ``IAITO_USE_BUNDLED_RADARE2=ON`` Cmake option. It is the easiest way to ensure that a compatible r2 version is used, and helps you deal with different versions of radare2 when working with multiple Iaito branches. On Linux, in case you have multiple r2 versions without ``IAITO_USE_BUNDLED_RADARE2``, the ``PKG_CONFIG_PATH`` environment variable can be used to select the desired radare2 installation.
|
||||
|
||||
While `Qt Creator`_ has a builtin visual form and widget editor, not having it in other IDEs is not a major problem. It is also available as a standalone tool called Qt Designer and you can configure the file associations so that ``.ui`` files are opened using it. Depending on the ``.ui`` file and changes you want to make, it is sometimes easier to perform them by editing the ``.ui`` file as a text file. Essentially, ``.ui`` files are XML files. Most code editors should have some support for XML highlighting and possibly block folding.
|
||||
|
||||
The following instructions and recommendations assume that you have already download Cutter source and obtained required dependencies as described in :doc:`/building`.
|
||||
The following instructions and recommendations assume that you have already download Iaito source and obtained required dependencies as described in :doc:`/building`.
|
||||
|
||||
Linux
|
||||
-----
|
||||
|
||||
On a rolling-release distribution or a somewhat recent version of traditional distributions like Ubuntu 18.04, it should be possible to get all the dependencies from the official repository. There might be some problems with PySide2 and Shiboken2 but it can be easily disabled and isn't necessary for most work on Cutter. Don't try to install PySide using pip.
|
||||
On a rolling-release distribution or a somewhat recent version of traditional distributions like Ubuntu 18.04, it should be possible to get all the dependencies from the official repository. There might be some problems with PySide2 and Shiboken2 but it can be easily disabled and isn't necessary for most work on Iaito. Don't try to install PySide using pip.
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
Assuming you have a sufficiently powerful computer, a nice way of getting and configuring Qt for Cutter is to use `vcpkg <https://github.com/Microsoft/vcpkg>`_.
|
||||
For a quick test, the exact versions of libraries used by Cutter release packages can be obtained from `cutter-deps <https://github.com/radareorg/cutter-deps/releases>`_ but they don't contain debug
|
||||
versions of libraries so they are not suitable for more serious Cutter development on Windows.
|
||||
Assuming you have a sufficiently powerful computer, a nice way of getting and configuring Qt for Iaito is to use `vcpkg <https://github.com/Microsoft/vcpkg>`_.
|
||||
For a quick test, the exact versions of libraries used by Iaito release packages can be obtained from `cutter-deps <https://github.com/radareorg/cutter-deps/releases>`_ but they don't contain debug
|
||||
versions of libraries so they are not suitable for more serious Iaito development on Windows.
|
||||
|
||||
Qt Creator
|
||||
----------
|
||||
QT Creator is an open-source IDE made by the same developers as Qt.
|
||||
|
||||
Even though Cutter has qmake project cutter.pro it is recommended to use the CMake project in QTCreator.
|
||||
QTCreator support for CMake is as good as qmake one but not all Cutter project configuration options are available in qmake project and in future Cutter qmake project might be removed.
|
||||
Even though Iaito has qmake project cutter.pro it is recommended to use the CMake project in QTCreator.
|
||||
QTCreator support for CMake is as good as qmake one but not all Iaito project configuration options are available in qmake project and in future Iaito qmake project might be removed.
|
||||
|
||||
Pros and Cons
|
||||
~~~~~~~~~~~~~
|
||||
@@ -53,12 +53,12 @@ The following instructions were made based on version 4.12.4 of Qt Creator. The
|
||||
- Configuration step might fail due to r2 not being found, that's normal
|
||||
- Click :guilabel:`Projects` button with wrench icon on the left side of the screen
|
||||
- Click :menuselection:`Add --> Boolean` in the CMake section
|
||||
- Enter ``CUTTER_USE_BUNDLED_RADARE2`` as a key name and change the value to ON. In earlier Qt Creator versions it is necessary to do this during the initial kit selection and configuration step.
|
||||
- Enter ``IAITO_USE_BUNDLED_RADARE2`` as a key name and change the value to ON. In earlier Qt Creator versions it is necessary to do this during the initial kit selection and configuration step.
|
||||
- Click :guilabel:`Apply Configuration Changes`:. The configuration should succeed now. In case of errors inspect the output log.
|
||||
|
||||
Either in :menuselection:`Projects --> Code Style --> C++` or :menuselection:`Tools --> Options --> C++ --> Code Style` select :guilabel:`Qt [built-in]`. It should be selected by default unless you have used Qt Creator for other projects. Cutter Coding style is almost identical to Qt one. This will help with using correct indentation type and basic formatting without running code formatter.
|
||||
Either in :menuselection:`Projects --> Code Style --> C++` or :menuselection:`Tools --> Options --> C++ --> Code Style` select :guilabel:`Qt [built-in]`. It should be selected by default unless you have used Qt Creator for other projects. Iaito Coding style is almost identical to Qt one. This will help with using correct indentation type and basic formatting without running code formatter.
|
||||
|
||||
To configure AStyle for formatting a file go to :menuselection:`Tools --> Options --> Beautifier --> Artistic Style`. If necessary, specify the path to astyle executable. The :guilabel:`Use file \*.astylerc defined in project files` option doesn't seem to be working reliably so it is necessary to use :guilabel:`Use specific config file` option. Cutter astyle configuration is stored in :file:`cutter/src/Cutter.astylerc`.
|
||||
To configure AStyle for formatting a file go to :menuselection:`Tools --> Options --> Beautifier --> Artistic Style`. If necessary, specify the path to astyle executable. The :guilabel:`Use file \*.astylerc defined in project files` option doesn't seem to be working reliably so it is necessary to use :guilabel:`Use specific config file` option. Iaito astyle configuration is stored in :file:`cutter/src/Iaito.astylerc`.
|
||||
|
||||
Changing CMake configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -86,7 +86,7 @@ Recommended plugins
|
||||
|
||||
Project setup
|
||||
~~~~~~~~~~~~~
|
||||
- :menuselection:`File --> Open Folder...` and select the folder in which you cloned Cutter
|
||||
- :menuselection:`File --> Open Folder...` and select the folder in which you cloned Iaito
|
||||
- Install the recommended plugins.
|
||||
- Once the `CMake Tools` plugin is installed, in the corner you will see a popup asking you "Would you like to configure project 'cutter'? Source: CMake Tools (Extension)". Click Yes.
|
||||
- In the kit selection popup, choose :guilabel:`[Unspecified]` unless you have more specific needs.
|
||||
@@ -94,10 +94,10 @@ Project setup
|
||||
|
||||
Changing CMake configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
After the first configuration :kbd:`Ctrl-Shift-P`/:guilabel:`CMake: Edit CMake Cache` opens a text editor with all CMake options. Cutter specific ones mostly start with "CUTTER".
|
||||
After the first configuration :kbd:`Ctrl-Shift-P`/:guilabel:`CMake: Edit CMake Cache` opens a text editor with all CMake options. Iaito specific ones mostly start with "CUTTER".
|
||||
|
||||
.. note::
|
||||
``CUTTER_USE_BUNDLED_RADARE2`` option is also defined in ``.vscode/settings.json`` file and it will be overridden from there. It is set to ``ON`` by default as it is recommended during development.
|
||||
``IAITO_USE_BUNDLED_RADARE2`` option is also defined in ``.vscode/settings.json`` file and it will be overridden from there. It is set to ``ON`` by default as it is recommended during development.
|
||||
|
||||
.. _vscode-debug-setup:
|
||||
|
||||
@@ -139,8 +139,8 @@ Pros and Cons
|
||||
|
||||
Project setup
|
||||
~~~~~~~~~~~~~
|
||||
- Go to :menuselection:`File --> Open` and select the folder in which you cloned Cutter
|
||||
- Go to :menuselection:`File --> Settings --> Build, Execution, Deployment --> CMake`. In the :guilabel:`CMake Options` field enter ``-DCUTTER_USE_BUNDLED_RADARE2=ON``
|
||||
- Go to :menuselection:`File --> Open` and select the folder in which you cloned Iaito
|
||||
- Go to :menuselection:`File --> Settings --> Build, Execution, Deployment --> CMake`. In the :guilabel:`CMake Options` field enter ``-DIAITO_USE_BUNDLED_RADARE2=ON``
|
||||
- Open :file:`cutter/src/CMakeLists.txt` using the project file list on the left side of the screen
|
||||
- A yellow bar with a message :guilabel:`CMake project is not loaded` should appear, click :guilabel:`Load CMake project`
|
||||
|
||||
@@ -181,9 +181,9 @@ Pros and Cons
|
||||
|
||||
Project setup
|
||||
~~~~~~~~~~~~~
|
||||
- Open folder in which you cloned Cutter source using Visual Studio
|
||||
- Open folder in which you cloned Iaito source using Visual Studio
|
||||
- Open CMake settings configurator using either :menuselection:`Project --> CMake Settings` or by clicking :guilabel:`Open the CMake Settings Editor` in the overview page.
|
||||
- Check ``CUTTER_USE_BUNDLED_RADARE2`` option
|
||||
- Check ``IAITO_USE_BUNDLED_RADARE2`` option
|
||||
- If you are using vcpkg, Visual Studio should detect it automatically. The list of CMake options in the configurator should have some referring to vcpkg. If they are not there, specify the path to vcpkg toolchain file in the :guilabel:`CMake toolchain file` field.
|
||||
- If you are not using vcpkg, configure the path to Qt as mentioned in :ref:`windows CMake instructions<building:Building on Windows>`. You can specify the CMake flag in :guilabel:`CMake command arguments:` field.
|
||||
- To Ensure that VS debugger can display Qt types in a readable way, it is recommended to install `Qt Visual Studio Tools <https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2019>`_ plugin. It will create a :file:`Documents/Visual Studio 2019/Visualizers/qt5.natvis` file. Once :file:`qt5.natvis` has been created you can uninstall the plugin.
|
||||
@@ -196,5 +196,5 @@ Editing Qt .ui files and Qt integration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
By default Visual Studio will open ``.ui`` files as XML text documents. You can configure to open it using Qt Designer by right-clicking and selecting :guilabel:`Open With...`.
|
||||
|
||||
There is a Qt plugin for Visual Studio from Qt. It isn't very useful for Cutter development since it is aimed more at helping with Qt integration into Visual Studio projects.
|
||||
There is a Qt plugin for Visual Studio from Qt. It isn't very useful for Iaito development since it is aimed more at helping with Qt integration into Visual Studio projects.
|
||||
It doesn't do much for CMake based projects. The biggest benefit is that it automatically installs :file:`qt5.natvis` file for more readable displaying of Qt types in the debugger.
|
||||
@@ -1,17 +1,17 @@
|
||||
Release Procedure
|
||||
=================
|
||||
|
||||
1. Update translations submodule `https://github.com/radareorg/cutter-translations`_
|
||||
1. The latest archive from Crowdin should already be in the repository, if not make sure to merge any automated Pull Request from Crowdin (e.g. https://github.com/radareorg/cutter-translations/pull/9)
|
||||
2. Update submodule in cutter
|
||||
1. Update translations submodule `https://github.com/radareorg/iaito-translations`_
|
||||
1. The latest archive from Crowdin should already be in the repository, if not make sure to merge any automated Pull Request from Crowdin (e.g. https://github.com/radareorg/iaito-translations/pull/9)
|
||||
2. Update submodule in iaito
|
||||
2. If there is a desire to keep working in the master branch, create branch for the release and do all the following work there.
|
||||
3. Lock r2ghidra and r2dec versions downloaded by packaging scripts. Specify a tag or commit hash.
|
||||
4. Update version
|
||||
#. appveyor.yml
|
||||
#. docs/sourc/conf.py
|
||||
#. docs/source/index.rst
|
||||
#. Cutter.pro
|
||||
#. Cutter.appdata.xml
|
||||
#. Iaito.pro
|
||||
#. Iaito.appdata.xml
|
||||
#. To be safe, search the code base for the previous version number.
|
||||
5. Create a tag for the release candidate. For example, for the `v1.11.0` release you'd do something like this:
|
||||
#. ``git tag v1.11.0-rc1``
|
||||
@@ -56,4 +56,4 @@ If it makes sense repeat the step multiple times at different offsets and click
|
||||
* Start debugging
|
||||
* Go to main using function widget, make sure relocation was done correctly and you see code instead of unmapped memory and breakpoint is where you placed
|
||||
* Click continue until you hit breakpoint in main
|
||||
* Delete cutter settings file, and test that clean start works and layout isn't broken
|
||||
* Delete iaito settings file, and test that clean start works and layout isn't broken
|
||||
@@ -1,7 +1,7 @@
|
||||
Building docs
|
||||
=======================
|
||||
|
||||
This page explains the steps that are needed to build Cutter's documentation.
|
||||
This page explains the steps that are needed to build Iaito's documentation.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
Contributing documentation to Cutter
|
||||
Contributing documentation to Iaito
|
||||
=======================================
|
||||
|
||||
If you reached this place you were probably looking to help and improve Cutter's documentation - Fantastic, welcome aboard!
|
||||
If you reached this place you were probably looking to help and improve Iaito's documentation - Fantastic, welcome aboard!
|
||||
|
||||
As many other young projects, Cutter has a problem - it lacks comprehensive documentation and written content. Thankfully, contributing to Cutter's documentation doesn’t require you to have a deep knowledge about the internals of the project. Writing, reviewing, and editing the documentation are great ways to learn about Cutter.
|
||||
As many other young projects, Iaito has a problem - it lacks comprehensive documentation and written content. Thankfully, contributing to Iaito's documentation doesn’t require you to have a deep knowledge about the internals of the project. Writing, reviewing, and editing the documentation are great ways to learn about Iaito.
|
||||
|
||||
Don’t like the way something reads? Discover some information that wasn’t documented? Your pull request will be gleefully embraced.
|
||||
|
||||
.. note::
|
||||
The documentation of Cutter is written using `Sphinx and reStructuredText <https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_. The syntax is quite straight forward and very similar to Markdown. In the future, we hope to move completely to Markdown as it is more popular.
|
||||
The documentation of Iaito is written using `Sphinx and reStructuredText <https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_. The syntax is quite straight forward and very similar to Markdown. In the future, we hope to move completely to Markdown as it is more popular.
|
||||
|
||||
|
||||
How can you help?
|
||||
-----------------
|
||||
|
||||
The following sections suggest ways you can contribute to Cutter's documentation. The list isn't complete as the possibilities are limitless.
|
||||
The following sections suggest ways you can contribute to Iaito's documentation. The list isn't complete as the possibilities are limitless.
|
||||
|
||||
The source for this documentation is available in the `docs directory <https://github.com/radareorg/cutter/tree/master/docs>`_ on Cutter's repository. This source can be generated according to the steps described in the :ref:`building docs page<contributing/docs/building-docs:Building docs>`. When the docs are updated, they are generated and pushed directly to the website at <https://cutter.re/docs>. The source for the website and blog are available on the `cutter.re's repository <https://github.com/radareorg/cutter.re>`_ and are served from the ``gh-pages`` branch.
|
||||
The source for this documentation is available in the `docs directory <https://github.com/radareorg/cutter/tree/master/docs>`_ on Iaito's repository. This source can be generated according to the steps described in the :ref:`building docs page<contributing/docs/building-docs:Building docs>`. When the docs are updated, they are generated and pushed directly to the website at <https://cutter.re/docs>. The source for the website and blog are available on the `cutter.re's repository <https://github.com/radareorg/cutter.re>`_ and are served from the ``gh-pages`` branch.
|
||||
|
||||
.. tip::
|
||||
Document what you wished to see. If you are a user of Cutter, try to think what things you would want to see documented when you started using the project. Sometimes, the best contributions are coming from your own needs.
|
||||
Document what you wished to see. If you are a user of Iaito, try to think what things you would want to see documented when you started using the project. Sometimes, the best contributions are coming from your own needs.
|
||||
|
||||
User documentation
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The documentation for users describes how to use Cutter and what the different features in Cutter do. The possibilities for contributing are endless since there are so many features that weren't even described on our docs yet. To contribute to our user documentation, all you need to do is pick a subject, widget, or functionality and document it. Describe the different visual components, how to use them, and what this feature even does.
|
||||
The documentation for users describes how to use Iaito and what the different features in Iaito do. The possibilities for contributing are endless since there are so many features that weren't even described on our docs yet. To contribute to our user documentation, all you need to do is pick a subject, widget, or functionality and document it. Describe the different visual components, how to use them, and what this feature even does.
|
||||
|
||||
Common Errors and Troubleshooting
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
As our community gets bigger, more and more people are using, installing or building Cutter on different setups. Naturally, different environments might cause different issues. The :ref:`common issues<user-docs/common-issues:Common Issues>` section in our docs aims to go over the most popular issues that you might face while using Cutter and the :ref:`building errors troubleshooting<building:Troubleshooting>` section goes over common errors that you might face while building Cutter from sources. These docs sections also explain what causes these issues and how to solve them.
|
||||
As our community gets bigger, more and more people are using, installing or building Iaito on different setups. Naturally, different environments might cause different issues. The :ref:`common issues<user-docs/common-issues:Common Issues>` section in our docs aims to go over the most popular issues that you might face while using Iaito and the :ref:`building errors troubleshooting<building:Troubleshooting>` section goes over common errors that you might face while building Iaito from sources. These docs sections also explain what causes these issues and how to solve them.
|
||||
|
||||
If you know of such a common issue, whether you faced it yourself or noticed it on our community chats, it will be very helpful if you could document it and possible solutions for it.
|
||||
|
||||
@@ -37,15 +37,15 @@ If you know of such a common issue, whether you faced it yourself or noticed it
|
||||
Developers documentation
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The documentation for Cutter developers aims to instruct new contributors on how to get started with developing to Cutter's codebase. It also describes best practices and development guidelines for all developers in the project. Think you have something to add to the developers' docs? We would love you to contribute.
|
||||
The documentation for Iaito developers aims to instruct new contributors on how to get started with developing to Iaito's codebase. It also describes best practices and development guidelines for all developers in the project. Think you have something to add to the developers' docs? We would love you to contribute.
|
||||
|
||||
API documentation
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The documentation for Cutter's API is an important reference for Cutter developers as well as Plugin developers. It thoroughly describes for developers how some functions and features work. While some of the functions are thoroughly documented, most of them aren't. Any help with improving these documentations will be blessed.
|
||||
The documentation for Iaito's API is an important reference for Iaito developers as well as Plugin developers. It thoroughly describes for developers how some functions and features work. While some of the functions are thoroughly documented, most of them aren't. Any help with improving these documentations will be blessed.
|
||||
|
||||
|
||||
Blog posts
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
We would love to see people writing and sharing their experiences with Cutter. Whether you are solving CTF challenges with Cutter, analyzing malware, finding vulnerabilities, or working on personal projects - we would love to see these published. If you have a personal blog, we would be proud to share and retweet your Cutter-related publications on our profiles, bringing you more engagement and followers. If you don't have a personal blog, we would love to host your publication on our community blog over at https://cutter.re/blog.
|
||||
We would love to see people writing and sharing their experiences with Iaito. Whether you are solving CTF challenges with Iaito, analyzing malware, finding vulnerabilities, or working on personal projects - we would love to see these published. If you have a personal blog, we would be proud to share and retweet your Iaito-related publications on our profiles, bringing you more engagement and followers. If you don't have a personal blog, we would love to host your publication on our community blog over at https://cutter.re/blog.
|
||||
@@ -1,7 +1,7 @@
|
||||
Getting Started with Python Plugins
|
||||
===================================
|
||||
|
||||
This article provides a step-by-step guide on how to write a simple Python plugin for Cutter.
|
||||
This article provides a step-by-step guide on how to write a simple Python plugin for Iaito.
|
||||
|
||||
Create a python file, called ``myplugin.py`` for example, and add the following contents:
|
||||
|
||||
@@ -9,7 +9,7 @@ Create a python file, called ``myplugin.py`` for example, and add the following
|
||||
|
||||
import cutter
|
||||
|
||||
class MyCutterPlugin(cutter.CutterPlugin):
|
||||
class MyIaitoPlugin(cutter.IaitoPlugin):
|
||||
name = "My Plugin"
|
||||
description = "This plugin does awesome things!"
|
||||
version = "1.0"
|
||||
@@ -25,26 +25,26 @@ Create a python file, called ``myplugin.py`` for example, and add the following
|
||||
pass
|
||||
|
||||
def create_cutter_plugin():
|
||||
return MyCutterPlugin()
|
||||
return MyIaitoPlugin()
|
||||
|
||||
This is the most basic code that makes up a plugin.
|
||||
Python plugins in Cutter are regular Python modules that are imported automatically on startup.
|
||||
In order to load the plugin, Cutter will call the function ``create_cutter_plugin()`` located
|
||||
in the root of the module and expects it to return an instance of ``cutter.CutterPlugin``.
|
||||
Python plugins in Iaito are regular Python modules that are imported automatically on startup.
|
||||
In order to load the plugin, Iaito will call the function ``create_cutter_plugin()`` located
|
||||
in the root of the module and expects it to return an instance of ``cutter.IaitoPlugin``.
|
||||
Normally, you shouldn't have to do anything else in this function.
|
||||
|
||||
.. note::
|
||||
The Cutter API is exposed through the ``cutter`` module.
|
||||
The Iaito API is exposed through the ``cutter`` module.
|
||||
This consists mostly of direct bindings of the original C++ classes, generated with Shiboken2.
|
||||
For more detail about this API, see the Cutter C++ code or :ref:`api`.
|
||||
For more detail about this API, see the Iaito C++ code or :ref:`api`.
|
||||
|
||||
The ``CutterPlugin`` subclass contains some meta-info and two callback methods:
|
||||
The ``IaitoPlugin`` subclass contains some meta-info and two callback methods:
|
||||
|
||||
* ``setupPlugin()`` is called right after the plugin is loaded and can be used to initialize the plugin itself.
|
||||
* ``setupInterface()`` is called with the instance of MainWindow as an argument and should create and register any UI components.
|
||||
* ``terminate()`` is called on shutdown and should clean up any resources used by the plugin.
|
||||
|
||||
Copy this file into the ``python`` subdirectory located under the plugins directory of Cutter and start the application.
|
||||
Copy this file into the ``python`` subdirectory located under the plugins directory of Iaito and start the application.
|
||||
You should see an entry for your plugin in the list under Edit -> Preferences -> Plugins.
|
||||
Here, the absolute path to the plugins directory is shown too if you are unsure where to put your plugin:
|
||||
|
||||
@@ -71,7 +71,7 @@ Next, we are going to add a simple dock widget. Extend the code as follows:
|
||||
|
||||
from PySide2.QtWidgets import QAction, QLabel
|
||||
|
||||
class MyDockWidget(cutter.CutterDockWidget):
|
||||
class MyDockWidget(cutter.IaitoDockWidget):
|
||||
def __init__(self, parent, action):
|
||||
super(MyDockWidget, self).__init__(parent, action)
|
||||
self.setObjectName("MyDockWidget")
|
||||
@@ -81,7 +81,7 @@ Next, we are going to add a simple dock widget. Extend the code as follows:
|
||||
self.setWidget(label)
|
||||
label.setText("Hello World")
|
||||
|
||||
class MyCutterPlugin(cutter.CutterPlugin):
|
||||
class MyIaitoPlugin(cutter.IaitoPlugin):
|
||||
# ...
|
||||
|
||||
def setupInterface(self, main):
|
||||
@@ -92,7 +92,7 @@ Next, we are going to add a simple dock widget. Extend the code as follows:
|
||||
|
||||
# ...
|
||||
|
||||
We are subclassing ``cutter.CutterDockWidget``, which is the base class for all dock widgets in Cutter,
|
||||
We are subclassing ``cutter.IaitoDockWidget``, which is the base class for all dock widgets in Iaito,
|
||||
and adding a label to it.
|
||||
|
||||
.. note::
|
||||
@@ -103,7 +103,7 @@ In our ``setupInterface()`` method, we create an instance of our dock widget and
|
||||
added to the menu for showing and hiding the widget.
|
||||
MainWindow provides a helper method called ``addPluginDockWidget()`` to easily register these.
|
||||
|
||||
When running Cutter now, you should see the widget:
|
||||
When running Iaito now, you should see the widget:
|
||||
|
||||
.. image:: mydockwidget.png
|
||||
|
||||
@@ -123,7 +123,7 @@ Extend the code as follows:
|
||||
|
||||
# ...
|
||||
|
||||
class MyDockWidget(cutter.CutterDockWidget):
|
||||
class MyDockWidget(cutter.IaitoDockWidget):
|
||||
def __init__(self, parent, action):
|
||||
# ...
|
||||
|
||||
@@ -155,7 +155,7 @@ In our case, we use the two commands ``pd`` (Print Disassembly) and ``pdj`` (Pri
|
||||
with a parameter of 1 to fetch a single line of disassembly.
|
||||
|
||||
.. note::
|
||||
To try out commands, you can use the Console widget in Cutter. Almost all commands support a ``?`` suffix, like in
|
||||
To try out commands, you can use the Console widget in Iaito. Almost all commands support a ``?`` suffix, like in
|
||||
``pd?``, to show help and available sub-commands.
|
||||
To get a general overview, enter a single ``?``.
|
||||
|
||||
@@ -181,7 +181,7 @@ This can be done like the following:
|
||||
|
||||
# ...
|
||||
|
||||
class MyDockWidget(cutter.CutterDockWidget):
|
||||
class MyDockWidget(cutter.IaitoDockWidget):
|
||||
def __init__(self, parent, action):
|
||||
# ...
|
||||
|
||||
@@ -201,7 +201,7 @@ This can be done like the following:
|
||||
|
||||
|
||||
First, we move the update code to a separate method.
|
||||
Then we call ``cutter.core()``, which returns the global instance of ``CutterCore``.
|
||||
Then we call ``cutter.core()``, which returns the global instance of ``IaitoCore``.
|
||||
This class provides the Qt signal ``seekChanged(RVA)``, which is emitted every time the current seek changes.
|
||||
We can simply connect this signal to our method and our widget will update as we expect it to:
|
||||
|
||||
@@ -219,7 +219,7 @@ Full Code
|
||||
from PySide2.QtCore import QObject, SIGNAL
|
||||
from PySide2.QtWidgets import QAction, QLabel
|
||||
|
||||
class MyDockWidget(cutter.CutterDockWidget):
|
||||
class MyDockWidget(cutter.IaitoDockWidget):
|
||||
def __init__(self, parent, action):
|
||||
super(MyDockWidget, self).__init__(parent, action)
|
||||
self.setObjectName("MyDockWidget")
|
||||
@@ -240,7 +240,7 @@ Full Code
|
||||
self._label.setText("Current disassembly:\n{}\nwith size {}".format(disasm, size))
|
||||
|
||||
|
||||
class MyCutterPlugin(cutter.CutterPlugin):
|
||||
class MyIaitoPlugin(cutter.IaitoPlugin):
|
||||
name = "My Plugin"
|
||||
description = "This plugin does awesome things!"
|
||||
version = "1.0"
|
||||
@@ -259,4 +259,4 @@ Full Code
|
||||
pass
|
||||
|
||||
def create_cutter_plugin():
|
||||
return MyCutterPlugin()
|
||||
return MyIaitoPlugin()
|
||||
@@ -1,9 +1,9 @@
|
||||
Translate Cutter
|
||||
Translate Iaito
|
||||
==================
|
||||
|
||||
Help Cutter by adding translations to the project!
|
||||
Help Iaito by adding translations to the project!
|
||||
|
||||
Cutter is a global project with users from all around the world. We believe that Cutter should be as accessible as possible, and want our users to feel comfortable while using its interface. Providing our community an interface with their own language makes the experience of using Cutter better. Thus, Cutter supports a translation and localization mechanism powered by the `Crowdin <https://crowdin.com/project/cutter>`_ platform. We invite you to contribute and add translations to the project.
|
||||
Iaito is a global project with users from all around the world. We believe that Iaito should be as accessible as possible, and want our users to feel comfortable while using its interface. Providing our community an interface with their own language makes the experience of using Iaito better. Thus, Iaito supports a translation and localization mechanism powered by the `Crowdin <https://crowdin.com/project/cutter>`_ platform. We invite you to contribute and add translations to the project.
|
||||
|
||||
|
||||
.. important::
|
||||
|
||||
+10
-10
@@ -1,18 +1,18 @@
|
||||
Cutter
|
||||
Iaito
|
||||
======
|
||||
|
||||
Cutter is a Qt and C++ GUI for radare2. Its goal is to provide an advanced,
|
||||
Iaito is a Qt and C++ GUI for radare2. Its goal is to provide an advanced,
|
||||
customizable and FOSS reverse-engineering platform while keeping the
|
||||
user experience in mind. Cutter was created by reverse engineers for
|
||||
user experience in mind. Iaito was created by reverse engineers for
|
||||
reverse engineers.
|
||||
|
||||
.. image:: images/screenshot.png
|
||||
|
||||
|
||||
Getting Cutter
|
||||
Getting Iaito
|
||||
--------------
|
||||
|
||||
Cutter is available for all major platforms. You can
|
||||
Iaito is available for all major platforms. You can
|
||||
download the latest release from
|
||||
`here <https://github.com/radareorg/cutter/releases>`__.
|
||||
|
||||
@@ -22,27 +22,27 @@ download the latest release from
|
||||
|
||||
::
|
||||
|
||||
chmod +x Cutter*.AppImage
|
||||
chmod +x Iaito*.AppImage
|
||||
|
||||
|
||||
Building from Sources
|
||||
---------------------
|
||||
|
||||
To build Cutter on your machine, please follow this guide: :doc:`Building from Source </building>`.
|
||||
To build Iaito on your machine, please follow this guide: :doc:`Building from Source </building>`.
|
||||
|
||||
Need help?
|
||||
----------
|
||||
|
||||
You can contact the *Cutter* developers and community on:
|
||||
You can contact the *Iaito* developers and community on:
|
||||
|
||||
- Telegram: https://t.me/r2cutter
|
||||
- Telegram: https://t.me/iaito
|
||||
- #cutter on irc.freenode.net
|
||||
- Twitter: https://twitter.com/r2gui
|
||||
|
||||
Want to help the project?
|
||||
-------------------------
|
||||
|
||||
If you want to contribute to Cutter, take a look at our :doc:`Contribution Guidelines </contributing>` to learn how you can help improve the project!
|
||||
If you want to contribute to Iaito, take a look at our :doc:`Contribution Guidelines </contributing>` to learn how you can help improve the project!
|
||||
|
||||
.. toctree::
|
||||
:caption: Contents:
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
Plugins
|
||||
=======
|
||||
|
||||
Cutter supports writing plugins in both C++ and Python.
|
||||
Iaito supports writing plugins in both C++ and Python.
|
||||
If you are unsure of which language to choose, starting with Python is strongly suggested as
|
||||
it provides a faster and simpler workflow.
|
||||
|
||||
If you plan to implement support for a new file format or architecture, Cutter plugins are not the correct approach.
|
||||
If you plan to implement support for a new file format or architecture, Iaito plugins are not the correct approach.
|
||||
Instead, you will want to implement a radare2 plugin, which is documented `here <https://radare.gitbooks.io/radare2book/plugins/intro.html>`_.
|
||||
|
||||
|
||||
@@ -18,11 +18,11 @@ To get the location of this directory and a list of currently loaded plugins, na
|
||||
.. image:: contributing/plugins/preferences-plugins.png
|
||||
|
||||
The plugins directory contains two subdirectories, ``native`` and ``python`` for C++ and Python plugins respectively,
|
||||
which will be created automatically by Cutter.
|
||||
which will be created automatically by Iaito.
|
||||
|
||||
.. note::
|
||||
The support for Python plugins is only available if Cutter was built with the options ``CUTTER_ENABLE_PYTHON``
|
||||
and ``CUTTER_ENABLE_PYTHON_BINDINGS`` enabled.
|
||||
The support for Python plugins is only available if Iaito was built with the options ``IAITO_ENABLE_PYTHON``
|
||||
and ``IAITO_ENABLE_PYTHON_BINDINGS`` enabled.
|
||||
This is the case for all official builds from GitHub Releases starting with version 1.8.0.
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
User Documentation
|
||||
=======================
|
||||
|
||||
This page contains information about the different menus in Cutter.
|
||||
This page contains information about the different menus in Iaito.
|
||||
|
||||
Cutter is an advanced reverse engineering platform powered by radare2.
|
||||
This user's guide provides detailed information on how to use Cutter.
|
||||
Iaito is an advanced reverse engineering platform powered by radare2.
|
||||
This user's guide provides detailed information on how to use Iaito.
|
||||
The documentation for users is still on its early stages and will be improved over time.
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Command-line Options
|
||||
Synopsis
|
||||
--------
|
||||
|
||||
**Cutter** [*options*] [<*filename*>]
|
||||
**Iaito** [*options*] [<*filename*>]
|
||||
|
||||
|
||||
Options
|
||||
|
||||
@@ -18,10 +18,10 @@ the Xorg layout is wrong. You can check it with: ``setxkbmap -query``
|
||||
Most of the time using ``setxkbmap us`` solves the issue, but it might
|
||||
not be enough and require a more advanced Xorg configuration.
|
||||
|
||||
Initial Analysis takes a long time or Cutter UI freezes
|
||||
Initial Analysis takes a long time or Iaito UI freezes
|
||||
-------------------------------------------------------
|
||||
|
||||
Cutter and radare2 currently don't work very well with large and very large binaries.
|
||||
Iaito and radare2 currently don't work very well with large and very large binaries.
|
||||
The exact limits depend on the content of the binary, but roughly a few MB can be considered large
|
||||
and may take a few minutes to analyze. More than 100MB is very large,
|
||||
analysis with default settings will likely take a very long time and it might occasionally
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
Features
|
||||
=============
|
||||
This section in the user docs gives a more detailed information about different features in Cutter. These are the different
|
||||
This section in the user docs gives a more detailed information about different features in Iaito. These are the different
|
||||
utilities and views that can be used and controlled by you during your session. As more familiar and comfort you feel with the
|
||||
different features in Cutter, the more efficient and effective you are during your reverse-engineering experience.
|
||||
different features in Iaito, the more efficient and effective you are during your reverse-engineering experience.
|
||||
|
||||
Decompiler
|
||||
-------------
|
||||
A decompiler is a program that will analyze binaries and attempt to create a high-level representation of the machine code in it. In other words, it tries to reconstruct the source code from which the binary was compiled in the first place.
|
||||
|
||||
Here's an image that compares one of the decompiler Cutter supports with the Cutter's disassembler.
|
||||
Here's an image that compares one of the decompiler Iaito supports with the Iaito's disassembler.
|
||||
|
||||
.. image:: ../images/decompiler_vs_disassembly.png
|
||||
|
||||
|
||||
Cutter provides an interface that supports plugins of multiple decompilers including Ghidra, RetDec and R2Dec. The interface receives data from the decompiler and presenting the decompiler code in a context-sensitive decompiler widget. Check the `Decompilers <https://github.com/radareorg/cutter-plugins#decompilers>`_ section on our Plugins repository to know more about the decompilers we support.
|
||||
Iaito provides an interface that supports plugins of multiple decompilers including Ghidra, RetDec and R2Dec. The interface receives data from the decompiler and presenting the decompiler code in a context-sensitive decompiler widget. Check the `Decompilers <https://github.com/radareorg/cutter-plugins#decompilers>`_ section on our Plugins repository to know more about the decompilers we support.
|
||||
|
||||
|
||||
Out of the decompiler plugins that we support, the one that's officially maintained by the developers of Cutter is R2Ghidra. :doc:`Click here <menus/decompiler-context-menu>` to learn more about the functionalities we provide in the decompiler.
|
||||
Out of the decompiler plugins that we support, the one that's officially maintained by the developers of Iaito is R2Ghidra. :doc:`Click here <menus/decompiler-context-menu>` to learn more about the functionalities we provide in the decompiler.
|
||||
@@ -1,7 +1,7 @@
|
||||
Menus
|
||||
======
|
||||
|
||||
This part of the user documentation will provide the reader with information about the different menus and context menu items they can find on Cutter. Each item has a description that explains about its actions, as well as how to reach this feature from the UI and a keyboard shortcut if one assigned to the feature.
|
||||
This part of the user documentation will provide the reader with information about the different menus and context menu items they can find on Iaito. Each item has a description that explains about its actions, as well as how to reach this feature from the UI and a keyboard shortcut if one assigned to the feature.
|
||||
|
||||
|
||||
.. toctree::
|
||||
|
||||
@@ -90,7 +90,7 @@ Edit Local Variables and Arguments
|
||||
|
||||
Show Cross References
|
||||
----------------------------------------
|
||||
**Description:** Show X-Refs to the reference under the cursor. This option will open Cutter's X-Refs dialog in which you will be able to see a list of X-Refs from and to the address of the reference. You can also see a preview of each cross-reference to quickly inspect the different usages. Note that references refer to function names, global variables, and constant variables with an address.
|
||||
**Description:** Show X-Refs to the reference under the cursor. This option will open Iaito's X-Refs dialog in which you will be able to see a list of X-Refs from and to the address of the reference. You can also see a preview of each cross-reference to quickly inspect the different usages. Note that references refer to function names, global variables, and constant variables with an address.
|
||||
|
||||
**Steps:** Right-click on a reference and choose ``Show X-Refs``
|
||||
|
||||
@@ -124,6 +124,6 @@ Continue Until Line
|
||||
|
||||
Set Program Counter (PC)
|
||||
----------------------------------------
|
||||
**Description:** Set the Program Counter of the debugger to the current offset. For example, on an Intel 64bit program, Cutter will set the value of the RIP register to the current address. *This option is only available on Debug or Emulation modes*.
|
||||
**Description:** Set the Program Counter of the debugger to the current offset. For example, on an Intel 64bit program, Iaito will set the value of the RIP register to the current address. *This option is only available on Debug or Emulation modes*.
|
||||
|
||||
**Steps:** While in Debug or Emulation modes, right-click on a line of code and choose :menuselection:`Debug --> Set PC`.
|
||||
@@ -91,7 +91,7 @@ Undefine a Function
|
||||
|
||||
Define a function
|
||||
----------------------------------------
|
||||
**Description:** Define a function starting from the current location. Cutter will automatically guess the size of the function. This can later be changed using the function editor.
|
||||
**Description:** Define a function starting from the current location. Iaito will automatically guess the size of the function. This can later be changed using the function editor.
|
||||
|
||||
**Steps:** Right-click on an instruction and choose ``Define function here``.
|
||||
|
||||
@@ -114,7 +114,7 @@ Link a Type to Address
|
||||
|
||||
Show Cross References
|
||||
----------------------------------------
|
||||
**Description:** Show X-Refs from and to the specific location. This option will open Cutter's X-Refs dialog in which you will be able to see a list of X-Refs from and to the selected location, in addition to a preview of each cross-reference to quickly inspect the different usages.
|
||||
**Description:** Show X-Refs from and to the specific location. This option will open Iaito's X-Refs dialog in which you will be able to see a list of X-Refs from and to the selected location, in addition to a preview of each cross-reference to quickly inspect the different usages.
|
||||
|
||||
**Steps:** Right-click on an instruction and choose ``Show X-Refs``
|
||||
|
||||
|
||||
@@ -9,6 +9,6 @@ Continue Until Line
|
||||
|
||||
Set Program Counter (PC)
|
||||
----------------------------------------
|
||||
**Description:** Set the Program Counter of the debuggee to the current offset. For example, on an Intel 64bit program, Cutter will set the value of the RIP register to the current address. *This option is only available on Debug or Emulation modes*.
|
||||
**Description:** Set the Program Counter of the debuggee to the current offset. For example, on an Intel 64bit program, Iaito will set the value of the RIP register to the current address. *This option is only available on Debug or Emulation modes*.
|
||||
|
||||
**Steps:** While in Debug or Emulation modes, right-click and address and choose ``Debug -> Set PC``.
|
||||
+2
-2
@@ -3,7 +3,7 @@ Manage Breakpoints Context Menu
|
||||
|
||||
Add or Remove a Breakpoint
|
||||
----------------------------------------
|
||||
**Description:** Add a breakpoint at the current address. If a breakpoint already exists, Cutter will remove it.
|
||||
**Description:** Add a breakpoint at the current address. If a breakpoint already exists, Iaito will remove it.
|
||||
|
||||
**Steps:** Right-click on an instruction and choose ``Breakpoint -> Add/remove breakpoint``
|
||||
|
||||
@@ -15,4 +15,4 @@ Advanced Breakpoint Dialog
|
||||
|
||||
**Steps:** Right-click on an instruction and choose ``Breakpoint -> Advanced breakpoint``.
|
||||
|
||||
**Shortcut:** :kbd:`Ctrl` + :kbd:`F2`
|
||||
**Shortcut:** :kbd:`Ctrl` + :kbd:`F2`
|
||||
@@ -3,24 +3,24 @@ Patching
|
||||
|
||||
Edit Instruction
|
||||
----------------------------------------
|
||||
**Description:** Edit the current instruction by typing a sequence of one or more instructions. Cutter will automatically fetch a preview of the bytes that are constructing the instruction.
|
||||
**Description:** Edit the current instruction by typing a sequence of one or more instructions. Iaito will automatically fetch a preview of the bytes that are constructing the instruction.
|
||||
|
||||
**Steps:** Right-click on an instruction and choose ``Edit -> Instruction``
|
||||
|
||||
Edit Bytes
|
||||
----------------------------------------
|
||||
**Description:** Edit the bytes of the current instruction by typing a sequence of bytes. Cutter will automatically disassemble a preview of the instructions that are create by the typed bytes.
|
||||
**Description:** Edit the bytes of the current instruction by typing a sequence of bytes. Iaito will automatically disassemble a preview of the instructions that are create by the typed bytes.
|
||||
|
||||
**Steps:** Right-click on an instruction and choose ``Edit -> Bytes``
|
||||
|
||||
NOP Instruction
|
||||
----------------------------------------
|
||||
**Description:** Fill the content of the instruction with NOP instructions. Cutter will fill the instructions with NOP as the length of the bytes constructing the instruction.
|
||||
**Description:** Fill the content of the instruction with NOP instructions. Iaito will fill the instructions with NOP as the length of the bytes constructing the instruction.
|
||||
|
||||
**Steps:** Right-click on an instruction and choose ``Edit -> Nop Instruction``
|
||||
|
||||
Reverse Jump
|
||||
----------------------------------------
|
||||
**Description:** On conditional jumps, Cutter will detect the inverted conditional instruction and will replace it. For example, from ``je`` to ``jne``.
|
||||
**Description:** On conditional jumps, Iaito will detect the inverted conditional instruction and will replace it. For example, from ``je`` to ``jne``.
|
||||
|
||||
**Steps:** Right-click on an instruction and choose ``Edit -> Reverse Jump``
|
||||
**Steps:** Right-click on an instruction and choose ``Edit -> Reverse Jump``
|
||||
@@ -3,7 +3,7 @@ Set as Code\Data\String
|
||||
|
||||
Set as Code
|
||||
----------------------------------------
|
||||
**Description:** Set the current instruction to Code. This will force Cutter to display the current instruction as Code.
|
||||
**Description:** Set the current instruction to Code. This will force Iaito to display the current instruction as Code.
|
||||
|
||||
**Steps:** Set as... -> Code
|
||||
|
||||
@@ -11,7 +11,7 @@ Set as Code
|
||||
|
||||
Set as String (auto-detect length)
|
||||
----------------------------------------
|
||||
**Description:** Set the current location to String. This will tell Cutter to treat the current address as a string and will auto-detect the length (e.g by looking for a string null-terminator).
|
||||
**Description:** Set the current location to String. This will tell Iaito to treat the current address as a string and will auto-detect the length (e.g by looking for a string null-terminator).
|
||||
|
||||
**Steps:** Right click on an instruction and choose ``Set as... -> String... -> Auto-detect``
|
||||
|
||||
@@ -19,13 +19,13 @@ Set as String (auto-detect length)
|
||||
|
||||
Remove string definition
|
||||
----------------------------------------
|
||||
**Description:** Remove a defined string in this address. Cutter will then treat this location as a code.
|
||||
**Description:** Remove a defined string in this address. Iaito will then treat this location as a code.
|
||||
|
||||
**Steps:** Right click on an instruction and choose ``Set as... -> String... -> Remove``.
|
||||
|
||||
Set as String (Advance dialog)
|
||||
----------------------------------------
|
||||
**Description:** Set the current location to String. This will open a String definition dialog in which the user will supply the length and the type (ASCII, UTF8, ...) of the string. Cutter will then treat the current address as the defined string.
|
||||
**Description:** Set the current location to String. This will open a String definition dialog in which the user will supply the length and the type (ASCII, UTF8, ...) of the string. Iaito will then treat the current address as the defined string.
|
||||
|
||||
**Steps:** Right click on an instruction and choose ``Set as... -> String... -> Advanced``.
|
||||
|
||||
@@ -59,4 +59,4 @@ Set as data (Advanced)
|
||||
|
||||
**Steps:** Right click on an instruction and choose ``Set as... -> Data... -> ...``
|
||||
|
||||
**Shortcut:** :kbd:`*`
|
||||
**Shortcut:** :kbd:`*`
|
||||
@@ -54,7 +54,7 @@ Graph Layout Direction
|
||||
|
||||
Choose Graph Layout
|
||||
----------------------------------------
|
||||
**Description:** Choose the layout to be used by Cutter to display the Graph. Cutter supports the following Graph layout algorithms:
|
||||
**Description:** Choose the layout to be used by Iaito to display the Graph. Iaito supports the following Graph layout algorithms:
|
||||
|
||||
- Grid narrow
|
||||
- Grid medium
|
||||
@@ -65,4 +65,4 @@ When Graphviz is installed, the following options are also available:
|
||||
- Graphviz polyline
|
||||
- Graphviz ortho
|
||||
|
||||
**Steps:** Right-click anywhere on the Graph view and choose a layout from the ``Layout`` sub-menu.
|
||||
**Steps:** Right-click anywhere on the Graph view and choose a layout from the ``Layout`` sub-menu.
|
||||
@@ -8,7 +8,7 @@ Hexdump Widget Context Menu
|
||||
|
||||
Bytes Per Row
|
||||
----------------------------------------
|
||||
**Description:** Select how many bytes should be displayed by Cutter in each row in the Hexdump widget.
|
||||
**Description:** Select how many bytes should be displayed by Iaito in each row in the Hexdump widget.
|
||||
|
||||
Available options are:
|
||||
- 1 byte
|
||||
@@ -17,4 +17,4 @@ Available options are:
|
||||
- 8 bytes
|
||||
- 16 bytes
|
||||
- 32 bytes
|
||||
- Power of 2 (Auto)
|
||||
- Power of 2 (Auto)
|
||||
@@ -91,6 +91,6 @@ Show VTables
|
||||
|
||||
Show Zignatures
|
||||
----------------------------------------
|
||||
**Description:** Cutter has its own format of signatures, called Zignatures. This widget lists all the loaded Zignatures.
|
||||
**Description:** Iaito has its own format of signatures, called Zignatures. This widget lists all the loaded Zignatures.
|
||||
|
||||
**Steps:** Windows -> Info... -> Zignatures
|
||||
**Steps:** Windows -> Info... -> Zignatures
|
||||
@@ -12,19 +12,19 @@ Start Debugging
|
||||
|
||||
Start Emulation
|
||||
----------------------------------------
|
||||
**Description:** Start an emulation session on the current loaded binary. Cutter supports emulation of different file formats. Unlike debugging, emulation isn't really executing the binary, but only emulating the instructions. This is very strong feature for analysis of self-contained functions or programs, to analyze cryptographic algorithms or to deobfuscate data. Emulation isn't limited by the running platform, so Linux files such as ELF can be emulated on Windows platforms, and DLL can be emulated on Linux.
|
||||
**Description:** Start an emulation session on the current loaded binary. Iaito supports emulation of different file formats. Unlike debugging, emulation isn't really executing the binary, but only emulating the instructions. This is very strong feature for analysis of self-contained functions or programs, to analyze cryptographic algorithms or to deobfuscate data. Emulation isn't limited by the running platform, so Linux files such as ELF can be emulated on Windows platforms, and DLL can be emulated on Linux.
|
||||
|
||||
**Steps:** Debug -> Start emulation
|
||||
|
||||
Attach to Process
|
||||
----------------------------------------
|
||||
**Description:** Attach Cutter's debugger to a running process, instead of spawning a new process.
|
||||
**Description:** Attach Iaito's debugger to a running process, instead of spawning a new process.
|
||||
|
||||
**Steps:** Debug -> Attach to process
|
||||
|
||||
Connect to a Remote Debugger
|
||||
----------------------------------------
|
||||
**Description:** Connect Cutter to a remote debugger such as GDB ot WinDbg by providing IP and Port of the remote debugger..
|
||||
**Description:** Connect Iaito to a remote debugger such as GDB ot WinDbg by providing IP and Port of the remote debugger..
|
||||
|
||||
**Steps:** Debug -> Connect to a remote debugger
|
||||
|
||||
@@ -38,7 +38,7 @@ Step Into
|
||||
|
||||
Step Over
|
||||
----------------------------------------
|
||||
**Description:** Execute a single assembler instruction, stepping over functions and procedures. The functions will not be skipped and will be executed by Cutter. The execution will pause when reaching the instruction after the function call.
|
||||
**Description:** Execute a single assembler instruction, stepping over functions and procedures. The functions will not be skipped and will be executed by Iaito. The execution will pause when reaching the instruction after the function call.
|
||||
|
||||
**Steps:** Debug -> Step over
|
||||
|
||||
|
||||
@@ -25,6 +25,6 @@ Redo Seek
|
||||
|
||||
Preferences
|
||||
----------------------------------------
|
||||
**Description:** Open the preferences dialog to access and define Cutter's configurations.
|
||||
**Description:** Open the preferences dialog to access and define Iaito's configurations.
|
||||
|
||||
**Steps:** Edit -> Preferences
|
||||
**Steps:** Edit -> Preferences
|
||||
@@ -1,9 +1,9 @@
|
||||
File Menu
|
||||
==============================
|
||||
|
||||
New Instance of Cutter
|
||||
New Instance of Iaito
|
||||
----------------------------------------
|
||||
**Description:** Open a new instance of Cutter to start a new session. This option will open a new window of Cutter without exiting the current session.
|
||||
**Description:** Open a new instance of Iaito to start a new session. This option will open a new window of Iaito without exiting the current session.
|
||||
|
||||
**Steps:** File -> New Window
|
||||
|
||||
@@ -11,8 +11,8 @@ New Instance of Cutter
|
||||
|
||||
Map a New File
|
||||
----------------------------------------
|
||||
**Description:** Cutter allows you to map the contents of other files into the same I/O space used to contain the loaded binary. The new contents can be placed at random or specific offsets.
|
||||
Specifically, Cutter is able to open files and map portions of them at random or specific places in memory. It is the perfect basic tooling to reproduce an environment like a core file, a debug session, or a framework by also loading and mapping all the libraries and files the binary depends on.
|
||||
**Description:** Iaito allows you to map the contents of other files into the same I/O space used to contain the loaded binary. The new contents can be placed at random or specific offsets.
|
||||
Specifically, Iaito is able to open files and map portions of them at random or specific places in memory. It is the perfect basic tooling to reproduce an environment like a core file, a debug session, or a framework by also loading and mapping all the libraries and files the binary depends on.
|
||||
|
||||
**Steps:** File -> Map File
|
||||
|
||||
@@ -20,27 +20,27 @@ Specifically, Cutter is able to open files and map portions of them at random or
|
||||
|
||||
Import a PDB File
|
||||
----------------------------------------
|
||||
**Description:** Cutter allows you to load additional debugging information by loading external PDB files. Unlike other platforms, Cutter does not rely on Windows API to parse a PDB files, thus they can be loaded on any other supported platform like Linux or macOS.
|
||||
**Description:** Iaito allows you to load additional debugging information by loading external PDB files. Unlike other platforms, Iaito does not rely on Windows API to parse a PDB files, thus they can be loaded on any other supported platform like Linux or macOS.
|
||||
|
||||
**Steps:** File -> Import PDB
|
||||
|
||||
Enable Write Mode
|
||||
-----------------------
|
||||
**Description:** This option will enable Write mode and allow you to patch and edit the binary on disk. **Please note** that when Write mode is enabled, each change you make to the binary in Cutter will be applied to the original file on disk. In order not to take unnecessary risks, consider using Cache mode instead.
|
||||
**Description:** This option will enable Write mode and allow you to patch and edit the binary on disk. **Please note** that when Write mode is enabled, each change you make to the binary in Iaito will be applied to the original file on disk. In order not to take unnecessary risks, consider using Cache mode instead.
|
||||
|
||||
**Steps:** File -> Set mode -> Write mode
|
||||
|
||||
|
||||
Enable Cache Mode
|
||||
-----------------------
|
||||
**Description:** This option will enable Cache mode and allow you to patch and edit the binary **without** applying the changes to the file on disk. Unlike in Write mode, in Cache mode, the changes you make to the binary in Cutter will not be applied to the original file on disk unless you specifically committing them using the "Commit changes" menu item. This is safer than using Write mode because there is no risk to lose important data.
|
||||
**Description:** This option will enable Cache mode and allow you to patch and edit the binary **without** applying the changes to the file on disk. Unlike in Write mode, in Cache mode, the changes you make to the binary in Iaito will not be applied to the original file on disk unless you specifically committing them using the "Commit changes" menu item. This is safer than using Write mode because there is no risk to lose important data.
|
||||
|
||||
**Steps:** File -> Set mode -> Cache mode
|
||||
|
||||
|
||||
Enable Read-Only Mode
|
||||
------------------------
|
||||
**Description:** This option is available when files are opened in Write or Cache modes. When Read-Only mode is enabled, no patches and editions to the file are allowed. This is the default mode for files in Cutter, unless specified otherwise by the user, by either enabling Write or Cache mode.
|
||||
**Description:** This option is available when files are opened in Write or Cache modes. When Read-Only mode is enabled, no patches and editions to the file are allowed. This is the default mode for files in Iaito, unless specified otherwise by the user, by either enabling Write or Cache mode.
|
||||
|
||||
**Steps:** File -> Set mode -> Read-Only mode
|
||||
|
||||
@@ -78,7 +78,7 @@ Export to Code
|
||||
|
||||
Run a radare2 Script
|
||||
----------------------------------------
|
||||
**Description:** Cutter allows you to execute radare2 scripts to automate task or transfer information. Radare2 scripts are files that contain list of radare2 commands. The scripts can be created manually by you, or automatically generated by radare2 commands (which typically end with a star character. e.g. ``afl*``).
|
||||
**Description:** Iaito allows you to execute radare2 scripts to automate task or transfer information. Radare2 scripts are files that contain list of radare2 commands. The scripts can be created manually by you, or automatically generated by radare2 commands (which typically end with a star character. e.g. ``afl*``).
|
||||
|
||||
Such a script can look like this:
|
||||
|
||||
@@ -90,9 +90,9 @@ Such a script can look like this:
|
||||
|
||||
**Steps:** File -> Run radare2 script
|
||||
|
||||
Quit Cutter
|
||||
Quit Iaito
|
||||
----------------------------------------
|
||||
**Description:** Quit and exit your current session of Cutter. On exit, you'll be asked whether you want to save your session in order to avoid losing data.
|
||||
**Description:** Quit and exit your current session of Iaito. On exit, you'll be asked whether you want to save your session in order to avoid losing data.
|
||||
|
||||
**Steps:** File -> Quit
|
||||
|
||||
|
||||
@@ -3,18 +3,18 @@ Help Menu
|
||||
|
||||
About
|
||||
----------------------------------------
|
||||
**Description:** Learn more about Cutter. View the current version of the application, the installed plugins, the authors, building options, the license, and more.
|
||||
**Description:** Learn more about Iaito. View the current version of the application, the installed plugins, the authors, building options, the license, and more.
|
||||
|
||||
**Steps:** Help -> About
|
||||
|
||||
Report an Issue
|
||||
----------------------------------------
|
||||
**Description:** Quickly report an issue to Cutter's GitHub repository. Clicking this option will navigate your browser to the new-issue page in Cutter's GitHub repository. It will also automatically fill relevant information inside the issue template.
|
||||
**Description:** Quickly report an issue to Iaito's GitHub repository. Clicking this option will navigate your browser to the new-issue page in Iaito's GitHub repository. It will also automatically fill relevant information inside the issue template.
|
||||
|
||||
**Steps:** Help -> Report an issue
|
||||
|
||||
Documentation
|
||||
---------------------------------------
|
||||
**Description:** Clicking this option will open the user documentation of Cutter in your browser.
|
||||
**Description:** Clicking this option will open the user documentation of Iaito in your browser.
|
||||
|
||||
**Steps:** Help -> Documentation
|
||||
@@ -4,22 +4,22 @@ View Menu
|
||||
|
||||
Refresh Contents
|
||||
----------------------------------------
|
||||
**Description:** In some cases, not all the displayed information on Cutter's widgets will be up-to-date, for example - after defining a new function from the integrated radare2 console. By refreshing the contents, Cutter will fetch the most up to date information from the session and will update the different views.
|
||||
**Description:** In some cases, not all the displayed information on Iaito's widgets will be up-to-date, for example - after defining a new function from the integrated radare2 console. By refreshing the contents, Iaito will fetch the most up to date information from the session and will update the different views.
|
||||
|
||||
***Note:** In the future, Cutter will be aware to any underlying change and will update everything automatically. This is currently a work-in-progress.*
|
||||
***Note:** In the future, Iaito will be aware to any underlying change and will update everything automatically. This is currently a work-in-progress.*
|
||||
|
||||
|
||||
**Steps:** View -> Refresh Contents
|
||||
|
||||
Reset to Default Layout
|
||||
----------------------------------------
|
||||
**Description:** Reset the current :doc:`layout</user-docs/preferences/layout>` to the default layout provided by Cutter.
|
||||
**Description:** Reset the current :doc:`layout</user-docs/preferences/layout>` to the default layout provided by Iaito.
|
||||
|
||||
**Steps:** View -> Reset to default layout
|
||||
|
||||
Reset to Default Settings
|
||||
----------------------------------------
|
||||
**Description:** Reset the current settings to the default settings defined by Cutter.
|
||||
**Description:** Reset the current settings to the default settings defined by Iaito.
|
||||
|
||||
**Steps:** View -> Reset Settings
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ Windows Menu
|
||||
|
||||
Show Dashboard
|
||||
----------------------------------------
|
||||
**Description:** Show the Dashboard panel. Cutter's dashboard contains basic information about the binary. On the Dashboard you can find:
|
||||
**Description:** Show the Dashboard panel. Iaito's dashboard contains basic information about the binary. On the Dashboard you can find:
|
||||
- File name
|
||||
- Binary format (PE, ELF64, ...)
|
||||
- Bits (16, 32, 64, ...)
|
||||
@@ -25,19 +25,19 @@ Show Dashboard
|
||||
|
||||
Show Functions
|
||||
----------------------------------------
|
||||
**Description:** Display the list of functions identified by Cutter. The list also contains information about each function such as name, address, size, and more. Some functions like Main, Entrypoint and external functions are highlighted with specific colors to make them easier to spot.
|
||||
**Description:** Display the list of functions identified by Iaito. The list also contains information about each function such as name, address, size, and more. Some functions like Main, Entrypoint and external functions are highlighted with specific colors to make them easier to spot.
|
||||
|
||||
**Steps:** Windows -> Functions
|
||||
|
||||
Show Decompiler
|
||||
----------------------------------------
|
||||
**Description:** Cutter releases are shipped with two decompilers by default - [r2ghidra](https://github.com/radareorg/r2ghidra-dec) and [r2dec](https://github.com/radareorg/r2dec-js). The Decompiler view will display the decompilation of the current function. The widget is interactive and support address-syncing, renaming, re-typing and more. Cutter can be extended with more decompilers.
|
||||
**Description:** Iaito releases are shipped with two decompilers by default - [r2ghidra](https://github.com/radareorg/r2ghidra-dec) and [r2dec](https://github.com/radareorg/r2dec-js). The Decompiler view will display the decompilation of the current function. The widget is interactive and support address-syncing, renaming, re-typing and more. Iaito can be extended with more decompilers.
|
||||
|
||||
**Steps:** Windows -> Decompiler
|
||||
|
||||
Graph Overview
|
||||
----------------------------------------
|
||||
**Description:** One of the main views of Cutter allows you to navigate inside functions in a graph mode. Graph overview will only display a zoomed-out form of the graph, and will help the user understand the flow of a function as a whole.
|
||||
**Description:** One of the main views of Iaito allows you to navigate inside functions in a graph mode. Graph overview will only display a zoomed-out form of the graph, and will help the user understand the flow of a function as a whole.
|
||||
|
||||
**Steps:** Windows -> Graph Overview
|
||||
|
||||
@@ -75,7 +75,7 @@ Add a new instance of the Disassembly Widget
|
||||
|
||||
Add a new instance of the Graph Widget
|
||||
----------------------------------------
|
||||
**Description:** One of the main views of Cutter allows you to navigate inside functions in a graph mode. This view displays the flow of a function where each node on the graph represents a basic block in the function. The edges coming-to and getting-out of the blocks represent the control flow. The menu item will create a new instance of the Graph widget in order to view one or multiple locations at the same time.
|
||||
**Description:** One of the main views of Iaito allows you to navigate inside functions in a graph mode. This view displays the flow of a function where each node on the graph represents a basic block in the function. The edges coming-to and getting-out of the blocks represent the control flow. The menu item will create a new instance of the Graph widget in order to view one or multiple locations at the same time.
|
||||
|
||||
**Steps:** Windows -> Add Graph
|
||||
|
||||
@@ -96,8 +96,8 @@ Show Comments
|
||||
|
||||
Show Console
|
||||
----------------------------------------
|
||||
**Description:** Open the integrated radare2 console. This will allow you to execute radare2 commands straight from Cutter.
|
||||
**Description:** Open the integrated radare2 console. This will allow you to execute radare2 commands straight from Iaito.
|
||||
|
||||
**Steps:** Windows -> Console
|
||||
|
||||
**Shortcut:** :kbd:`:` or :kbd:`Ctrl` + :kbd:`\``
|
||||
**Shortcut:** :kbd:`:` or :kbd:`Ctrl` + :kbd:`\``
|
||||
@@ -3,7 +3,7 @@ Set Table Layout
|
||||
|
||||
Set Table Layout to Horizontal
|
||||
----------------------------------------
|
||||
**Description:** This option sets the layout of the current widget to Horizontal, in which each row contains one or more columns with relevant information (such as offset, size, name, etc). This is the default view in most of the widgets in Cutter.
|
||||
**Description:** This option sets the layout of the current widget to Horizontal, in which each row contains one or more columns with relevant information (such as offset, size, name, etc). This is the default view in most of the widgets in Iaito.
|
||||
|
||||
**Steps:** Right-click on a widget title and select ``Horizontal``.
|
||||
|
||||
@@ -11,4 +11,4 @@ Set Table Layout to Vertical
|
||||
----------------------------------------
|
||||
**Description:** This option sets the layout of the current widget to Vertical, in which the items are displayed in a tree-like view, where every item can be expanded to view more information.
|
||||
|
||||
**Steps:** Right-click on a widget title and select ``Vertical``
|
||||
**Steps:** Right-click on a widget title and select ``Vertical``
|
||||
@@ -1,7 +1,7 @@
|
||||
Analysis Options
|
||||
================
|
||||
|
||||
Cutter will use the underlying radare2 analysis options to analyze a binary. These options are usually
|
||||
Iaito will use the underlying radare2 analysis options to analyze a binary. These options are usually
|
||||
configured when the binary is first loaded. However, they can be later changed using the Analysis
|
||||
dialog, and a new analysis that takes these options into account can then be performed.
|
||||
|
||||
@@ -41,7 +41,7 @@ Try to name functions without symbols by using artifacts in the functions such a
|
||||
|
||||
Search for new functions following already defined functions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Cutter will check if there is a candidate for a new function following an already defined one, as the compiler usually
|
||||
Iaito will check if there is a candidate for a new function following an already defined one, as the compiler usually
|
||||
state them together. This option is taking the advantages of both Recursive Analysis and Linear Sweep into some kind of a hybrid mode. For each discovered function, the analysis will try to check for a function-prologue, usually following a gap of null bytes or ``cc`` bytes. This will help with discovering functions which are not referenced in the program. As such, it will make the analysis slower and prone to false-positives.
|
||||
|
||||
**Configuration variable:** ``anal.hasnext``
|
||||
@@ -49,7 +49,7 @@ state them together. This option is taking the advantages of both Recursive Anal
|
||||
|
||||
Create references for unconditional jumps
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
When encountering unconditional jumps during the analysis, Cutter will add a code-reference even if it is not guaranteed
|
||||
When encountering unconditional jumps during the analysis, Iaito will add a code-reference even if it is not guaranteed
|
||||
that the jump will take place.
|
||||
|
||||
**Configuration variable:** ``anal.jmp.ref``
|
||||
@@ -65,14 +65,14 @@ When encountering switch statements during analysis, continue and analyze the ta
|
||||
Analyze ``push`` + ``ret`` as ``jmp``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
When performing analysis of a function, treat the sequence of ``push`` followed by ``ret`` instruction as a ``jmp``.
|
||||
This can help Cutter to continue the analysis to target of the ``jmp``.
|
||||
This can help Iaito to continue the analysis to target of the ``jmp``.
|
||||
|
||||
**Configuration variable:** ``anal.pushret``
|
||||
|
||||
|
||||
Show verbose information when performing analysis
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
When enabled, Cutter will print warnings it encountered while preforming analysis. These warnings can help the user
|
||||
When enabled, Iaito will print warnings it encountered while preforming analysis. These warnings can help the user
|
||||
understand if anything went wrong in the analysis. This function is not only helpful when trying to perform a full
|
||||
analysis of the program, but also when trying to analyze and define new functions.
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
Initialization Script
|
||||
===================================
|
||||
|
||||
On the launch of Cutter, it loads ``.cutterrc`` files from various locations if they are present. The directories from where ``.cutterrc`` files are loaded are all directories of type ``QStandardPaths::AppConfigLocation``. These locations vary according to OS. You can visit `here <https://doc.qt.io/qt-5/qstandardpaths.html>`__ to see all the locations.
|
||||
On the launch of Iaito, it loads ``.cutterrc`` files from various locations if they are present. The directories from where ``.cutterrc`` files are loaded are all directories of type ``QStandardPaths::AppConfigLocation``. These locations vary according to OS. You can visit `here <https://doc.qt.io/qt-5/qstandardpaths.html>`__ to see all the locations.
|
||||
|
||||
If multiple ``.cutterrc`` scripts are present in different directories, all of them will be loaded. In case of conflicting or contradictory commands, the corresponding command in the script loaded last will override all the previous commands. Cutter has a GUI editor for Initialization Script whose description is given below. The script from the editor will be the last loaded initialization script and hence will override all the previous scripts in the event of conflicting commands.
|
||||
If multiple ``.cutterrc`` scripts are present in different directories, all of them will be loaded. In case of conflicting or contradictory commands, the corresponding command in the script loaded last will override all the previous commands. Iaito has a GUI editor for Initialization Script whose description is given below. The script from the editor will be the last loaded initialization script and hence will override all the previous scripts in the event of conflicting commands.
|
||||
|
||||
Initialization Script Editor
|
||||
-----------------------------------
|
||||
@@ -12,6 +12,6 @@ Initialization Script Editor
|
||||
:alt: Image of Initialization Script Editor
|
||||
|
||||
|
||||
**Description:** You can add new commands and modify existing commands here. To save the script, click on the ``Save`` button. If you want to see the changes you have made without restarting Cutter, you can use the ``Execute`` button. The hyperlink that shows the location of the script will open the directory containing the script on click.
|
||||
**Description:** You can add new commands and modify existing commands here. To save the script, click on the ``Save`` button. If you want to see the changes you have made without restarting Iaito, you can use the ``Execute`` button. The hyperlink that shows the location of the script will open the directory containing the script on click.
|
||||
|
||||
**Steps to open:** ``Edit -> Preferences -> Initialization Script``
|
||||
@@ -2,7 +2,7 @@ Layout
|
||||
======
|
||||
|
||||
The set of currently opened widgets, their placement, and some properties is grouped into layouts.
|
||||
Cutter will automatically restore the last layout state when reopening Cutter. The last debug and normal layouts are stored separately.
|
||||
Iaito will automatically restore the last layout state when reopening Iaito. The last debug and normal layouts are stored separately.
|
||||
You can :ref:`save<user-docs/menus/menu-bar/view-menu:Save Layout>` multiple named layouts for different use cases.
|
||||
Use :doc:`../menus/menu-bar/view-menu` to :ref:`save<user-docs/menus/menu-bar/view-menu:Save Layout>`,
|
||||
:ref:`load<user-docs/menus/menu-bar/view-menu:Layouts>` or :ref:`user-docs/menus/menu-bar/view-menu:Reset to default layout`.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Shortcuts
|
||||
=========
|
||||
|
||||
This page regroups the common shortcuts available in Cutter.
|
||||
This page regroups the common shortcuts available in Iaito.
|
||||
|
||||
Global Shortcuts
|
||||
----------------
|
||||
|
||||
@@ -33,9 +33,9 @@ def set_global_vars():
|
||||
|
||||
def win_dist(args):
|
||||
os.makedirs(args.dist)
|
||||
r2_meson_mod.copy(os.path.join(args.dir, 'r2cutter.exe'), args.dist)
|
||||
r2_meson_mod.copy(os.path.join(args.dir, 'iaito.exe'), args.dist)
|
||||
log.debug('Deploying Qt5')
|
||||
subprocess.call(['windeployqt', '--release', os.path.join(args.dist, 'r2cutter.exe')])
|
||||
subprocess.call(['windeployqt', '--release', os.path.join(args.dist, 'iaito.exe')])
|
||||
log.debug('Deploying libr2')
|
||||
r2_meson_mod.PATH_FMT.update(r2_meson_mod.R2_PATH)
|
||||
r2_meson_mod.meson('install', options=[['-C', '{}'.format(args.dir)], '--no-rebuild'])
|
||||
@@ -58,13 +58,13 @@ def build(args):
|
||||
if args.backend == 'ninja':
|
||||
r2_meson_mod.ninja(cutter_builddir)
|
||||
else:
|
||||
project = os.path.join(cutter_builddir, 'r2cutter.sln')
|
||||
project = os.path.join(cutter_builddir, 'iaito.sln')
|
||||
r2_meson_mod.msbuild(project, '/m')
|
||||
|
||||
def main():
|
||||
set_global_vars()
|
||||
|
||||
parser = argparse.ArgumentParser(description='Meson script for r2cutter')
|
||||
parser = argparse.ArgumentParser(description='Meson script for iaito')
|
||||
parser.add_argument('--backend', choices=r2_meson_mod.BACKENDS,
|
||||
default='ninja', help='Choose build backend')
|
||||
parser.add_argument('--dir', default='build',
|
||||
|
||||
+4
-5
@@ -12,15 +12,14 @@ IF !ERRORLEVEL! NEQ 0 (
|
||||
SET "PATH=%CD%;%PATH%"
|
||||
SET "R2DIST=r2_dist"
|
||||
|
||||
SET "R2V=5.2.1"
|
||||
ECHO Downloading radare2 (%PLATFORM%)
|
||||
rem CD radare2
|
||||
rem powershell -command "Invoke-WebRequest 'https://github.com/radareorg/radare2/releases/download/5.1.0/radare2-5.1.0_windows.zip' -OutFile 'radare2-5.1.0_windows.zip'"
|
||||
pip install wget
|
||||
rem python -m wget -o radare2-5.1.0_windows.zip https://github.com/radareorg/radare2/releases/download/5.1.0/radare2-5.1.0_windows.zip
|
||||
python -m wget -o radare2-5.1.0_w64.zip https://github.com/radareorg/radare2/releases/download/5.1.0/radare2-5.1.0_w64.zip
|
||||
unzip radare2-5.1.0_w64.zip
|
||||
python -m wget -o r2.zip https://github.com/radareorg/radare2/releases/download/%R2V%/radare2-%R2V%-w64.zip
|
||||
unzip r2.zip
|
||||
RMDIR /S /Q %R2DIST%
|
||||
MOVE radare2-5.1.0_w64 %R2DIST%
|
||||
MOVE radare2-%R2V%-w64 %R2DIST%
|
||||
SET "PATH=%CD%\%R2DIST%\bin;%PATH%"
|
||||
|
||||
rem ECHO Building radare2 (%PLATFORM%)
|
||||
|
||||
+1
-1
Submodule radare2 updated: f80c847376...704d779cb2.
@@ -6,7 +6,7 @@ import re
|
||||
import atexit
|
||||
|
||||
if len(sys.argv) != 3:
|
||||
print(f"usage: {sys.argv[0]} [Cutter.AppImage] [symbols dir]")
|
||||
print(f"usage: {sys.argv[0]} [Iaito.AppImage] [symbols dir]")
|
||||
exit(1)
|
||||
|
||||
root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
|
||||
@@ -44,7 +44,7 @@ def kill_appimage():
|
||||
atexit.register(kill_appimage)
|
||||
mount_dir = appimage_p.stdout.readline().strip().decode("utf-8")
|
||||
|
||||
binaries = [ os.path.join(mount_dir, "usr/bin/Cutter") ]
|
||||
binaries = [ os.path.join(mount_dir, "usr/bin/Iaito") ]
|
||||
for f in os.scandir(os.path.join(mount_dir, "usr/lib")):
|
||||
if f.is_dir() or f.is_symlink():
|
||||
continue
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#########
|
||||
#### Push new translation files to cutter-translations
|
||||
#### Push new translation files to iaito-translations
|
||||
#### so Crowdin can fetch them
|
||||
|
||||
log() {
|
||||
@@ -16,10 +16,10 @@ git submodule update translations
|
||||
cd translations
|
||||
git pull origin master
|
||||
|
||||
# Generate Crowdin single translation file from cutter_fr.ts
|
||||
# Generate Crowdin single translation file from iaito_ca.ts
|
||||
log "Generating single translation file"
|
||||
lupdate ../Cutter.pro
|
||||
cp ./fr/cutter_fr_FR.ts ./Translations.ts
|
||||
lupdate ../Iaito.pro
|
||||
cp ./ca/iaito_ca.ts ./Translations.ts
|
||||
|
||||
# Push it so Crowdin can find new strings, and later push updated translations
|
||||
log "Committing..."
|
||||
@@ -27,6 +27,6 @@ git add Translations.ts
|
||||
git commit -m "Updated translations"
|
||||
log "Pushing..."
|
||||
export GIT_SSH_COMMAND="/usr/bin/ssh -i $TRAVIS_BUILD_DIR/scripts/deploy_translations_rsa"
|
||||
git push "[email protected]:radareorg/cutter-translations.git" HEAD:refs/heads/master
|
||||
git push "[email protected]:radareorg/iaito-translations.git" HEAD:refs/heads/master
|
||||
|
||||
log "Script done!"
|
||||
@@ -1,13 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ ! $# -eq 2 ]; then
|
||||
echo "usage: $0 [Cutter.app] [dst]"
|
||||
echo "usage: $0 [Iaito.app] [dst]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
appbundle="$1"
|
||||
dst="$2"
|
||||
files="$appbundle/Contents/MacOS/Cutter.bin $appbundle/Contents/Frameworks/Python.framework/Python $(find "$appbundle" -type f -name '*.dylib')"
|
||||
files="$appbundle/Contents/MacOS/Iaito.bin $appbundle/Contents/Frameworks/Python.framework/Python $(find "$appbundle" -type f -name '*.dylib')"
|
||||
|
||||
mkdir -p "$dst" || exit 1
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import os
|
||||
import re
|
||||
|
||||
scripts_path = os.path.dirname(os.path.realpath(__file__))
|
||||
pro_file_path = os.path.join(scripts_path, "..", "src", "Cutter.pro")
|
||||
pro_file_path = os.path.join(scripts_path, "..", "src", "Iaito.pro")
|
||||
|
||||
with open(pro_file_path, "r") as f:
|
||||
pro_content = f.read()
|
||||
@@ -11,13 +11,13 @@ with open(pro_file_path, "r") as f:
|
||||
def version_var_re(name):
|
||||
return "^[ \t]*{}[ \t]*=[ \t]*(\d+)[ \t]*$".format(name)
|
||||
|
||||
m = re.search(version_var_re("CUTTER_VERSION_MAJOR"), pro_content, flags=re.MULTILINE)
|
||||
m = re.search(version_var_re("IAITO_VERSION_MAJOR"), pro_content, flags=re.MULTILINE)
|
||||
version_major = int(m.group(1)) if m is not None else 0
|
||||
|
||||
m = re.search(version_var_re("CUTTER_VERSION_MINOR"), pro_content, flags=re.MULTILINE)
|
||||
m = re.search(version_var_re("IAITO_VERSION_MINOR"), pro_content, flags=re.MULTILINE)
|
||||
version_minor = int(m.group(1)) if m is not None else 0
|
||||
|
||||
m = re.search(version_var_re("CUTTER_VERSION_PATCH"), pro_content, flags=re.MULTILINE)
|
||||
m = re.search(version_var_re("IAITO_VERSION_PATCH"), pro_content, flags=re.MULTILINE)
|
||||
version_patch = int(m.group(1)) if m is not None else 0
|
||||
|
||||
print("{}.{}.{}".format(version_major, version_minor, version_patch))
|
||||
@@ -4,7 +4,7 @@ import sys
|
||||
name = sys.argv[1]
|
||||
value = []
|
||||
root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
|
||||
with open(os.path.join(root, 'src', 'Cutter.pro')) as f:
|
||||
with open(os.path.join(root, 'src', 'Iaito.pro')) as f:
|
||||
text = f.read()
|
||||
text = text.replace('\\\n', '')
|
||||
nbraces = 0
|
||||
|
||||
+98
-95
@@ -8,46 +8,46 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
include(DisallowInSource)
|
||||
include(Utils)
|
||||
|
||||
set(CUTTER_PYTHON_MIN 3.5)
|
||||
set(IAITO_PYTHON_MIN 3.5)
|
||||
|
||||
option(CUTTER_USE_BUNDLED_RADARE2 "Use radare2 from src/radare2 submodule instead of searching for it on the system" OFF)
|
||||
option(CUTTER_USE_ADDITIONAL_RADARE2_PATHS "Search radare2 in additional paths which are not part of default system library paths.\
|
||||
option(IAITO_USE_BUNDLED_RADARE2 "Use radare2 from src/radare2 submodule instead of searching for it on the system" OFF)
|
||||
option(IAITO_USE_ADDITIONAL_RADARE2_PATHS "Search radare2 in additional paths which are not part of default system library paths.\
|
||||
Disable this option if you are linking against radare2 pacakged as proper system library or in a custom path and additional are paths causing problems." ON)
|
||||
option(CUTTER_ENABLE_PYTHON "Enable Python integration. Requires Python >= ${CUTTER_PYTHON_MIN}." OFF)
|
||||
option(CUTTER_ENABLE_PYTHON_BINDINGS "Enable generating Python bindings with Shiboken2. Unused if CUTTER_ENABLE_PYTHON=OFF." OFF)
|
||||
option(CUTTER_ENABLE_CRASH_REPORTS "Enable crash report system. Unused if CUTTER_ENABLE_CRASH_REPORTS=OFF" OFF)
|
||||
option(CUTTER_APPIMAGE_BUILD "Enable Appimage specific changes. Doesn't cause building of Appimage itself." OFF)
|
||||
tri_option(CUTTER_ENABLE_KSYNTAXHIGHLIGHTING "Use KSyntaxHighlighting" AUTO)
|
||||
tri_option(CUTTER_ENABLE_GRAPHVIZ "Enable use of graphviz for graph layout" AUTO)
|
||||
option(IAITO_ENABLE_PYTHON "Enable Python integration. Requires Python >= ${IAITO_PYTHON_MIN}." OFF)
|
||||
option(IAITO_ENABLE_PYTHON_BINDINGS "Enable generating Python bindings with Shiboken2. Unused if IAITO_ENABLE_PYTHON=OFF." OFF)
|
||||
option(IAITO_ENABLE_CRASH_REPORTS "Enable crash report system. Unused if IAITO_ENABLE_CRASH_REPORTS=OFF" OFF)
|
||||
option(IAITO_APPIMAGE_BUILD "Enable Appimage specific changes. Doesn't cause building of Appimage itself." OFF)
|
||||
tri_option(IAITO_ENABLE_KSYNTAXHIGHLIGHTING "Use KSyntaxHighlighting" AUTO)
|
||||
tri_option(IAITO_ENABLE_GRAPHVIZ "Enable use of graphviz for graph layout" AUTO)
|
||||
set(SHIBOKEN_EXTRA_OPTIONS "" CACHE STRING "Extra options for shiboken generator")
|
||||
set(CUTTER_EXTRA_PLUGIN_DIRS "" CACHE STRING "List of addition plugin locations")
|
||||
option(CUTTER_ENABLE_DEPENDENCY_DOWNLOADS "Enable downloading of dependencies. Setting to OFF doesn't affect any downloads done by r2 build." OFF)
|
||||
option(CUTTER_PACKAGE_DEPENDENCIES "During install step include the third party dependencies." OFF)
|
||||
option(CUTTER_PACKAGE_R2GHIDRA "Compile and install r2ghidra during install step." OFF)
|
||||
option(CUTTER_PACKAGE_R2DEC "Compile and install r2dec during install step." OFF)
|
||||
OPTION(CUTTER_QT6 "Use QT6" OFF)
|
||||
set(IAITO_EXTRA_PLUGIN_DIRS "" CACHE STRING "List of addition plugin locations")
|
||||
option(IAITO_ENABLE_DEPENDENCY_DOWNLOADS "Enable downloading of dependencies. Setting to OFF doesn't affect any downloads done by r2 build." OFF)
|
||||
option(IAITO_PACKAGE_DEPENDENCIES "During install step include the third party dependencies." OFF)
|
||||
option(IAITO_PACKAGE_R2GHIDRA "Compile and install r2ghidra during install step." OFF)
|
||||
option(IAITO_PACKAGE_R2DEC "Compile and install r2dec during install step." OFF)
|
||||
OPTION(IAITO_QT6 "Use QT6" OFF)
|
||||
|
||||
if(NOT CUTTER_ENABLE_PYTHON)
|
||||
set(CUTTER_ENABLE_PYTHON_BINDINGS OFF)
|
||||
if(NOT IAITO_ENABLE_PYTHON)
|
||||
set(IAITO_ENABLE_PYTHON_BINDINGS OFF)
|
||||
endif()
|
||||
|
||||
# Parse Cutter.pro to get filenames
|
||||
# Parse Iaito.pro to get filenames
|
||||
include(QMakeProParse)
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Cutter.pro"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Cutter.pro"
|
||||
COPYONLY) # trigger reconfigure if Cutter.pro changes
|
||||
parse_qmake_pro("${CMAKE_CURRENT_BINARY_DIR}/Cutter.pro" CUTTER_PRO)
|
||||
set(SOURCE_FILES ${CUTTER_PRO_SOURCES})
|
||||
set(HEADER_FILES ${CUTTER_PRO_HEADERS})
|
||||
set(UI_FILES ${CUTTER_PRO_FORMS})
|
||||
set(QRC_FILES ${CUTTER_PRO_RESOURCES})
|
||||
set(CUTTER_VERSION_MAJOR "${CUTTER_PRO_CUTTER_VERSION_MAJOR}")
|
||||
set(CUTTER_VERSION_MINOR "${CUTTER_PRO_CUTTER_VERSION_MINOR}")
|
||||
set(CUTTER_VERSION_PATCH "${CUTTER_PRO_CUTTER_VERSION_PATCH}")
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Iaito.pro"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Iaito.pro"
|
||||
COPYONLY) # trigger reconfigure if Iaito.pro changes
|
||||
parse_qmake_pro("${CMAKE_CURRENT_BINARY_DIR}/Iaito.pro" IAITO_PRO)
|
||||
set(SOURCE_FILES ${IAITO_PRO_SOURCES})
|
||||
set(HEADER_FILES ${IAITO_PRO_HEADERS})
|
||||
set(UI_FILES ${IAITO_PRO_FORMS})
|
||||
set(QRC_FILES ${IAITO_PRO_RESOURCES})
|
||||
set(IAITO_VERSION_MAJOR "${IAITO_PRO_IAITO_VERSION_MAJOR}")
|
||||
set(IAITO_VERSION_MINOR "${IAITO_PRO_IAITO_VERSION_MINOR}")
|
||||
set(IAITO_VERSION_PATCH "${IAITO_PRO_IAITO_VERSION_PATCH}")
|
||||
|
||||
set(CUTTER_VERSION_FULL "${CUTTER_VERSION_MAJOR}.${CUTTER_VERSION_MINOR}.${CUTTER_VERSION_PATCH}")
|
||||
set(IAITO_VERSION_FULL "${IAITO_VERSION_MAJOR}.${IAITO_VERSION_MINOR}.${IAITO_VERSION_PATCH}")
|
||||
|
||||
project(r2cutter VERSION "${CUTTER_VERSION_FULL}")
|
||||
project(iaito VERSION "${IAITO_VERSION_FULL}")
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
@@ -56,16 +56,16 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
if (CUTTER_QT6)
|
||||
if (IAITO_QT6)
|
||||
set(QT_PREFIX Qt6)
|
||||
else()
|
||||
set(QT_PREFIX Qt5)
|
||||
endif()
|
||||
find_package(${QT_PREFIX} REQUIRED COMPONENTS Core Widgets Gui Svg Network)
|
||||
|
||||
include(CutterInstallDirs)
|
||||
include(IaitoInstallDirs)
|
||||
|
||||
if(CUTTER_USE_BUNDLED_RADARE2)
|
||||
if(IAITO_USE_BUNDLED_RADARE2)
|
||||
include(BundledRadare2)
|
||||
set(RADARE2_TARGET Radare2)
|
||||
else()
|
||||
@@ -73,14 +73,14 @@ else()
|
||||
set(RADARE2_TARGET Radare2::libr)
|
||||
endif()
|
||||
|
||||
if(CUTTER_ENABLE_PYTHON)
|
||||
if(IAITO_ENABLE_PYTHON)
|
||||
find_package(PythonInterp REQUIRED)
|
||||
find_package(PythonLibs ${CUTTER_PYTHON_MIN} REQUIRED)
|
||||
find_package(PythonLibs ${IAITO_PYTHON_MIN} REQUIRED)
|
||||
|
||||
include_directories(${PYTHON_INCLUDE_DIRS})
|
||||
add_definitions(-DCUTTER_ENABLE_PYTHON)
|
||||
add_definitions(-DIAITO_ENABLE_PYTHON)
|
||||
|
||||
if(CUTTER_ENABLE_PYTHON_BINDINGS)
|
||||
if(IAITO_ENABLE_PYTHON_BINDINGS)
|
||||
# 5.12.3 => 5.12
|
||||
if("${Qt5_VERSION}" MATCHES "^([0-9]+\\.[0-9]+)\\.[0-9]+")
|
||||
set(Shiboken2_VERSION_REQUIRED "${CMAKE_MATCH_1}")
|
||||
@@ -97,12 +97,12 @@ if(CUTTER_ENABLE_PYTHON)
|
||||
${PYSIDE_INCLUDE_DIR}/QtGui
|
||||
${PYSIDE_INCLUDE_DIR}/QtWidgets)
|
||||
|
||||
add_definitions(-DCUTTER_ENABLE_PYTHON_BINDINGS)
|
||||
add_definitions(-DIAITO_ENABLE_PYTHON_BINDINGS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CUTTER_ENABLE_KSYNTAXHIGHLIGHTING)
|
||||
if(CUTTER_ENABLE_KSYNTAXHIGHLIGHTING STREQUAL AUTO)
|
||||
if(IAITO_ENABLE_KSYNTAXHIGHLIGHTING)
|
||||
if(IAITO_ENABLE_KSYNTAXHIGHLIGHTING STREQUAL AUTO)
|
||||
find_package(KF5SyntaxHighlighting)
|
||||
if(KF5SyntaxHighlighting_FOUND)
|
||||
set(KSYNTAXHIGHLIGHTING_STATUS ON)
|
||||
@@ -117,33 +117,33 @@ else()
|
||||
set(KSYNTAXHIGHLIGHTING_STATUS OFF)
|
||||
endif()
|
||||
|
||||
if (CUTTER_ENABLE_GRAPHVIZ)
|
||||
if (CUTTER_ENABLE_GRAPHVIZ STREQUAL AUTO)
|
||||
if (IAITO_ENABLE_GRAPHVIZ)
|
||||
if (IAITO_ENABLE_GRAPHVIZ STREQUAL AUTO)
|
||||
find_package(Graphviz)
|
||||
else()
|
||||
find_package(Graphviz REQUIRED)
|
||||
endif()
|
||||
set (CUTTER_ENABLE_GRAPHVIZ ${Graphviz_FOUND})
|
||||
set (IAITO_ENABLE_GRAPHVIZ ${Graphviz_FOUND})
|
||||
endif()
|
||||
|
||||
message(STATUS "")
|
||||
message(STATUS "Building Cutter version ${CUTTER_VERSION_FULL}")
|
||||
message(STATUS "Building Iaito version ${IAITO_VERSION_FULL}")
|
||||
message(STATUS "Options:")
|
||||
message(STATUS "- Bundled radare2: ${CUTTER_USE_BUNDLED_RADARE2}")
|
||||
message(STATUS "- Python: ${CUTTER_ENABLE_PYTHON}")
|
||||
message(STATUS "- Python Bindings: ${CUTTER_ENABLE_PYTHON_BINDINGS}")
|
||||
message(STATUS "- Crash Handling: ${CUTTER_ENABLE_CRASH_REPORTS}")
|
||||
message(STATUS "- Bundled radare2: ${IAITO_USE_BUNDLED_RADARE2}")
|
||||
message(STATUS "- Python: ${IAITO_ENABLE_PYTHON}")
|
||||
message(STATUS "- Python Bindings: ${IAITO_ENABLE_PYTHON_BINDINGS}")
|
||||
message(STATUS "- Crash Handling: ${IAITO_ENABLE_CRASH_REPORTS}")
|
||||
message(STATUS "- KSyntaxHighlighting: ${KSYNTAXHIGHLIGHTING_STATUS}")
|
||||
message(STATUS "- Graphviz: ${CUTTER_ENABLE_GRAPHVIZ}")
|
||||
message(STATUS "- Graphviz: ${IAITO_ENABLE_GRAPHVIZ}")
|
||||
message(STATUS "")
|
||||
|
||||
|
||||
include(QMakeConfigureFile)
|
||||
qmake_configure_file("${CMAKE_CURRENT_SOURCE_DIR}/CutterConfig.h.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/CutterConfig.h")
|
||||
qmake_configure_file("${CMAKE_CURRENT_SOURCE_DIR}/IaitoConfig.h.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/IaitoConfig.h")
|
||||
|
||||
|
||||
if(CUTTER_ENABLE_PYTHON_BINDINGS)
|
||||
if(IAITO_ENABLE_PYTHON_BINDINGS)
|
||||
set(BINDINGS_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bindings")
|
||||
set(BINDINGS_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/bindings")
|
||||
|
||||
@@ -153,7 +153,7 @@ if(CUTTER_ENABLE_PYTHON_BINDINGS)
|
||||
|
||||
set_property(SOURCE ${BINDINGS_SOURCE} PROPERTY SKIP_AUTOGEN ON)
|
||||
|
||||
include_directories("${BINDINGS_BUILD_DIR}/CutterBindings")
|
||||
include_directories("${BINDINGS_BUILD_DIR}/IaitoBindings")
|
||||
|
||||
set(SHIBOKEN_OPTIONS)
|
||||
if (WIN32)
|
||||
@@ -171,12 +171,12 @@ endif()
|
||||
|
||||
|
||||
if (TARGET Graphviz::GVC)
|
||||
list(APPEND SOURCE_FILES ${CUTTER_PRO_GRAPHVIZ_SOURCES})
|
||||
list(APPEND HEADER_FILES ${CUTTER_PRO_GRAPHVIZ_HEADERS})
|
||||
list(APPEND SOURCE_FILES ${IAITO_PRO_GRAPHVIZ_SOURCES})
|
||||
list(APPEND HEADER_FILES ${IAITO_PRO_GRAPHVIZ_HEADERS})
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
set(PLATFORM_RESOURCES "img/r2cutter.rc")
|
||||
set(PLATFORM_RESOURCES "img/iaito.rc")
|
||||
else()
|
||||
set(PLATFORM_RESOURCES "")
|
||||
endif()
|
||||
@@ -188,53 +188,53 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
|
||||
endif()
|
||||
|
||||
|
||||
add_executable(r2cutter MACOSX_BUNDLE ${UI_FILES} ${QRC_FILES} ${PLATFORM_RESOURCES} ${SOURCE_FILES} ${HEADER_FILES} ${BINDINGS_SOURCE})
|
||||
set_target_properties(r2cutter PROPERTIES
|
||||
add_executable(iaito MACOSX_BUNDLE ${UI_FILES} ${QRC_FILES} ${PLATFORM_RESOURCES} ${SOURCE_FILES} ${HEADER_FILES} ${BINDINGS_SOURCE})
|
||||
set_target_properties(iaito PROPERTIES
|
||||
ENABLE_EXPORTS ON
|
||||
CXX_VISIBILITY_PRESET hidden
|
||||
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/macos/Info.plist")
|
||||
target_compile_definitions(r2cutter PRIVATE CUTTER_SOURCE_BUILD)
|
||||
target_compile_definitions(iaito PRIVATE IAITO_SOURCE_BUILD)
|
||||
|
||||
set(CUTTER_INCLUDE_DIRECTORIES core widgets common plugins menus .)
|
||||
foreach(_dir ${CUTTER_INCLUDE_DIRECTORIES})
|
||||
target_include_directories(r2cutter PUBLIC
|
||||
set(IAITO_INCLUDE_DIRECTORIES core widgets common plugins menus .)
|
||||
foreach(_dir ${IAITO_INCLUDE_DIRECTORIES})
|
||||
target_include_directories(iaito PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${_dir}>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/cutter/${_dir}>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/iaito/${_dir}>
|
||||
)
|
||||
endforeach()
|
||||
|
||||
if (TARGET Graphviz::GVC)
|
||||
target_link_libraries(r2cutter PRIVATE Graphviz::GVC)
|
||||
target_compile_definitions(r2cutter PRIVATE CUTTER_ENABLE_GRAPHVIZ)
|
||||
target_link_libraries(iaito PRIVATE Graphviz::GVC)
|
||||
target_compile_definitions(iaito PRIVATE IAITO_ENABLE_GRAPHVIZ)
|
||||
endif()
|
||||
|
||||
if(CUTTER_ENABLE_CRASH_REPORTS)
|
||||
if(IAITO_ENABLE_CRASH_REPORTS)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
target_link_libraries(r2cutter PRIVATE Threads::Threads)
|
||||
target_link_libraries(iaito PRIVATE Threads::Threads)
|
||||
|
||||
add_definitions(-DCUTTER_ENABLE_CRASH_REPORTS)
|
||||
add_definitions(-DIAITO_ENABLE_CRASH_REPORTS)
|
||||
if (NOT WIN32)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g ")
|
||||
endif()
|
||||
find_package(Breakpad REQUIRED)
|
||||
target_link_libraries(r2cutter PRIVATE Breakpad::client)
|
||||
target_link_libraries(iaito PRIVATE Breakpad::client)
|
||||
endif()
|
||||
|
||||
target_link_libraries(r2cutter PUBLIC ${QT_PREFIX}::Core ${QT_PREFIX}::Widgets ${QT_PREFIX}::Gui PRIVATE ${QT_PREFIX}::Svg ${QT_PREFIX}::Network)
|
||||
target_link_libraries(r2cutter PUBLIC ${RADARE2_TARGET})
|
||||
if(CUTTER_ENABLE_PYTHON)
|
||||
target_link_libraries(iaito PUBLIC ${QT_PREFIX}::Core ${QT_PREFIX}::Widgets ${QT_PREFIX}::Gui PRIVATE ${QT_PREFIX}::Svg ${QT_PREFIX}::Network)
|
||||
target_link_libraries(iaito PUBLIC ${RADARE2_TARGET})
|
||||
if(IAITO_ENABLE_PYTHON)
|
||||
if (WIN32)
|
||||
# On windows some of the Python STABLE API functions are in seperate library
|
||||
# which isn't added by CMake.
|
||||
get_filename_component(_PYTHON_LIB_DIR ${PYTHON_LIBRARIES} DIRECTORY)
|
||||
target_link_directories(r2cutter PRIVATE ${_PYTHON_LIB_DIR})
|
||||
target_link_directories(iaito PRIVATE ${_PYTHON_LIB_DIR})
|
||||
endif()
|
||||
target_link_libraries(r2cutter PRIVATE ${PYTHON_LIBRARIES})
|
||||
if(CUTTER_ENABLE_PYTHON_BINDINGS)
|
||||
target_link_libraries(r2cutter PRIVATE Shiboken2::libshiboken PySide2::pyside2)
|
||||
target_link_libraries(iaito PRIVATE ${PYTHON_LIBRARIES})
|
||||
if(IAITO_ENABLE_PYTHON_BINDINGS)
|
||||
target_link_libraries(iaito PRIVATE Shiboken2::libshiboken PySide2::pyside2)
|
||||
|
||||
get_target_property(RAW_BINDINGS_INCLUDE_DIRS r2cutter INCLUDE_DIRECTORIES)
|
||||
get_target_property(RAW_BINDINGS_INCLUDE_DIRS iaito INCLUDE_DIRECTORIES)
|
||||
set(BINDINGS_INCLUDE_DIRS "")
|
||||
foreach(_dir ${RAW_BINDINGS_INCLUDE_DIRS})
|
||||
string(REGEX REPLACE "\\$<BUILD_INTERFACE:(.*)>" "\\1" _dir ${_dir})
|
||||
@@ -263,48 +263,51 @@ if(CUTTER_ENABLE_PYTHON)
|
||||
endif()
|
||||
|
||||
if(TARGET KF5::SyntaxHighlighting)
|
||||
target_link_libraries(r2cutter PRIVATE KF5::SyntaxHighlighting)
|
||||
target_compile_definitions(r2cutter PRIVATE CUTTER_ENABLE_KSYNTAXHIGHLIGHTING)
|
||||
target_link_libraries(iaito PRIVATE KF5::SyntaxHighlighting)
|
||||
target_compile_definitions(iaito PRIVATE IAITO_ENABLE_KSYNTAXHIGHLIGHTING)
|
||||
endif()
|
||||
|
||||
if (CUTTER_APPIMAGE_BUILD)
|
||||
target_compile_definitions(r2cutter PRIVATE APPIMAGE)
|
||||
if (IAITO_APPIMAGE_BUILD)
|
||||
target_compile_definitions(iaito PRIVATE APPIMAGE)
|
||||
endif()
|
||||
|
||||
if (CUTTER_PACKAGE_R2DEC)
|
||||
target_compile_definitions(r2cutter PRIVATE CUTTER_APPVEYOR_R2DEC)
|
||||
if (IAITO_PACKAGE_R2DEC)
|
||||
target_compile_definitions(iaito PRIVATE IAITO_APPVEYOR_R2DEC)
|
||||
endif()
|
||||
|
||||
include(Translations)
|
||||
|
||||
# Install files
|
||||
install(TARGETS r2cutter
|
||||
EXPORT r2cutterTargets
|
||||
install(TARGETS iaito
|
||||
EXPORT iaitoTargets
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||
BUNDLE DESTINATION "." # needs to be tested
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT Devel
|
||||
)
|
||||
install(EXPORT r2cutterTargets
|
||||
NAMESPACE r2cutter::
|
||||
DESTINATION "${ConfigPackageLocation}"
|
||||
install(EXPORT iaitoTargets
|
||||
NAMESPACE iaito::
|
||||
DESTINATION ${ConfigPackageLocation}
|
||||
COMPONENT Devel)
|
||||
install(FILES
|
||||
cmake/r2cutterConfig.cmake
|
||||
cmake/iaitoConfig.cmake
|
||||
DESTINATION ${ConfigPackageLocation}
|
||||
COMPONENT Devel
|
||||
)
|
||||
foreach(_file ${HEADER_FILES})
|
||||
# Can't use target PUBLIC_HEADER option for installing due to multiple directories
|
||||
get_filename_component(_header_dir "${_file}" DIRECTORY)
|
||||
install (FILES "${_file}" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/r2cutter/${_header_dir}" COMPONENT Devel)
|
||||
install (FILES "${_file}" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/iaito/${_header_dir}" COMPONENT Devel)
|
||||
endforeach()
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
install (FILES "img/r2cutter.svg"
|
||||
install (FILES "img/iaito-o.svg"
|
||||
DESTINATION "share/icons/hicolor/scalable/apps/")
|
||||
install(FILES "org.radare.r2cutter.desktop"
|
||||
DESTINATION "share/applications"
|
||||
COMPONENT Devel)
|
||||
install(FILES "org.radare.iaito.desktop"
|
||||
DESTINATION "share/applications")
|
||||
install(FILES "org.radare.iaito.appdata.xml"
|
||||
DESTINATION "share/metainfo")
|
||||
install(FILES "iaito.1"
|
||||
DESTINATION "share/man/man1")
|
||||
endif()
|
||||
|
||||
include(Packaging)
|
||||
@@ -1,13 +0,0 @@
|
||||
|
||||
#ifndef CUTTER_CONFIG_H
|
||||
#define CUTTER_CONFIG_H
|
||||
|
||||
#define CUTTER_VERSION_MAJOR $$CUTTER_VERSION_MAJOR
|
||||
#define CUTTER_VERSION_MINOR $$CUTTER_VERSION_MINOR
|
||||
#define CUTTER_VERSION_PATCH $$CUTTER_VERSION_PATCH
|
||||
|
||||
#define CUTTER_VERSION_FULL \"$${CUTTER_VERSION_MAJOR}.$${CUTTER_VERSION_MINOR}.$${CUTTER_VERSION_PATCH}\"
|
||||
|
||||
#define CUTTER_EXTRA_PLUGIN_DIRS \"$${CUTTER_EXTRA_PLUGIN_DIRS}\"
|
||||
|
||||
#endif
|
||||
@@ -1,11 +0,0 @@
|
||||
|
||||
#ifndef CUTTER_CONFIG_H
|
||||
#define CUTTER_CONFIG_H
|
||||
|
||||
#define CUTTER_VERSION_MAJOR @CUTTER_VERSION_MAJOR@
|
||||
#define CUTTER_VERSION_MINOR @CUTTER_VERSION_MINOR@
|
||||
#define CUTTER_VERSION_PATCH @CUTTER_VERSION_PATCH@
|
||||
|
||||
#define CUTTER_VERSION_FULL "@CUTTER_VERSION_MAJOR@.@CUTTER_VERSION_MINOR@.@CUTTER_VERSION_PATCH@"
|
||||
|
||||
#endif
|
||||
File renamed without changes.
+109
-92
@@ -1,98 +1,105 @@
|
||||
TEMPLATE = app
|
||||
|
||||
TARGET = r2cutter
|
||||
TARGET = iaito
|
||||
|
||||
CUTTER_VERSION_MAJOR = 0
|
||||
CUTTER_VERSION_MINOR = 1
|
||||
CUTTER_VERSION_PATCH = 0
|
||||
IAITO_VERSION_MAJOR = 5
|
||||
IAITO_VERSION_MINOR = 2
|
||||
IAITO_VERSION_PATCH = 2
|
||||
|
||||
VERSION = $${CUTTER_VERSION_MAJOR}.$${CUTTER_VERSION_MINOR}.$${CUTTER_VERSION_PATCH}
|
||||
CONFIG += sdk_no_version_check
|
||||
|
||||
VERSION = $${IAITO_VERSION_MAJOR}.$${IAITO_VERSION_MINOR}.$${IAITO_VERSION_PATCH}
|
||||
|
||||
# Required QT version
|
||||
lessThan(QT_MAJOR_VERSION, 5): error("requires Qt 5")
|
||||
# Doesnt build for Qt6 yet... but will do soon
|
||||
|
||||
TRANSLATIONS += translations/ar/cutter_ar.ts \
|
||||
translations/ca/cutter_ca.ts \
|
||||
translations/de/cutter_de.ts \
|
||||
translations/es-ES/cutter_es.ts \
|
||||
translations/fa/cutter_fa.ts \
|
||||
translations/fr/cutter_fr.ts \
|
||||
translations/he/cutter_he.ts \
|
||||
translations/hi/cutter_hi.ts \
|
||||
translations/it/cutter_it.ts \
|
||||
translations/ja/cutter_ja.ts \
|
||||
translations/nl/cutter_nl.ts \
|
||||
translations/pt-PT/cutter_pt.ts \
|
||||
translations/ro/cutter_ro.ts \
|
||||
translations/ru/cutter_ru.ts \
|
||||
translations/tr/cutter_tr.ts \
|
||||
translations/zh-CN/cutter_zh.ts
|
||||
TRANSLATIONS += translations/ar/iaito_ar.ts \
|
||||
translations/ca/iaito_ca.ts \
|
||||
translations/de/iaito_de.ts \
|
||||
translations/es-ES/iaito_es.ts \
|
||||
translations/eo/iaito_eo.ts \
|
||||
translations/eu/iaito_eu.ts \
|
||||
translations/fa/iaito_fa.ts \
|
||||
translations/gl/iaito_gl.ts \
|
||||
translations/fr/iaito_fr.ts \
|
||||
translations/he/iaito_he.ts \
|
||||
translations/hi/iaito_hi.ts \
|
||||
translations/it/iaito_it.ts \
|
||||
translations/ja/iaito_ja.ts \
|
||||
translations/nl/iaito_nl.ts \
|
||||
translations/pt-PT/iaito_pt.ts \
|
||||
translations/ro/iaito_ro.ts \
|
||||
translations/ru/iaito_ru.ts \
|
||||
translations/tr/iaito_tr.ts \
|
||||
translations/tp/iaito_tp.ts \
|
||||
translations/zh-CN/iaito_zh.ts
|
||||
|
||||
# translations/ko/cutter_ko.ts problems with fonts
|
||||
# translations/pt-BR/cutter_pt.ts #2321 handling multiple versions of a language
|
||||
# translations/ko/iaito_ko.ts problems with fonts
|
||||
# translations/pt-BR/iaito_pt.ts #2321 handling multiple versions of a language
|
||||
|
||||
# Icon for OS X
|
||||
ICON = img/r2cutter.icns
|
||||
ICON = img/iaito-o.icns
|
||||
|
||||
# Icon/resources for Windows
|
||||
win32: RC_ICONS = img/r2cutter.ico
|
||||
win32: RC_ICONS = img/iaito-o.ico
|
||||
|
||||
QT += core gui widgets svg network
|
||||
QT_CONFIG -= no-pkg-config
|
||||
CONFIG += c++11
|
||||
|
||||
!defined(CUTTER_ENABLE_CRASH_REPORTS, var) CUTTER_ENABLE_CRASH_REPORTS=false
|
||||
equals(CUTTER_ENABLE_CRASH_REPORTS, true) CONFIG += CUTTER_ENABLE_CRASH_REPORTS
|
||||
|
||||
!defined(CUTTER_ENABLE_PYTHON, var) CUTTER_ENABLE_PYTHON=false
|
||||
equals(CUTTER_ENABLE_PYTHON, true) CONFIG += CUTTER_ENABLE_PYTHON
|
||||
!defined(IAITO_ENABLE_CRASH_REPORTS, var) IAITO_ENABLE_CRASH_REPORTS=false
|
||||
equals(IAITO_ENABLE_CRASH_REPORTS, true) CONFIG += IAITO_ENABLE_CRASH_REPORTS
|
||||
|
||||
!defined(CUTTER_ENABLE_PYTHON_BINDINGS, var) CUTTER_ENABLE_PYTHON_BINDINGS=false
|
||||
equals(CUTTER_ENABLE_PYTHON, true) {
|
||||
equals(CUTTER_ENABLE_PYTHON_BINDINGS, true) {
|
||||
CONFIG += CUTTER_ENABLE_PYTHON_BINDINGS
|
||||
!defined(IAITO_ENABLE_PYTHON, var) IAITO_ENABLE_PYTHON=false
|
||||
equals(IAITO_ENABLE_PYTHON, true) CONFIG += IAITO_ENABLE_PYTHON
|
||||
|
||||
!defined(IAITO_ENABLE_PYTHON_BINDINGS, var) IAITO_ENABLE_PYTHON_BINDINGS=false
|
||||
equals(IAITO_ENABLE_PYTHON, true) {
|
||||
equals(IAITO_ENABLE_PYTHON_BINDINGS, true) {
|
||||
CONFIG += IAITO_ENABLE_PYTHON_BINDINGS
|
||||
}
|
||||
}
|
||||
|
||||
!defined(CUTTER_BUNDLE_R2_APPBUNDLE, var) CUTTER_BUNDLE_R2_APPBUNDLE=false
|
||||
equals(CUTTER_BUNDLE_R2_APPBUNDLE, true) CONFIG += CUTTER_BUNDLE_R2_APPBUNDLE
|
||||
!defined(IAITO_BUNDLE_R2_APPBUNDLE, var) IAITO_BUNDLE_R2_APPBUNDLE=false
|
||||
equals(IAITO_BUNDLE_R2_APPBUNDLE, true) CONFIG += IAITO_BUNDLE_R2_APPBUNDLE
|
||||
|
||||
!defined(CUTTER_APPVEYOR_R2DEC, var) CUTTER_APPVEYOR_R2DEC=false
|
||||
equals(CUTTER_APPVEYOR_R2DEC, true) CONFIG += CUTTER_APPVEYOR_R2DEC
|
||||
!defined(IAITO_APPVEYOR_R2DEC, var) IAITO_APPVEYOR_R2DEC=false
|
||||
equals(IAITO_APPVEYOR_R2DEC, true) CONFIG += IAITO_APPVEYOR_R2DEC
|
||||
|
||||
!defined(CUTTER_R2GHIDRA_STATIC, var) CUTTER_R2GHIDRA_STATIC=false
|
||||
equals(CUTTER_R2GHIDRA_STATIC, true) CONFIG += CUTTER_R2GHIDRA_STATIC
|
||||
!defined(IAITO_R2GHIDRA_STATIC, var) IAITO_R2GHIDRA_STATIC=false
|
||||
equals(IAITO_R2GHIDRA_STATIC, true) CONFIG += IAITO_R2GHIDRA_STATIC
|
||||
|
||||
DEFINES += CUTTER_SOURCE_BUILD
|
||||
DEFINES += IAITO_SOURCE_BUILD
|
||||
|
||||
CUTTER_ENABLE_CRASH_REPORTS {
|
||||
IAITO_ENABLE_CRASH_REPORTS {
|
||||
message("Crash report support enabled.")
|
||||
DEFINES += CUTTER_ENABLE_CRASH_REPORTS
|
||||
DEFINES += IAITO_ENABLE_CRASH_REPORTS
|
||||
} else {
|
||||
message("Crash report support disabled.")
|
||||
}
|
||||
|
||||
CUTTER_ENABLE_PYTHON {
|
||||
IAITO_ENABLE_PYTHON {
|
||||
message("Python enabled.")
|
||||
DEFINES += CUTTER_ENABLE_PYTHON
|
||||
DEFINES += IAITO_ENABLE_PYTHON
|
||||
} else {
|
||||
message("Python disabled.")
|
||||
}
|
||||
|
||||
CUTTER_ENABLE_PYTHON_BINDINGS {
|
||||
IAITO_ENABLE_PYTHON_BINDINGS {
|
||||
message("Python Bindings enabled.")
|
||||
DEFINES += CUTTER_ENABLE_PYTHON_BINDINGS
|
||||
DEFINES += IAITO_ENABLE_PYTHON_BINDINGS
|
||||
} else {
|
||||
message("Python Bindings disabled. (requires CUTTER_ENABLE_PYTHON=true)")
|
||||
message("Python Bindings disabled. (requires IAITO_ENABLE_PYTHON=true)")
|
||||
}
|
||||
|
||||
win32:defined(CUTTER_DEPS_DIR, var) {
|
||||
!defined(SHIBOKEN_EXECUTABLE, var) SHIBOKEN_EXECUTABLE="$${CUTTER_DEPS_DIR}/pyside/bin/shiboken2.exe"
|
||||
!defined(SHIBOKEN_INCLUDEDIR, var) SHIBOKEN_INCLUDEDIR="$${CUTTER_DEPS_DIR}/pyside/include/shiboken2"
|
||||
!defined(SHIBOKEN_LIBRARY, var) SHIBOKEN_LIBRARY="$${CUTTER_DEPS_DIR}/pyside/lib/shiboken2.abi3.lib"
|
||||
!defined(PYSIDE_INCLUDEDIR, var) PYSIDE_INCLUDEDIR="$${CUTTER_DEPS_DIR}/pyside/include/PySide2"
|
||||
!defined(PYSIDE_LIBRARY, var) PYSIDE_LIBRARY="$${CUTTER_DEPS_DIR}/pyside/lib/pyside2.abi3.lib"
|
||||
!defined(PYSIDE_TYPESYSTEMS, var) PYSIDE_TYPESYSTEMS="$${CUTTER_DEPS_DIR}/pyside/share/PySide2/typesystems"
|
||||
win32:defined(IAITO_DEPS_DIR, var) {
|
||||
!defined(SHIBOKEN_EXECUTABLE, var) SHIBOKEN_EXECUTABLE="$${IAITO_DEPS_DIR}/pyside/bin/shiboken2.exe"
|
||||
!defined(SHIBOKEN_INCLUDEDIR, var) SHIBOKEN_INCLUDEDIR="$${IAITO_DEPS_DIR}/pyside/include/shiboken2"
|
||||
!defined(SHIBOKEN_LIBRARY, var) SHIBOKEN_LIBRARY="$${IAITO_DEPS_DIR}/pyside/lib/shiboken2.abi3.lib"
|
||||
!defined(PYSIDE_INCLUDEDIR, var) PYSIDE_INCLUDEDIR="$${IAITO_DEPS_DIR}/pyside/include/PySide2"
|
||||
!defined(PYSIDE_LIBRARY, var) PYSIDE_LIBRARY="$${IAITO_DEPS_DIR}/pyside/lib/pyside2.abi3.lib"
|
||||
!defined(PYSIDE_TYPESYSTEMS, var) PYSIDE_TYPESYSTEMS="$${IAITO_DEPS_DIR}/pyside/share/PySide2/typesystems"
|
||||
}
|
||||
|
||||
INCLUDEPATH *= . core widgets dialogs common plugins menus
|
||||
@@ -107,9 +114,9 @@ win32 {
|
||||
}
|
||||
|
||||
macx {
|
||||
QMAKE_CXXFLAGS = -mmacosx-version-min=10.7 -std=gnu0x -stdlib=libc++
|
||||
QMAKE_CXXFLAGS = -mmacosx-version-min=10.7 -std=c++17 -stdlib=libc++
|
||||
QMAKE_TARGET_BUNDLE_PREFIX = org.radare
|
||||
QMAKE_BUNDLE = r2cutter
|
||||
QMAKE_BUNDLE = iaito
|
||||
QMAKE_INFO_PLIST = macos/Info.plist
|
||||
}
|
||||
|
||||
@@ -117,6 +124,10 @@ unix:exists(/usr/local/include/libr)|bsd:exists(/usr/local/include/libr) {
|
||||
INCLUDEPATH += /usr/local/include/libr
|
||||
INCLUDEPATH += /usr/local/include/libr/sdb
|
||||
}
|
||||
unix:exists(/usr/include/libr) {
|
||||
INCLUDEPATH += /usr/include/libr
|
||||
INCLUDEPATH += /usr/include/libr/sdb
|
||||
}
|
||||
unix {
|
||||
QMAKE_LFLAGS += -rdynamic # Export dynamic symbols for plugins
|
||||
}
|
||||
@@ -128,7 +139,7 @@ include(lib_radare2.pri)
|
||||
CONFIG += link_pkgconfig
|
||||
}
|
||||
|
||||
CUTTER_ENABLE_PYTHON {
|
||||
IAITO_ENABLE_PYTHON {
|
||||
win32 {
|
||||
PYTHON_EXECUTABLE = $$system("where python", lines)
|
||||
PYTHON_EXECUTABLE = $$first(PYTHON_EXECUTABLE)
|
||||
@@ -151,7 +162,7 @@ CUTTER_ENABLE_PYTHON {
|
||||
}
|
||||
}
|
||||
|
||||
CUTTER_ENABLE_PYTHON_BINDINGS {
|
||||
IAITO_ENABLE_PYTHON_BINDINGS {
|
||||
isEmpty(SHIBOKEN_EXECUTABLE):!packagesExist(shiboken2) {
|
||||
error("ERROR: Shiboken2, which is required to build the Python Bindings, could not be found. Make sure it is available to pkg-config.")
|
||||
}
|
||||
@@ -165,7 +176,7 @@ CUTTER_ENABLE_PYTHON {
|
||||
}
|
||||
BINDINGS_SRC_DIR = "$${PWD}/bindings"
|
||||
BINDINGS_BUILD_DIR = "$${OUT_PWD}/bindings"
|
||||
BINDINGS_SOURCE_DIR = "$${BINDINGS_BUILD_DIR}/CutterBindings"
|
||||
BINDINGS_SOURCE_DIR = "$${BINDINGS_BUILD_DIR}/IaitoBindings"
|
||||
BINDINGS_SOURCE = $$system("$${BINDINGS_SRC_LIST_CMD} qmake \"$${BINDINGS_BUILD_DIR}\"")
|
||||
BINDINGS_INCLUDE_DIRS = "$$[QT_INSTALL_HEADERS]" \
|
||||
"$$[QT_INSTALL_HEADERS]/QtCore" \
|
||||
@@ -230,7 +241,7 @@ CUTTER_ENABLE_PYTHON {
|
||||
# dummy rules to specify dependency between generated binding files and bindings_target
|
||||
bindings_h.input = BINDINGS_DUMMY_INPUT_LIST
|
||||
bindings_h.depends = bindings_target
|
||||
bindings_h.output = cutterbindings_python.h
|
||||
bindings_h.output = iaitobindings_python.h
|
||||
bindings_h.commands = "echo placeholder command ${QMAKE_FILE_OUT}"
|
||||
bindings_h.variable_out = HEADERS
|
||||
QMAKE_EXTRA_COMPILERS += bindings_h
|
||||
@@ -254,7 +265,7 @@ CUTTER_ENABLE_PYTHON {
|
||||
}
|
||||
}
|
||||
|
||||
CUTTER_ENABLE_CRASH_REPORTS {
|
||||
IAITO_ENABLE_CRASH_REPORTS {
|
||||
QMAKE_CXXFLAGS += -g
|
||||
defined(BREAKPAD_FRAMEWORK_DIR, var)|defined(BREAKPAD_SOURCE_DIR, var) {
|
||||
defined(BREAKPAD_FRAMEWORK_DIR, var) {
|
||||
@@ -278,19 +289,19 @@ QMAKE_CXXFLAGS += -g
|
||||
}
|
||||
}
|
||||
|
||||
macx:CUTTER_BUNDLE_R2_APPBUNDLE {
|
||||
macx:IAITO_BUNDLE_R2_APPBUNDLE {
|
||||
message("Using r2 rom AppBundle")
|
||||
DEFINES += MACOS_R2_BUNDLED
|
||||
}
|
||||
|
||||
CUTTER_APPVEYOR_R2DEC {
|
||||
IAITO_APPVEYOR_R2DEC {
|
||||
message("Appveyor r2dec")
|
||||
DEFINES += CUTTER_APPVEYOR_R2DEC
|
||||
DEFINES += IAITO_APPVEYOR_R2DEC
|
||||
}
|
||||
|
||||
CUTTER_R2GHIDRA_STATIC {
|
||||
IAITO_R2GHIDRA_STATIC {
|
||||
message("Building with static r2ghidra support")
|
||||
DEFINES += CUTTER_R2GHIDRA_STATIC
|
||||
DEFINES += IAITO_R2GHIDRA_STATIC
|
||||
SOURCES += $$R2GHIDRA_SOURCE/cutter-plugin/R2GhidraDecompiler.cpp
|
||||
HEADERS += $$R2GHIDRA_SOURCE/cutter-plugin/R2GhidraDecompiler.h
|
||||
INCLUDEPATH += $$R2GHIDRA_SOURCE/cutter-plugin
|
||||
@@ -298,11 +309,11 @@ CUTTER_R2GHIDRA_STATIC {
|
||||
QMAKE_LFLAGS += /delayload:core_ghidra.dll
|
||||
}
|
||||
|
||||
QMAKE_SUBSTITUTES += CutterConfig.h.in
|
||||
QMAKE_SUBSTITUTES += IaitoConfig.h.in
|
||||
|
||||
SOURCES += \
|
||||
Main.cpp \
|
||||
core/Cutter.cpp \
|
||||
core/Iaito.cpp \
|
||||
dialogs/EditStringDialog.cpp \
|
||||
dialogs/WriteCommandsDialogs.cpp \
|
||||
widgets/DisassemblerGraphView.cpp \
|
||||
@@ -363,11 +374,11 @@ SOURCES += \
|
||||
widgets/TypesWidget.cpp \
|
||||
widgets/HeadersWidget.cpp \
|
||||
widgets/SearchWidget.cpp \
|
||||
CutterApplication.cpp \
|
||||
IaitoApplication.cpp \
|
||||
common/PythonAPI.cpp \
|
||||
dialogs/R2PluginsDialog.cpp \
|
||||
widgets/CutterDockWidget.cpp \
|
||||
widgets/CutterTreeWidget.cpp \
|
||||
widgets/IaitoDockWidget.cpp \
|
||||
widgets/IaitoTreeWidget.cpp \
|
||||
widgets/GraphWidget.cpp \
|
||||
widgets/OverviewWidget.cpp \
|
||||
common/JsonTreeItem.cpp \
|
||||
@@ -397,11 +408,11 @@ SOURCES += \
|
||||
dialogs/SetToDataDialog.cpp \
|
||||
dialogs/EditVariablesDialog.cpp \
|
||||
dialogs/EditFunctionDialog.cpp \
|
||||
widgets/CutterTreeView.cpp \
|
||||
widgets/IaitoTreeView.cpp \
|
||||
widgets/ComboQuickFilterView.cpp \
|
||||
dialogs/HexdumpRangeDialog.cpp \
|
||||
common/QtResImporter.cpp \
|
||||
common/CutterSeekable.cpp \
|
||||
common/IaitoSeekable.cpp \
|
||||
common/RefreshDeferrer.cpp \
|
||||
dialogs/WelcomeDialog.cpp \
|
||||
common/RunScriptTask.cpp \
|
||||
@@ -427,6 +438,9 @@ SOURCES += \
|
||||
widgets/HexWidget.cpp \
|
||||
common/SelectionHighlight.cpp \
|
||||
common/Decompiler.cpp \
|
||||
common/R2GhidraCmdDecompiler.cpp \
|
||||
common/R2pdcCmdDecompiler.cpp \
|
||||
common/R2retdecDecompiler.cpp \
|
||||
menus/AddressableItemContextMenu.cpp \
|
||||
common/AddressableItemModel.cpp \
|
||||
widgets/ListDockWidget.cpp \
|
||||
@@ -435,10 +449,10 @@ SOURCES += \
|
||||
common/IOModesController.cpp \
|
||||
common/SettingsUpgrade.cpp \
|
||||
dialogs/LayoutManager.cpp \
|
||||
common/CutterLayout.cpp \
|
||||
common/IaitoLayout.cpp \
|
||||
widgets/GraphHorizontalAdapter.cpp \
|
||||
common/ResourcePaths.cpp \
|
||||
widgets/CutterGraphView.cpp \
|
||||
widgets/IaitoGraphView.cpp \
|
||||
widgets/SimpleTextGraphView.cpp \
|
||||
widgets/R2GraphWidget.cpp \
|
||||
widgets/CallGraph.cpp \
|
||||
@@ -450,9 +464,9 @@ GRAPHVIZ_SOURCES = \
|
||||
widgets/GraphvizLayout.cpp
|
||||
|
||||
HEADERS += \
|
||||
core/Cutter.h \
|
||||
core/CutterCommon.h \
|
||||
core/CutterDescriptions.h \
|
||||
core/Iaito.h \
|
||||
core/IaitoCommon.h \
|
||||
core/IaitoDescriptions.h \
|
||||
dialogs/EditStringDialog.h \
|
||||
dialogs/WriteCommandsDialogs.h \
|
||||
widgets/DisassemblerGraphView.h \
|
||||
@@ -510,15 +524,15 @@ HEADERS += \
|
||||
widgets/QuickFilterView.h \
|
||||
widgets/ClassesWidget.h \
|
||||
widgets/ResourcesWidget.h \
|
||||
CutterApplication.h \
|
||||
IaitoApplication.h \
|
||||
widgets/VTablesWidget.h \
|
||||
widgets/TypesWidget.h \
|
||||
widgets/HeadersWidget.h \
|
||||
widgets/SearchWidget.h \
|
||||
common/PythonAPI.h \
|
||||
dialogs/R2PluginsDialog.h \
|
||||
widgets/CutterDockWidget.h \
|
||||
widgets/CutterTreeWidget.h \
|
||||
widgets/IaitoDockWidget.h \
|
||||
widgets/IaitoTreeWidget.h \
|
||||
widgets/GraphWidget.h \
|
||||
widgets/OverviewWidget.h \
|
||||
common/JsonTreeItem.h \
|
||||
@@ -537,7 +551,7 @@ HEADERS += \
|
||||
common/FunctionsTask.h \
|
||||
common/CommandTask.h \
|
||||
common/ProgressIndicator.h \
|
||||
plugins/CutterPlugin.h \
|
||||
plugins/IaitoPlugin.h \
|
||||
common/R2Task.h \
|
||||
dialogs/R2TaskDialog.h \
|
||||
widgets/DebugActions.h \
|
||||
@@ -552,11 +566,11 @@ HEADERS += \
|
||||
common/InitialOptions.h \
|
||||
dialogs/EditVariablesDialog.h \
|
||||
dialogs/EditFunctionDialog.h \
|
||||
widgets/CutterTreeView.h \
|
||||
widgets/IaitoTreeView.h \
|
||||
widgets/ComboQuickFilterView.h \
|
||||
dialogs/HexdumpRangeDialog.h \
|
||||
common/QtResImporter.h \
|
||||
common/CutterSeekable.h \
|
||||
common/IaitoSeekable.h \
|
||||
common/RefreshDeferrer.h \
|
||||
dialogs/WelcomeDialog.h \
|
||||
common/RunScriptTask.h \
|
||||
@@ -584,6 +598,9 @@ HEADERS += \
|
||||
widgets/HexWidget.h \
|
||||
common/SelectionHighlight.h \
|
||||
common/Decompiler.h \
|
||||
common/R2GhidraCmdDecompiler.h \
|
||||
common/R2pdcCmdDecompiler.h \
|
||||
common/R2retdecDecompiler.h \
|
||||
menus/AddressableItemContextMenu.h \
|
||||
common/AddressableItemModel.h \
|
||||
widgets/ListDockWidget.h \
|
||||
@@ -593,12 +610,12 @@ HEADERS += \
|
||||
common/IOModesController.h \
|
||||
common/SettingsUpgrade.h \
|
||||
dialogs/LayoutManager.h \
|
||||
common/CutterLayout.h \
|
||||
common/IaitoLayout.h \
|
||||
common/BinaryTrees.h \
|
||||
common/LinkedListPool.h \
|
||||
widgets/GraphHorizontalAdapter.h \
|
||||
common/ResourcePaths.h \
|
||||
widgets/CutterGraphView.h \
|
||||
widgets/IaitoGraphView.h \
|
||||
widgets/SimpleTextGraphView.h \
|
||||
widgets/R2GraphWidget.h \
|
||||
widgets/CallGraph.h \
|
||||
@@ -660,7 +677,7 @@ FORMS += \
|
||||
widgets/RegisterRefsWidget.ui \
|
||||
dialogs/SetToDataDialog.ui \
|
||||
dialogs/EditVariablesDialog.ui \
|
||||
widgets/CutterTreeView.ui \
|
||||
widgets/IaitoTreeView.ui \
|
||||
widgets/ComboQuickFilterView.ui \
|
||||
dialogs/HexdumpRangeDialog.ui \
|
||||
dialogs/WelcomeDialog.ui \
|
||||
@@ -683,7 +700,7 @@ RESOURCES += \
|
||||
themes/lightstyle/light.qrc
|
||||
|
||||
|
||||
DISTFILES += Cutter.astylerc
|
||||
DISTFILES += Iaito.astylerc
|
||||
|
||||
# 'make install' for AppImage
|
||||
unix {
|
||||
@@ -691,18 +708,18 @@ unix {
|
||||
PREFIX = /usr/local
|
||||
}
|
||||
|
||||
icon_file = img/r2cutter.svg
|
||||
icon_file = img/iaito-o.svg
|
||||
|
||||
share_pixmaps.path = $$PREFIX/share/pixmaps
|
||||
share_pixmaps.files = $$icon_file
|
||||
|
||||
|
||||
desktop_file = org.radare.r2cutter.desktop
|
||||
desktop_file = org.radare.iaito.desktop
|
||||
|
||||
share_applications.path = $$PREFIX/share/applications
|
||||
share_applications.files = $$desktop_file
|
||||
|
||||
appstream_file = org.radare.r2cutter.appdata.xml
|
||||
appstream_file = org.radare.iaito.appdata.xml
|
||||
|
||||
# Used by ???
|
||||
share_appdata.path = $$PREFIX/share/appdata
|
||||
@@ -1,8 +1,11 @@
|
||||
#include "common/PythonManager.h"
|
||||
#include "common/CrashHandler.h"
|
||||
#include "CutterApplication.h"
|
||||
#include "IaitoApplication.h"
|
||||
#include "plugins/PluginManager.h"
|
||||
#include "CutterConfig.h"
|
||||
#include "R2GhidraCmdDecompiler.h"
|
||||
#include "R2pdcCmdDecompiler.h"
|
||||
#include "R2retdecDecompiler.h"
|
||||
#include "IaitoConfig.h"
|
||||
#include "common/Decompiler.h"
|
||||
#include "common/ResourcePaths.h"
|
||||
|
||||
@@ -26,22 +29,22 @@
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#if CUTTER_R2GHIDRA_STATIC
|
||||
#if IAITO_R2GHIDRA_STATIC
|
||||
#include <R2GhidraDecompiler.h>
|
||||
#endif
|
||||
|
||||
CutterApplication::CutterApplication(int &argc, char **argv) : QApplication(argc, argv)
|
||||
IaitoApplication::IaitoApplication(int &argc, char **argv) : QApplication(argc, argv)
|
||||
{
|
||||
// Setup application information
|
||||
setApplicationVersion(CUTTER_VERSION_FULL);
|
||||
setWindowIcon(QIcon(":/img/r2cutter.svg"));
|
||||
setApplicationVersion(IAITO_VERSION_FULL);
|
||||
setWindowIcon(QIcon(":/img/iaito-o.svg"));
|
||||
setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||
setLayoutDirection(Qt::LeftToRight);
|
||||
|
||||
// WARN!!! Put initialization code below this line. Code above this line is mandatory to be run First
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
// Hack to force Cutter load internet connection related DLL's
|
||||
// Hack to force Iaito load internet connection related DLL's
|
||||
QSslSocket s;
|
||||
s.sslConfiguration();
|
||||
#endif // Q_OS_WIN
|
||||
@@ -52,12 +55,15 @@ CutterApplication::CutterApplication(int &argc, char **argv) : QApplication(argc
|
||||
}
|
||||
|
||||
// Load fonts
|
||||
int ret = QFontDatabase::addApplicationFont(":/fonts/Anonymous Pro.ttf");
|
||||
int ret = QFontDatabase::addApplicationFont(":/fonts/AgaveRegular.ttf");
|
||||
if (ret == -1) {
|
||||
qWarning() << "Cannot load Agave Regular font.";
|
||||
}
|
||||
ret = QFontDatabase::addApplicationFont(":/fonts/AnonymousPro.ttf");
|
||||
if (ret == -1) {
|
||||
qWarning() << "Cannot load Anonymous Pro font.";
|
||||
}
|
||||
|
||||
ret = QFontDatabase::addApplicationFont(":/fonts/Inconsolata-Regular.ttf");
|
||||
ret = QFontDatabase::addApplicationFont(":/fonts/InconsolataRegular.ttf");
|
||||
if (ret == -1) {
|
||||
qWarning() << "Cannot load Incosolata-Regular font.";
|
||||
}
|
||||
@@ -77,20 +83,20 @@ CutterApplication::CutterApplication(int &argc, char **argv) : QApplication(argc
|
||||
// Check r2 version
|
||||
QString r2version = r_core_version();
|
||||
QString localVersion = "" R2_GITTAP;
|
||||
if (r2version != localVersion) {
|
||||
if (localVersion != "" && r2version != "" && r2version != localVersion) {
|
||||
QMessageBox msg;
|
||||
msg.setIcon(QMessageBox::Critical);
|
||||
msg.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
||||
msg.setWindowTitle(QObject::tr("Version mismatch!"));
|
||||
msg.setText(QString(
|
||||
QObject::tr("The version used to compile Cutter (%1) does not match the binary version of radare2 (%2). This could result in unexpected behaviour. Are you sure you want to continue?")).arg(
|
||||
QObject::tr("The version used to compile Iaito (%1) does not match the binary version of radare2 (%2). This could result in unexpected behaviour. Are you sure you want to continue?")).arg(
|
||||
localVersion, r2version));
|
||||
if (msg.exec() == QMessageBox::No) {
|
||||
std::exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CUTTER_ENABLE_PYTHON
|
||||
#ifdef IAITO_ENABLE_PYTHON
|
||||
// Init python
|
||||
if (!clOptions.pythonHome.isEmpty()) {
|
||||
Python()->setPythonHome(clOptions.pythonHome);
|
||||
@@ -106,19 +112,28 @@ CutterApplication::CutterApplication(int &argc, char **argv) : QApplication(argc
|
||||
Core()->initialize(clOptions.enableR2Plugins);
|
||||
Core()->setSettings();
|
||||
Config()->loadInitial();
|
||||
Core()->loadCutterRC();
|
||||
Core()->loadIaitoRC();
|
||||
|
||||
Config()->setOutputRedirectionEnabled(clOptions.outputRedirectionEnabled);
|
||||
|
||||
if (R2pdcCmdDecompiler::isAvailable()) {
|
||||
Core()->registerDecompiler(new R2pdcCmdDecompiler(Core()));
|
||||
}
|
||||
if (R2retdecDecompiler::isAvailable()) {
|
||||
Core()->registerDecompiler(new R2retdecDecompiler(Core()));
|
||||
}
|
||||
if (R2DecDecompiler::isAvailable()) {
|
||||
Core()->registerDecompiler(new R2DecDecompiler(Core()));
|
||||
}
|
||||
if (R2GhidraCmdDecompiler::isAvailable()) {
|
||||
Core()->registerDecompiler(new R2GhidraCmdDecompiler(Core()));
|
||||
}
|
||||
|
||||
#if CUTTER_R2GHIDRA_STATIC
|
||||
#if IAITO_R2GHIDRA_STATIC
|
||||
Core()->registerDecompiler(new R2GhidraDecompiler(Core()));
|
||||
#endif
|
||||
|
||||
Plugins()->loadPlugins(clOptions.enableCutterPlugins);
|
||||
Plugins()->loadPlugins(clOptions.enableIaitoPlugins);
|
||||
|
||||
for (auto &plugin : Plugins()->getPlugins()) {
|
||||
plugin->registerDecompilers();
|
||||
@@ -129,11 +144,11 @@ CutterApplication::CutterApplication(int &argc, char **argv) : QApplication(argc
|
||||
|
||||
// set up context menu shortcut display fix
|
||||
#if QT_VERSION_CHECK(5, 10, 0) < QT_VERSION
|
||||
setStyle(new CutterProxyStyle());
|
||||
setStyle(new IaitoProxyStyle());
|
||||
#endif // QT_VERSION_CHECK(5, 10, 0) < QT_VERSION
|
||||
|
||||
if (clOptions.args.empty()) {
|
||||
// check if this is the first execution of Cutter in this computer
|
||||
// check if this is the first execution of Iaito in this computer
|
||||
// Note: the execution after the preferences been reset, will be considered as first-execution
|
||||
if (Config()->isFirstExecution()) {
|
||||
mainWindow->displayWelcomeDialog();
|
||||
@@ -176,7 +191,7 @@ CutterApplication::CutterApplication(int &argc, char **argv) : QApplication(argc
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CUTTER_APPVEYOR_R2DEC
|
||||
#ifdef IAITO_APPVEYOR_R2DEC
|
||||
qputenv("R2DEC_HOME", "lib\\plugins\\r2dec-js");
|
||||
#endif
|
||||
#ifdef Q_OS_WIN
|
||||
@@ -189,22 +204,22 @@ CutterApplication::CutterApplication(int &argc, char **argv) : QApplication(argc
|
||||
#endif
|
||||
}
|
||||
|
||||
CutterApplication::~CutterApplication()
|
||||
IaitoApplication::~IaitoApplication()
|
||||
{
|
||||
Plugins()->destroyPlugins();
|
||||
delete mainWindow;
|
||||
#ifdef CUTTER_ENABLE_PYTHON
|
||||
#ifdef IAITO_ENABLE_PYTHON
|
||||
Python()->shutdown();
|
||||
#endif
|
||||
}
|
||||
|
||||
void CutterApplication::launchNewInstance(const QStringList &args)
|
||||
void IaitoApplication::launchNewInstance(const QStringList &args)
|
||||
{
|
||||
QProcess process(this);
|
||||
process.setEnvironment(QProcess::systemEnvironment());
|
||||
QStringList allArgs;
|
||||
if (!clOptions.enableCutterPlugins) {
|
||||
allArgs.push_back("--no-cutter-plugins");
|
||||
if (!clOptions.enableIaitoPlugins) {
|
||||
allArgs.push_back("--no-iaito-plugins");
|
||||
}
|
||||
if (!clOptions.enableR2Plugins) {
|
||||
allArgs.push_back("--no-r2-plugins");
|
||||
@@ -213,7 +228,7 @@ void CutterApplication::launchNewInstance(const QStringList &args)
|
||||
process.startDetached(qApp->applicationFilePath(), allArgs);
|
||||
}
|
||||
|
||||
bool CutterApplication::event(QEvent *e)
|
||||
bool IaitoApplication::event(QEvent *e)
|
||||
{
|
||||
if (e->type() == QEvent::FileOpen) {
|
||||
QFileOpenEvent *openEvent = static_cast<QFileOpenEvent *>(e);
|
||||
@@ -236,7 +251,7 @@ bool CutterApplication::event(QEvent *e)
|
||||
return QApplication::event(e);
|
||||
}
|
||||
|
||||
bool CutterApplication::loadTranslations()
|
||||
bool IaitoApplication::loadTranslations()
|
||||
{
|
||||
const QString &language = Config()->getCurrLocale().bcp47Name();
|
||||
if (language == QStringLiteral("en") || language.startsWith(QStringLiteral("en-"))) {
|
||||
@@ -245,25 +260,26 @@ bool CutterApplication::loadTranslations()
|
||||
const auto &allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript,
|
||||
QLocale::AnyCountry);
|
||||
|
||||
bool cutterTrLoaded = false;
|
||||
bool iaitoTrLoaded = false;
|
||||
|
||||
for (const QLocale &it : allLocales) {
|
||||
const QString &langPrefix = it.bcp47Name();
|
||||
|
||||
if (langPrefix == language) {
|
||||
QApplication::setLayoutDirection(it.textDirection());
|
||||
QLocale::setDefault(it);
|
||||
|
||||
QTranslator *trCutter = new QTranslator;
|
||||
QTranslator *trIaito = new QTranslator;
|
||||
QTranslator *trQtBase = new QTranslator;
|
||||
QTranslator *trQt = new QTranslator;
|
||||
|
||||
const QStringList &cutterTrPaths = Cutter::getTranslationsDirectories();
|
||||
const QStringList &cutterTrPaths = Iaito::getTranslationsDirectories();
|
||||
|
||||
for (const auto &trPath : cutterTrPaths) {
|
||||
if (trCutter && trCutter->load(it, QLatin1String("cutter"), QLatin1String("_"), trPath)) {
|
||||
installTranslator(trCutter);
|
||||
cutterTrLoaded = true;
|
||||
trCutter = nullptr;
|
||||
if (trIaito && trIaito->load(it, QLatin1String("iaito"), QLatin1String("_"), trPath)) {
|
||||
installTranslator(trIaito);
|
||||
iaitoTrLoaded = true;
|
||||
trIaito = nullptr;
|
||||
}
|
||||
if (trQt && trQt->load(it, "qt", "_", trPath)) {
|
||||
installTranslator(trQt);
|
||||
@@ -276,8 +292,8 @@ bool CutterApplication::loadTranslations()
|
||||
}
|
||||
}
|
||||
|
||||
if (trCutter) {
|
||||
delete trCutter;
|
||||
if (trIaito) {
|
||||
delete trIaito;
|
||||
}
|
||||
if (trQt) {
|
||||
delete trQt;
|
||||
@@ -288,13 +304,13 @@ bool CutterApplication::loadTranslations()
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (!cutterTrLoaded) {
|
||||
qWarning() << "Cannot load Cutter's translation for " << language;
|
||||
if (!iaitoTrLoaded) {
|
||||
qWarning() << "Cannot load Iaito's translation for " << language;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CutterApplication::parseCommandLineOptions()
|
||||
bool IaitoApplication::parseCommandLineOptions()
|
||||
{
|
||||
// Keep this function in sync with documentation
|
||||
|
||||
@@ -331,6 +347,10 @@ bool CutterApplication::parseCommandLineOptions()
|
||||
QObject::tr("Open file in write mode"));
|
||||
cmd_parser.addOption(writeModeOption);
|
||||
|
||||
QCommandLineOption binCacheOption({"c", "bincache"},
|
||||
QObject::tr("Enable bin.cache to make relocs work"));
|
||||
cmd_parser.addOption(writeModeOption);
|
||||
|
||||
|
||||
QCommandLineOption pythonHomeOption("pythonhome",
|
||||
QObject::tr("PYTHONHOME to use for embedded python interpreter"),
|
||||
@@ -348,9 +368,9 @@ bool CutterApplication::parseCommandLineOptions()
|
||||
QObject::tr("Do not load plugins"));
|
||||
cmd_parser.addOption(disablePlugins);
|
||||
|
||||
QCommandLineOption disableCutterPlugins("no-cutter-plugins",
|
||||
QObject::tr("Do not load Cutter plugins"));
|
||||
cmd_parser.addOption(disableCutterPlugins);
|
||||
QCommandLineOption disableIaitoPlugins("no-iaito-plugins",
|
||||
QObject::tr("Do not load Iaito plugins"));
|
||||
cmd_parser.addOption(disableIaitoPlugins);
|
||||
|
||||
QCommandLineOption disableR2Plugins("no-r2-plugins",
|
||||
QObject::tr("Do not load radare2 plugins"));
|
||||
@@ -358,7 +378,7 @@ bool CutterApplication::parseCommandLineOptions()
|
||||
|
||||
cmd_parser.process(*this);
|
||||
|
||||
CutterCommandLineOptions opts;
|
||||
IaitoCommandLineOptions opts;
|
||||
opts.args = cmd_parser.positionalArguments();
|
||||
|
||||
if (cmd_parser.isSet(analOption)) {
|
||||
@@ -424,12 +444,12 @@ bool CutterApplication::parseCommandLineOptions()
|
||||
|
||||
opts.outputRedirectionEnabled = !cmd_parser.isSet(disableRedirectOption);
|
||||
if (cmd_parser.isSet(disablePlugins)) {
|
||||
opts.enableCutterPlugins = false;
|
||||
opts.enableIaitoPlugins = false;
|
||||
opts.enableR2Plugins = false;
|
||||
}
|
||||
|
||||
if (cmd_parser.isSet(disableCutterPlugins)) {
|
||||
opts.enableCutterPlugins = false;
|
||||
if (cmd_parser.isSet(disableIaitoPlugins)) {
|
||||
opts.enableIaitoPlugins = false;
|
||||
}
|
||||
|
||||
if (cmd_parser.isSet(disableR2Plugins)) {
|
||||
@@ -441,7 +461,7 @@ bool CutterApplication::parseCommandLineOptions()
|
||||
}
|
||||
|
||||
|
||||
void CutterProxyStyle::polish(QWidget *widget)
|
||||
void IaitoProxyStyle::polish(QWidget *widget)
|
||||
{
|
||||
QProxyStyle::polish(widget);
|
||||
#if QT_VERSION_CHECK(5, 10, 0) < QT_VERSION
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef CUTTERAPPLICATION_H
|
||||
#define CUTTERAPPLICATION_H
|
||||
#ifndef IAITOAPPLICATION_H
|
||||
#define IAITOAPPLICATION_H
|
||||
|
||||
#include <QEvent>
|
||||
#include <QApplication>
|
||||
@@ -12,23 +12,23 @@ enum class AutomaticAnalysisLevel {
|
||||
Ask, None, AAA, AAAA
|
||||
};
|
||||
|
||||
struct CutterCommandLineOptions {
|
||||
struct IaitoCommandLineOptions {
|
||||
QStringList args;
|
||||
AutomaticAnalysisLevel analLevel = AutomaticAnalysisLevel::Ask;
|
||||
InitialOptions fileOpenOptions;
|
||||
QString pythonHome;
|
||||
bool outputRedirectionEnabled = true;
|
||||
bool enableCutterPlugins = true;
|
||||
bool enableIaitoPlugins = true;
|
||||
bool enableR2Plugins = true;
|
||||
};
|
||||
|
||||
class CutterApplication : public QApplication
|
||||
class IaitoApplication : public QApplication
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CutterApplication(int &argc, char **argv);
|
||||
~CutterApplication();
|
||||
IaitoApplication(int &argc, char **argv);
|
||||
~IaitoApplication();
|
||||
|
||||
MainWindow *getMainWindow()
|
||||
{
|
||||
@@ -53,14 +53,14 @@ private:
|
||||
private:
|
||||
bool m_FileAlreadyDropped;
|
||||
MainWindow *mainWindow;
|
||||
CutterCommandLineOptions clOptions;
|
||||
IaitoCommandLineOptions clOptions;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief CutterProxyStyle is used to force shortcuts displaying in context menu
|
||||
* @brief IaitoProxyStyle is used to force shortcuts displaying in context menu
|
||||
*/
|
||||
class CutterProxyStyle : public QProxyStyle
|
||||
class IaitoProxyStyle : public QProxyStyle
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@@ -70,4 +70,4 @@ public:
|
||||
void polish(QWidget *widget) override;
|
||||
};
|
||||
|
||||
#endif // CUTTERAPPLICATION_H
|
||||
#endif // IAITOAPPLICATION_H
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
#ifndef IAITO_CONFIG_H
|
||||
#define IAITO_CONFIG_H
|
||||
|
||||
#define IAITO_VERSION_MAJOR $$IAITO_VERSION_MAJOR
|
||||
#define IAITO_VERSION_MINOR $$IAITO_VERSION_MINOR
|
||||
#define IAITO_VERSION_PATCH $$IAITO_VERSION_PATCH
|
||||
|
||||
#define IAITO_VERSION_FULL \"$${IAITO_VERSION_MAJOR}.$${IAITO_VERSION_MINOR}.$${IAITO_VERSION_PATCH}\"
|
||||
|
||||
#define IAITO_EXTRA_PLUGIN_DIRS \"$${IAITO_EXTRA_PLUGIN_DIRS}\"
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
#ifndef IAITO_CONFIG_H
|
||||
#define IAITO_CONFIG_H
|
||||
|
||||
#define IAITO_VERSION_MAJOR @IAITO_VERSION_MAJOR@
|
||||
#define IAITO_VERSION_MINOR @IAITO_VERSION_MINOR@
|
||||
#define IAITO_VERSION_PATCH @IAITO_VERSION_PATCH@
|
||||
|
||||
#define IAITO_VERSION_FULL "@IAITO_VERSION_MAJOR@.@IAITO_VERSION_MINOR@.@IAITO_VERSION_PATCH@"
|
||||
|
||||
#endif
|
||||
+7
-7
@@ -1,8 +1,8 @@
|
||||
|
||||
#include "CutterApplication.h"
|
||||
#include "IaitoApplication.h"
|
||||
#include "core/MainWindow.h"
|
||||
#include "common/UpdateWorker.h"
|
||||
#include "CutterConfig.h"
|
||||
#include "IaitoConfig.h"
|
||||
#include "common/CrashHandler.h"
|
||||
#include "common/SettingsUpgrade.h"
|
||||
|
||||
@@ -71,9 +71,9 @@ int main(int argc, char *argv[])
|
||||
qRegisterMetaType<QList<FunctionDescription>>();
|
||||
|
||||
QCoreApplication::setOrganizationName("radareorg");
|
||||
QCoreApplication::setApplicationName("r2cutter");
|
||||
QCoreApplication::setApplicationName("iaito");
|
||||
|
||||
Cutter::initializeSettings();
|
||||
Iaito::initializeSettings();
|
||||
|
||||
QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts); // needed for QtWebEngine inside Plugins
|
||||
#ifdef Q_OS_WIN
|
||||
@@ -83,12 +83,12 @@ int main(int argc, char *argv[])
|
||||
#endif
|
||||
#endif
|
||||
|
||||
CutterApplication a(argc, argv);
|
||||
IaitoApplication a(argc, argv);
|
||||
|
||||
Cutter::migrateThemes();
|
||||
Iaito::migrateThemes();
|
||||
|
||||
if (Config()->getAutoUpdateEnabled()) {
|
||||
#if CUTTER_UPDATE_WORKER_AVAILABLE
|
||||
#if IAITO_UPDATE_WORKER_AVAILABLE
|
||||
UpdateWorker *updateWorker = new UpdateWorker;
|
||||
QObject::connect(updateWorker, &UpdateWorker::checkComplete,
|
||||
[=](const QVersionNumber &version, const QString & error) {
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
|
||||
#ifndef CUTTER_BINDINGS_H
|
||||
#define CUTTER_BINDINGS_H
|
||||
#ifndef IAITO_BINDINGS_H
|
||||
#define IAITO_BINDINGS_H
|
||||
|
||||
// #define QT_ANNOTATE_ACCESS_SPECIFIER(a) __attribute__((annotate(#a)))
|
||||
|
||||
#include "../core/Cutter.h"
|
||||
#include "../core/Iaito.h"
|
||||
#include "../common/Configuration.h"
|
||||
#include "../core/MainWindow.h"
|
||||
#include "../widgets/CutterDockWidget.h"
|
||||
#include "../plugins/CutterPlugin.h"
|
||||
#include "../widgets/IaitoDockWidget.h"
|
||||
#include "../plugins/IaitoPlugin.h"
|
||||
#include "../menus/AddressableItemContextMenu.h"
|
||||
|
||||
#endif //CUTTER_BINDINGS_H
|
||||
#endif //IAITO_BINDINGS_H
|
||||
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<typesystem package="CutterBindings">
|
||||
<typesystem package="IaitoBindings">
|
||||
<load-typesystem name="typesystem_core.xml" generate="no" />
|
||||
<load-typesystem name="typesystem_gui.xml" generate="no" />
|
||||
<load-typesystem name="typesystem_widgets.xml" generate="no" />
|
||||
|
||||
<primitive-type name="bool"/>
|
||||
|
||||
<object-type name="CutterCore">
|
||||
<object-type name="IaitoCore">
|
||||
</object-type>
|
||||
<object-type name="Configuration" />
|
||||
<object-type name="MainWindow" >
|
||||
@@ -15,7 +15,7 @@
|
||||
</object-type>
|
||||
<object-type name="BasicBlockHighlighter" />
|
||||
<object-type name="AddressableItemContextMenu" />
|
||||
<object-type name="CutterDockWidget" />
|
||||
<object-type name="IaitoDockWidget" />
|
||||
|
||||
<template name="plugin_meta_get">
|
||||
SbkObject *wrapper = Shiboken::BindingManager::instance().retrieveWrapper(this);
|
||||
@@ -38,7 +38,7 @@
|
||||
pythonToCpp(pyResult, &cppResult);
|
||||
return cppResult;
|
||||
</template>
|
||||
<object-type name="CutterPlugin">
|
||||
<object-type name="IaitoPlugin">
|
||||
<modify-function signature="getName()const">
|
||||
<inject-code class="shell" position="beginning">
|
||||
<insert-template name="plugin_meta_get">
|
||||
|
||||
@@ -17,4 +17,4 @@ bindings_txt = configure_file(input: 'bindings.txt.in',
|
||||
|
||||
bindings_h = files('bindings.h')
|
||||
|
||||
subdir('CutterBindings')
|
||||
subdir('IaitoBindings')
|
||||
@@ -54,7 +54,7 @@ target_include_directories(Radare2 INTERFACE
|
||||
"$<BUILD_INTERFACE:${Radare2_INCLUDE_DIRS}>"
|
||||
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libr>")
|
||||
|
||||
install(TARGETS Radare2 EXPORT r2cutterTargets)
|
||||
install(TARGETS Radare2 EXPORT iaitoTargets)
|
||||
if (APPLE)
|
||||
elseif (WIN32)
|
||||
foreach(_lib ${R2_LIBS} ${R2_EXTRA_LIBS})
|
||||
|
||||
@@ -84,7 +84,7 @@ if(WIN32)
|
||||
set(Radare2_TARGET Radare2::libr)
|
||||
else()
|
||||
# support installation locations used by r2 scripts like sys/user.sh and sys/install.sh
|
||||
if(CUTTER_USE_ADDITIONAL_RADARE2_PATHS)
|
||||
if(IAITO_USE_ADDITIONAL_RADARE2_PATHS)
|
||||
set(Radare2_CMAKE_PREFIX_PATH_TEMP ${CMAKE_PREFIX_PATH})
|
||||
list(APPEND CMAKE_PREFIX_PATH "$ENV{HOME}/bin/prefix/radare2") # sys/user.sh
|
||||
list(APPEND CMAKE_PREFIX_PATH "/usr/local") # sys/install.sh
|
||||
@@ -98,7 +98,7 @@ else()
|
||||
endif()
|
||||
|
||||
# reset CMAKE_PREFIX_PATH
|
||||
if(CUTTER_USE_ADDITIONAL_RADARE2_PATHS)
|
||||
if(IAITO_USE_ADDITIONAL_RADARE2_PATHS)
|
||||
set(CMAKE_PREFIX_PATH ${Radare2_CMAKE_PREFIX_PATH_TEMP})
|
||||
endif()
|
||||
|
||||
|
||||
Loaded 100 of 403 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user