Skip to content

Conversation

@lukbukkit
Copy link
Contributor

@lukbukkit lukbukkit commented Sep 28, 2025

This pull request adds an implementation for the data renderer API currently available for Python and C++ plugins. My work is based on #6721. This PR fixes #6485. I've added an example plugin which renders UUIDs of the Mach-O load command LD_UUID.

The tests for this feature are currently in progress. What kind of tests would you expect for this feature, should they be similar to render_layer.rs?

@lukbukkit lukbukkit marked this pull request as draft September 28, 2025 16:05
@lukbukkit lukbukkit changed the title WIP: Rust API: Add Data Renderer API Rust API: Add Data Renderer API Sep 28, 2025
@emesare
Copy link
Member

emesare commented Sep 28, 2025

For tests it would be similar to the render layer one, however seeing as you may be writing them blind (not sure if you have a headless supporting license) whenever this PR is ready for review I can write the tests for the API.

For rust we typically have the examples directory be actual binary examples, I think we may want a seperate directory for plugin examples to limit confusion (examples directory is typically reserved for cargo run --examples). If you would like you can make a new directory called plugin_examples I think that would be an improvement, obviously if you feel differently then we can have a discussion here.

@lukbukkit
Copy link
Contributor Author

For tests it would be similar to the render layer one, however seeing as you may be writing them blind (not sure if you have a headless supporting license) whenever this PR is ready for review I can write the tests for the API.

That would be awesome because my personal license does not support headless operation, and I'm not too familiar with writing tests for Binary Ninja.

For rust we typically have the examples directory be actual binary examples, I think we may want a seperate directory for plugin examples to limit confusion (examples directory is typically reserved for cargo run --examples). If you would like you can make a new directory called plugin_examples I think that would be an improvement, obviously if you feel differently then we can have a discussion here.

Yes, that sounds good!

@lukbukkit lukbukkit marked this pull request as ready for review September 29, 2025 08:21
@emesare
Copy link
Member

emesare commented Oct 2, 2025

Thank you for helping push this through, I made some changes to the API that I think better reflect how its intended to be used and some other comments that I think help clarify things that are not as obvious.

e3a3ac2

Please let me know if this looks acceptable and i will squash all the changes up and merge (with you and @rbran as author)

@emesare emesare added this to the Io milestone Oct 2, 2025
@emesare emesare added the Component: Rust API Issue needs changes to the Rust API label Oct 2, 2025
@lukbukkit
Copy link
Contributor Author

Thanks for improving the API even further. The final result looks good to me, and it also works for my custom data renderer plugin.

@emesare
Copy link
Member

emesare commented Oct 7, 2025

Added with 64633f6 thank you!

@emesare emesare closed this Oct 7, 2025
@emesare emesare self-assigned this Oct 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Component: Rust API Issue needs changes to the Rust API

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add data renderer API to Rust

3 participants