diff --git a/tools/README.md b/tools/README.md index 0dad6706..0a998f2b 100644 --- a/tools/README.md +++ b/tools/README.md @@ -189,7 +189,7 @@ In order to keep the code clean and consistent, we use `pylint` and `black`: ### Run pylint (ignores build and virtualenv) -`pylint tools/ --ignore=ncc` +`pylint tools/ --ignore=build,ncc` ### Check code formatting without rewriting files diff --git a/tools/ghidra_scripts/README.md b/tools/ghidra_scripts/README.md index ebf32da8..1e5082d7 100644 --- a/tools/ghidra_scripts/README.md +++ b/tools/ghidra_scripts/README.md @@ -1,6 +1,6 @@ # Ghidra Scripts -The scripts in this directory provide additional functionality in Ghidra, e.g. imports of symbols from the PDB debug symbol file. +The scripts in this directory provide additional functionality in Ghidra, e.g. imports of symbols and types from the PDB debug symbol file. ## Setup @@ -14,9 +14,12 @@ Since these scripts and its dependencies are written in Python 3, [Ghidrathon](h - Close the window and click the _Refresh_ button. - This script should now be available under the folder _LEGO1_. +### Virtual environment +As of now, there must be a Python virtual environment set up under `$REPOSITORY_ROOT/.venv`, and the dependencies of `isledecomp` must be installed there, see [here](../README.md#tooling). + ## Development -- Type hints for Ghira (optional): Download a recent release from https://github.com/VDOO-Connected-Trust/ghidra-pyi-generator, +- Type hints for Ghidra (optional): Download a recent release from https://github.com/VDOO-Connected-Trust/ghidra-pyi-generator, unpack it somewhere, and `pip install` that directory in this virtual environment. This provides types and headers for Python. Be aware that some of these files contain errors - in particular, `from typing import overload` seems to be missing everywhere, leading to spurious type errors. - Note that the imported modules persist across multiple runs of the script (see [here](https://github.com/mandiant/Ghidrathon/issues/103)). - If you indend to modify an imported library, you have to use `import importlib; importlib.reload(${library})` or restart Ghidra for your changes to have any effect. + If you indend to modify an imported library, you have to use `import importlib; importlib.reload(${library})` or restart Ghidra for your changes to have any effect. Unfortunately, even that is not perfectly reliable, so you may still have to restart Ghidra for some changes in `isledecomp` to be applied.