{"id":13593709,"url":"https://github.com/memflow/memflow-pcileech","last_synced_at":"2026-01-17T10:56:37.652Z","repository":{"id":43901367,"uuid":"282660151","full_name":"memflow/memflow-pcileech","owner":"memflow","description":"memflow connector backend to interface with pcileech devices","archived":false,"fork":false,"pushed_at":"2025-04-28T20:43:18.000Z","size":1717,"stargazers_count":21,"open_issues_count":1,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-28T21:29:36.237Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/memflow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-26T13:53:34.000Z","updated_at":"2025-04-28T20:43:22.000Z","dependencies_parsed_at":"2023-12-17T05:19:52.264Z","dependency_job_id":"f411a549-7d4f-481f-8aa0-497938adf537","html_url":"https://github.com/memflow/memflow-pcileech","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/memflow/memflow-pcileech","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memflow%2Fmemflow-pcileech","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memflow%2Fmemflow-pcileech/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memflow%2Fmemflow-pcileech/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memflow%2Fmemflow-pcileech/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/memflow","download_url":"https://codeload.github.com/memflow/memflow-pcileech/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memflow%2Fmemflow-pcileech/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28506593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T10:25:30.148Z","status":"ssl_error","status_checked_at":"2026-01-17T10:25:29.718Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T16:01:23.438Z","updated_at":"2026-01-17T10:56:37.644Z","avatar_url":"https://github.com/memflow.png","language":"Rust","funding_links":[],"categories":["Exploitation Tools"],"sub_categories":["Unikernel-like"],"readme":"# memflow-pcileech\n\nThis connector implements the [LeechCore](https://github.com/ufrisk/LeechCore) interface of pcileech for memflow.\n\nMore information about pcileech can be found under https://github.com/ufrisk/pcileech.\n\n\n## Compilation\n\nFirst make sure that the `leechcore` submodule is checked out:\n```\ngit submodule update --init\n```\n\nInstall the following build tools:\n- clang (only required when selecting feature `bindgen`)\n- gcc (only required on linux)\n- libusb-1.0 (only required on linux)\n\nIf you want to use `bindgen` make sure that libclang can be found by either adding it to your `PATH` or via the `LIBCLANG_PATH` environment variable.\n\nThe simplest way to install clang on Windows is by using choco:\n```\nchoco install llvm\n```\n\nOn Windows you additionally need to supply the proprietary `FTD3XX.dll`. It can be downloaded from the [FTDI Website](https://www.ftdichip.com/Drivers/D3XX.htm) in the `Application Library (DLL)` column.\n\nOn Linux you need to check-out and compile the `leechcore_ft601_driver_linux` project from the [LeechCore-Plugins](https://github.com/ufrisk/LeechCore-plugins) repository. On Linux the `leechcore_ft601_driver_linux.so` file currently has to be placed in `/usr/` or `/usr/lib`. Alternatively `LD_LIBRARY_PATH` can be set to the containing path. Check the [dlopen](https://man7.org/linux/man-pages/man3/dlopen.3.html) documentation for all possible import paths.\n\nMore information about these requirements can be found in the [LeechCore-Plugins](https://github.com/ufrisk/LeechCore-plugins) repository.\n\n### Running the example\n\nTo run the example simply execute:\n\n```\ncargo run --example read_phys --release -- FPGA\n```\n\nOn Linux the example binary will be ran with `sudo -E` to elevate privileges.\n\nSince the invoked binary is placed in the `target/release/examples` or `/target/debug/examples` folder the `leechcore_ft601_driver_linux.so` has to be placed in the corresponding folder.\nOn Windows the `FTD3XX.dll` has to be placed in the corresponding examples folder.\n\nAlternatively you can also run memflow examples by running them directly from the [memflow](https://github.com/memflow/memflow) repository directory:\n```\ncargo run --example process_list --release -- --connector pcileech::device=FPGA --os win32\n```\n\n### Installing the library\n\nThe `./install.sh` script will just compile and install the plugin.\nThe connector will be installed to `~/.local/lib/memflow` by default.\nAdditionally the `--system` flag can be specified which will install the connector in `/usr/lib/memflow` as well.\n\nRemarks: The `install.sh` script does currently not place the `leechcore_ft601_driver_linux.so` / `FTD3XX.dll` in the corresponding folders. Please make sure to provide it manually.\n\n### Building the stand-alone connector for dynamic loading\n\nTo compile a dynamic library for use with the connector inventory use the following command:\n```\ncargo build --release\n```\n\nIf you want to manually execute bindgen at buildtime (e.g. when changing/updating the underlying pcileech repository) then use the following command to build:\n```\ncargo build --release --features bindgen\n```\n\nNote: This requires `clang` (libclang) to be installed on your system.\n\nAs mentioned above the `leechcore_ft601_driver_linux.so` or `FTD3XX.dll` have to be placed in the same folder the connector library is placed in.\n\n### Using the library in a rust project\n\nTo use the plugin in a rust project just include it in your Cargo.toml\n\n```toml\nmemflow-pcileech = { git = \"https://github.com/memflow/memflow-pcileech\", branch = \"main\" }\n```\n\nAfter adding the dependency to your Cargo.toml you can easily create a new Connector instance and pass it some arguments from the command line:\n\n```rust\nlet connector_args = if let Some(arg) = args().nth(1) {\n    arg.parse()\n} else {\n    \":device=FPGA\".parse()\n}\n.expect(\"unable to parse command line arguments\");\n\nlet mut conn = memflow_pcileech::create_connector(\u0026connector_args)\n    .expect(\"unable to initialize memflow_pcileech\");\n```\n\n## Arguments\n\nThe following arguments can be used when loading the connector:\n\n- `device` - The name of the pcileech device to open (e.g. `FPGA`) (default argument, required)\n- `remote` - The remote connection string of the pcileech (e.g. `rpc://insecure:computername.local`) (optional)\n- `memmap` - A file that contains a custom memory map in TOML format (optional)\n- `auto-clear` - Enables auto-clear of status registers in LeechCore (Auto-clear is only available for bitstreams 4.7 and newer.)\n\nPassing arguments which use the `:` character to pcileech itself requires quotes to escape them. here is an example of using the \"driver\" mode on pcileech as well as using a memory map file: `:device=\"fpga://driver=1\":memmap=\"memmap.toml\"`. Pcileech takes device arguments by appending `://` to the device name, followed by comma-separated device arguments.\n\nThe memory map file must contain a mapping table in the following format:\n\n```toml\n[[range]]\nbase=0x1000\nlength=0x1000\n\n[[range]]\nbase=0x2000\nlength=0x1000\nreal_base=0x3000\n```\n\nThe `real_base` parameter is optional. If it is not set there will be no re-mapping.\n\nOn Windows systems the memory map can be obtained from the Registry under the following Key:\n```\nHKEY_LOCAL_MACHINE\\\\HARDWARE\\\\RESOURCEMAP\\\\System Resources\\\\Physical Memory\\\\.Translated\n```\n\nIn case no memory mappings are provided by the user the connector will use the memory mappings found by the os integration (e.g. win32).\n\n## Troubleshooting\n\nQ: The plugin is not detected/found by memflow\n\nA: Make sure to compile the plugin with the correct flags. See the [usage section](#using-the-library-in-a-rust-project) for more information.\n\n## License\n\nLicensed under GPL-3.0 License, see [LICENSE](LICENSE).\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemflow%2Fmemflow-pcileech","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmemflow%2Fmemflow-pcileech","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemflow%2Fmemflow-pcileech/lists"}