{"id":161068,"date":"2025-10-14T07:42:38","date_gmt":"2025-10-14T07:42:38","guid":{"rendered":"https:\/\/hnsecurity.it\/?p=161068"},"modified":"2026-07-16T12:36:04","modified_gmt":"2026-07-16T12:36:04","slug":"streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2","status":"publish","type":"post","link":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/","title":{"rendered":"Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2"},"content":{"rendered":"<blockquote><p><em>&#8220;The attack surface is the vulnerability.<br \/>\nFinding a bug there is just a detail.&#8221;<br \/>\n&#8212; Mark Dowd<br \/>\n<\/em><\/p><\/blockquote>\n<p>A\u00a0<a href=\"https:\/\/hnsecurity.it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/\" target=\"_blank\" rel=\"noopener\">previous version<\/a> of this article appeared on the <a href=\"https:\/\/hnsecurity.it\/blog\/\" target=\"_blank\" rel=\"noopener\">HN Security blog<\/a> in February 2025. This updated and revised version was also published as a <a href=\"https:\/\/hex-rays.com\/blog\/streamlining-vulnerability-research-idalib-rust-bindings\" target=\"_blank\" rel=\"noopener\">guest feature<\/a> on the Hex-Rays blog in October 2025.<\/p>\n<h2>TL;DR<\/h2>\n<p>Following the release of\u00a0<a href=\"https:\/\/hex-rays.com\/blog\/ida-9.2-release\" target=\"_blank\" rel=\"noopener\">IDA Pro 9.2<\/a>, I updated my tools that were built to assist with\u00a0<strong>reverse engineering and vulnerability research against binary targets<\/strong>:<\/p>\n<ul>\n<li aria-level=\"1\"><a href=\"https:\/\/github.com\/0xdea\/rhabdomancer\" target=\"_blank\" rel=\"noopener\">rhabdomancer<\/a>: a headless IDA Pro plugin that\u00a0<strong>locates calls to potentially insecure API functions<\/strong> in a binary file. Auditors can backtrace from these candidate points to find pathways allowing access from untrusted input.<\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/github.com\/0xdea\/haruspex\" target=\"_blank\" rel=\"noopener\">haruspex<\/a>: a headless IDA Pro plugin that\u00a0<strong>extracts pseudocode<\/strong>\u00a0generated by IDA Pro\u2019s decompiler in a format suitable for import into an IDE or to be parsed by static analysis tools such as Semgrep or weggli.<\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/github.com\/0xdea\/augur\" target=\"_blank\" rel=\"noopener\">augur<\/a>: a headless IDA Pro plugin that\u00a0<strong>extracts strings and related pseudocode<\/strong>\u00a0from a binary file. It stores pseudocode of functions that reference strings in an organized directory tree.<\/li>\n<\/ul>\n<p>These plugins are based on my\u00a0<a href=\"https:\/\/hnsecurity.it\/blog\/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep\/\" target=\"_blank\" rel=\"noopener\">previous work<\/a>\u00a0and leverage Hex-Rays\u2019\u00a0<a href=\"https:\/\/hex-rays.com\/blog\/4-powerful-applications-of-idalib-headless-ida-in-action\" target=\"_blank\" rel=\"noopener\">idalib<\/a>\u00a0alongside Binarly\u2019s\u00a0<a href=\"https:\/\/github.com\/binarly-io\/idalib\" target=\"_blank\" rel=\"noopener\">idiomatic Rust bindings<\/a>\u00a0for the IDA SDK to achieve a\u00a0<strong>blazing<\/strong>\u00a0<strong>fast, headless user experience.\u00a0<\/strong>They have<strong>\u00a0<\/strong>assisted me in finding\u00a0<strong>real-world vulnerabilities at scale<\/strong>.<\/p>\n<h2><strong>Introducing the award-winning idalib Rust bindings<\/strong><\/h2>\n<p>Last year, after approaching\u00a0<a href=\"https:\/\/hnsecurity.it\/blog\/tag\/rust\/\" target=\"_blank\" rel=\"noopener\">Rust<\/a>\u00a0and having explored some basic\u00a0<a href=\"https:\/\/hnsecurity.it\/blog\/learning-rust-for-fun-and-backdoo-rs\/\" target=\"_blank\" rel=\"noopener\">offensive\u00a0<\/a><a href=\"https:\/\/hnsecurity.it\/blog\/an-offensive-rust-encore\/\" target=\"_blank\" rel=\"noopener\">applications<\/a>, I decided it was time for\u00a0<strong>my first serious Rust project<\/strong>. When\u00a0<a href=\"https:\/\/crates.io\/crates\/idalib\/0.1.0%2B9.0.240930\" target=\"_blank\" rel=\"noopener\">idalib v0.1.0<\/a>\u00a0was announced, I had an idea: port to IDA Pro some of my original\u00a0<a href=\"https:\/\/github.com\/0xdea\/ghidra-scripts\" target=\"_blank\" rel=\"noopener\">Ghidra scripts<\/a>\u00a0that aim to\u00a0<strong>streamline vulnerability research<\/strong>, using Rust! \ud83e\udd80 \ud83d\udca1<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Our REsearch team is thrilled about the new IDA v9.0! <a href=\"https:\/\/x.com\/hashtag\/efiXplorer?src=hash&amp;ref_src=twsrc%5Etfw\">#efiXplorer<\/a> is fully compatible with v9.0 and still supports IDA v8.4\ud83d\ude80<br \/>\ud83d\udd2c<a href=\"https:\/\/t.co\/WHYGifmjGS\">https:\/\/t.co\/WHYGifmjGS<\/a><\/p>\n<p>We are thrilled to announce IDAlib \u2014 idiomatic Rust bindings for the IDA SDK \ud83c\udf89 Kudos to <a href=\"https:\/\/x.com\/xorpse?ref_src=twsrc%5Etfw\">@xorpse<\/a>!<br \/>\u2699\ufe0f<a href=\"https:\/\/t.co\/PLoNkf8sQn\">https:\/\/t.co\/PLoNkf8sQn<\/a> <a href=\"https:\/\/t.co\/J1no6oFatO\">pic.twitter.com\/J1no6oFatO<\/a><\/p>\n<p>&mdash; BINARLY\ud83d\udd2c (@binarly_io) <a href=\"https:\/\/x.com\/binarly_io\/status\/1841176852964204561?ref_src=twsrc%5Etfw\">October 1, 2024<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.x.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Binarly\u2019s\u00a0<strong>idalib Rust bindings<\/strong>\u00a0allow\u00a0<a href=\"https:\/\/docs.hex-rays.com\/release-notes\/9_0#headless-processing-with-idalib\" target=\"_blank\" rel=\"noopener\">IDA Pro 9.x<\/a>\u00a0users to\u00a0<strong>develop standalone analysis tools<\/strong>\u00a0with the\u00a0<a href=\"https:\/\/cpp.docs.hex-rays.com\/\" target=\"_blank\" rel=\"noopener\">IDA SDK<\/a>, using Rust in an idiomatic way and fitting Rust&#8217;s ownership model, type system, and API conventions. Tool authors can leverage the entire Rust ecosystem, so IDA Pro can be easily combined with existing Rust libraries and tools.<\/p>\n<p>The availability of\u00a0<a href=\"https:\/\/github.com\/binarly-io\/idalib\" target=\"_blank\" rel=\"noopener\">idalib<\/a>\u00a0marked the start of a new chapter in my Rust journey that saw me publish\u00a0<strong>new vulnerability research tools<\/strong>\u00a0built on top of it, and contribute a number of\u00a0<a href=\"https:\/\/github.com\/binarly-io\/idalib\/pulls?q=author%3A0xdea\" target=\"_blank\" rel=\"noopener\">new features<\/a>\u00a0to idalib itself. And I learned a lot in the process!<\/p>\n<p>My main<strong>\u00a0idalib contributions<\/strong>\u00a0to date are:<\/p>\n<ul>\n<li aria-level=\"1\">Support for the\u00a0<a href=\"https:\/\/github.com\/binarly-io\/idalib\/pull\/1\" target=\"_blank\" rel=\"noopener\">comments<\/a>\u00a0API.<\/li>\n<li aria-level=\"1\">Support for the (mostly undocumented)\u00a0<a href=\"https:\/\/github.com\/binarly-io\/idalib\/pull\/4\" target=\"_blank\" rel=\"noopener\">bookmarks<\/a>\u00a0APIs.<\/li>\n<li aria-level=\"1\">Support for\u00a0<a href=\"https:\/\/github.com\/binarly-io\/idalib\/pull\/12\" target=\"_blank\" rel=\"noopener\">searching<\/a>\u00a0text and immediate values, which incidentally led me to discover\u00a0<a href=\"https:\/\/github.com\/binarly-io\/idalib\/pull\/12#issuecomment-2476708362\" target=\"_blank\" rel=\"noopener\">a curious bug<\/a>\u00a0in IDA Pro.<\/li>\n<li aria-level=\"1\">Support for working with the list of\u00a0<a href=\"https:\/\/github.com\/binarly-io\/idalib\/pull\/23\" target=\"_blank\" rel=\"noopener\">strings<\/a>\u00a0present in a binary file.<\/li>\n<li aria-level=\"1\">Various improvements and bug reports.<\/li>\n<\/ul>\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">We <a href=\"https:\/\/x.com\/binarly_io?ref_src=twsrc%5Etfw\">@binarly_io<\/a> have just released idalib v0.2.0, an update to our <a href=\"https:\/\/x.com\/HexRaysSA?ref_src=twsrc%5Etfw\">@HexRaysSA<\/a> IDASDK Rust bindings. It includes many new features: bookmarks, comments, and plugins APIs, hex-rays support, and documentation!<a href=\"https:\/\/t.co\/FlBo1obu3p\">https:\/\/t.co\/FlBo1obu3p<\/a><\/p>\n<p>Thanks to our contributors: <a href=\"https:\/\/x.com\/yeggorv?ref_src=twsrc%5Etfw\">@yeggorv<\/a>, <a href=\"https:\/\/x.com\/0xdea?ref_src=twsrc%5Etfw\">@0xdea<\/a>!<\/p>\n<p>&mdash; Sam Thomas (@xorpse) <a href=\"https:\/\/x.com\/xorpse\/status\/1856548604007133499?ref_src=twsrc%5Etfw\">November 13, 2024<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.x.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Fast-forward to last February, the idalib Rust bindings were\u00a0<strong>awarded<\/strong>\u00a0third place in the annual\u00a0<a href=\"https:\/\/hex-rays.com\/blog\/2024-plugin-contest-winners\" target=\"_blank\" rel=\"noopener\">Hex-Rays Plugin Contest<\/a>. \ud83c\udf8a It was a well-deserved recognition, and I am happy to have been a humble contributor to this success \ud83d\udc9a<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">We are thrilled to announce the winners of the 2024 Hex-Rays Plugin Contest!<\/p>\n<p>\ud83e\udd471st Place: hrtng<br \/>\ud83e\udd482nd Place: aiDAPal<br \/>\ud83e\udd493rd Place: idalib Rust bindings<\/p>\n<p>Check out our reviews of the winners and other notable submissions here: <a href=\"https:\/\/t.co\/XgkQHfktAF\">https:\/\/t.co\/XgkQHfktAF<\/a><br \/>Huge thank you to all\u2026 <a href=\"https:\/\/t.co\/rw1qzmLjdf\">pic.twitter.com\/rw1qzmLjdf<\/a><\/p>\n<p>&mdash; Hex-Rays SA (@HexRaysSA) <a href=\"https:\/\/x.com\/HexRaysSA\/status\/1891516388742766720?ref_src=twsrc%5Etfw\">February 17, 2025<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.x.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<div class=\"hs-embed-wrapper\" data-service=\"twitter\" data-script-embed=\"true\" data-responsive=\"true\">\n<div class=\"hs-embed-content-wrapper\">\n<p>The maintainers of idalib are wonderful people, and I\u00a0<strong>encourage you to contribute\u00a0<\/strong>to its development. In particular,\u00a0<a href=\"https:\/\/github.com\/xorpse\/\" target=\"_blank\" rel=\"noopener\">Sam<\/a>\u00a0has published related repositories worth exploring:<\/p>\n<ul>\n<li aria-level=\"1\"><a href=\"https:\/\/github.com\/xorpse\/parascope\" target=\"_blank\" rel=\"noopener\">parascope<\/a>: a\u00a0<a href=\"https:\/\/github.com\/weggli-rs\/weggli\" target=\"_blank\" rel=\"noopener\">weggli<\/a>\u00a0ruleset scanner for source code and binaries.<\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/github.com\/xorpse\/weggli-ruleset\" target=\"_blank\" rel=\"noopener\">weggli-ruleset<\/a>: a utility crate to manage weggli patterns, such as\u00a0<a href=\"https:\/\/hnsecurity.it\/blog\/a-collection-of-weggli-patterns-for-c-cpp-vulnerability-research\/\" target=\"_blank\" rel=\"noopener\">those I published<\/a>\u00a0last year.<\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/github.com\/xorpse\/weggli\" target=\"_blank\" rel=\"noopener\">wegglix<\/a>: a modified fork of weggli designed for a more pleasant library experience.<\/li>\n<\/ul>\n<p>It&#8217;s now time to take a look at my tools and see how they fare against some <strong>real-world targets<\/strong>!<\/p>\n<h2><strong>Spinning rhabdomancer against a legendary target<\/strong><\/h2>\n<\/div>\n<blockquote><p><em>Rhabdomancer<br \/>\n\/r\u0103b\u2032d\u0259m\u0103n\u2033-s\u0259r\/<br \/>\nSomeone who uses a divining rod to find underground water.<\/em><\/p><\/blockquote>\n<div>\n<p><a href=\"https:\/\/github.com\/0xdea\/rhabdomancer\" target=\"_blank\" rel=\"noopener\">Rhabdomancer<\/a>\u00a0is the Rust port of\u00a0<a href=\"https:\/\/github.com\/0xdea\/ghidra-scripts\/blob\/main\/Rhabdomancer.java\" target=\"_blank\" rel=\"noopener\">one<\/a>\u00a0of my original\u00a0<a href=\"https:\/\/github.com\/0xdea\/ghidra-scripts\" target=\"_blank\" rel=\"noopener\">Ghidra scripts<\/a>, previously described in the article\u00a0<a href=\"https:\/\/hnsecurity.it\/blog\/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep\/\" target=\"_blank\" rel=\"noopener\">Automating binary vulnerability discovery with Ghidra and Semgrep<\/a>.<\/p>\n<p>It is an\u00a0<strong>IDA Pro headless plugin<\/strong>\u00a0that\u00a0<strong>locates calls to potentially insecure API functions<\/strong>\u00a0in a binary file. Auditors can backtrace from these candidate points to find pathways allowing access from untrusted input. Its main features are:<\/p>\n<ul>\n<li aria-level=\"1\"><strong>Blazing fast, headless user experience<\/strong>\u00a0courtesy of IDA Pro 9.x and Binarly\u2019s idalib Rust bindings.<\/li>\n<li aria-level=\"1\">Support for C\/C++ binary targets compiled for\u00a0<strong>any architecture supported by IDA Pro<\/strong>.<\/li>\n<li aria-level=\"1\"><strong>Bad API function call locations<\/strong>\u00a0are printed to stdout and marked in the IDB.<\/li>\n<li aria-level=\"1\">Known bad API functions are\u00a0<strong>grouped into tiers of severity<\/strong>\u00a0to help prioritize auditing:\n<ul>\n<li aria-level=\"2\">[BAD 0] High priority \u2014 functions that are generally considered insecure.<\/li>\n<li aria-level=\"2\">[BAD 1] Medium priority \u2014 interesting functions that should be checked for insecure use cases.<\/li>\n<li aria-level=\"2\">[BAD 2] Low priority \u2014 code paths involving these functions should be carefully reviewed.<\/li>\n<\/ul>\n<\/li>\n<li aria-level=\"1\">The list of known bad API functions can be\u00a0<strong>easily customized<\/strong>\u00a0by editing\u00a0<em>conf\/rhabdomancer.toml<\/em>.<\/li>\n<\/ul>\n<p>Additional information on rhabdomancer\u2019s features and usage are available on\u00a0<a href=\"https:\/\/crates.io\/crates\/rhabdomancer\" target=\"_blank\" rel=\"noopener\">crates.io<\/a>\u00a0and in the official\u00a0<a href=\"https:\/\/0xdeadbeef.info\/rhabdomancer\/rhabdomancer\/\" target=\"_blank\" rel=\"noopener\">documentation<\/a>.<\/p>\n<\/div>\n<\/div>\n<p>Let&#8217;s <strong>install<\/strong> it and take it for a spin! Since the release of <a href=\"https:\/\/hex-rays.com\/blog\/ida-9.2-release\" target=\"_blank\" rel=\"noopener\">IDA Pro 9.2<\/a> and its freshly open-sourced <a href=\"https:\/\/github.com\/HexRaysSA\/ida-sdk\" target=\"_blank\" rel=\"noopener\">SDK<\/a>, installation has become much simpler:<\/p>\n<ol>\n<li>Download, install, and configure IDA Pro (see <a href=\"https:\/\/hex-rays.com\/ida-pro\" target=\"_blank\" rel=\"noopener\">https:\/\/hex-rays.com\/ida-pro<\/a>).<\/li>\n<li>Install LLVM\/Clang (see <a href=\"https:\/\/rust-lang.github.io\/rust-bindgen\/requirements.html\" target=\"_blank\" rel=\"noopener\">https:\/\/rust-lang.github.io\/rust-bindgen\/requirements.html<\/a>).<\/li>\n<li>On Linux\/macOS, install as follows:<\/li>\n<\/ol>\n<div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"minimal\">export IDADIR=\/path\/to\/ida # if not set, the build script will check common locations\r\ncargo install rhabdomancer<\/pre>\n<p>On Windows, instead, use the following commands:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"minimal\" data-enlighter-linenumbers=\"false\">$env:LIBCLANG_PATH=\"\\path\\to\\clang+llvm\\bin\"\r\n$env:PATH=\"\\path\\to\\ida;$env:PATH\"\r\n$env:IDADIR=\"\\path\\to\\ida\" # if not set, the build script will check common locations\r\ncargo install rhabdomancer<\/pre>\n<p>To <strong>use<\/strong> rhabdomancer:<\/p>\n<ol>\n<li>Make sure IDA Pro is properly configured with a valid license.<\/li>\n<li>Customize the list of known bad API functions in <em>conf\/rhabdomancer.toml<\/em> if needed.<\/li>\n<li>Run as follows:<\/li>\n<\/ol>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"minimal\" data-enlighter-linenumbers=\"false\">rhabdomancer &lt;binary_file&gt;<\/pre>\n<p>Any existing <em>.i64<\/em> IDB file will be updated; otherwise, a new IDB file will be created. To see the results in IDA Pro:<\/p>\n<ol>\n<li>Open the resulting <em>.i64<\/em> IDB file with IDA Pro.<\/li>\n<li>Select <em>View<\/em> &gt; <em>Open subviews<\/em> &gt; <em>Bookmarks<\/em>\u00a0(comments are also added at marked call locations)<\/li>\n<li>Enjoy your results conveniently collected into an IDA Pro window.<\/li>\n<\/ol>\n<\/div>\n<div>\n<p>Now let&#8217;s <strong>run rhabdomancer<\/strong> against a real-world binary file. Our target of choice is the legendary\u00a0<strong>dtprintinfo SPARC binary<\/strong>, which was featured in countless\u00a0<a href=\"https:\/\/github.com\/0xdea\/raptor_infiltrate20\" target=\"_blank\" rel=\"noopener\">advisories<\/a>,\u00a0<a href=\"https:\/\/github.com\/0xdea\/exploits\" target=\"_blank\" rel=\"noopener\">exploits<\/a>,\u00a0<a href=\"https:\/\/youtu.be\/Nc9ZLTb2hQ8\" target=\"_blank\" rel=\"noopener\">talks<\/a>, and\u00a0<a href=\"https:\/\/hnsecurity.it\/blog\/nothing-new-under-the-sun\/\" target=\"_blank\" rel=\"noopener\">articles<\/a>\u00a0(including\u00a0<a href=\"https:\/\/phrack.org\/issues\/70\/13#article\" target=\"_blank\" rel=\"noopener\">Phrack<\/a>) by yours truly and other old-school hackers over the years\u2026 Here&#8217;s to CDE! So long, and thanks for all the shells! \ud83e\udd42 #\ufe0f\u20e3<\/p>\n<p>To run rhabdomancer against our target binary, simply specify its path as the only argument:<\/p>\n<p><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer01-scaled.png\"><img decoding=\"async\" class=\"aligncenter wp-image-161089 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer01-scaled.png\" alt=\"\" width=\"2560\" height=\"1600\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer01-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer01-300x188.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer01-1024x640.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer01-768x480.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer01-1536x960.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer01-2048x1280.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer01-350x219.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><\/p>\n<\/div>\n<div>\n<p>Rhabdomancer is blazing fast! It took less than 3 seconds to fully analyze and process a 350 KB binary file:<\/p>\n<p><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer02-scaled.png\"><img decoding=\"async\" class=\"size-full wp-image-161094 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer02-scaled.png\" alt=\"\" width=\"2560\" height=\"1600\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer02-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer02-300x188.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer02-1024x640.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer02-768x480.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer02-1536x960.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer02-2048x1280.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer02-350x219.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><\/p>\n<\/div>\n<div>\n<p>Bad API function call locations are bookmarked in the IDB. Enjoy your results conveniently collected into an IDA Pro window:<\/p>\n<p><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer03-scaled.png\"><img decoding=\"async\" class=\"size-full wp-image-161095 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer03-scaled.png\" alt=\"\" width=\"2560\" height=\"1599\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer03-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer03-300x187.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer03-1024x639.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer03-768x480.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer03-1536x959.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer03-2048x1279.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/rhabdomancer03-350x219.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><\/p>\n<\/div>\n<p>Can you spot the <strong>vulnerability<\/strong>? Hint: this is a vulnerability class from another era that should&#8217;ve gone extinct a long time ago. Yet, here it is. Find out the answer in my\u00a0<a href=\"https:\/\/phrack.org\/issues\/70\/13#article\" target=\"_blank\" rel=\"noopener\">Phrack article<\/a>, or watch my\u00a0<a href=\"https:\/\/youtu.be\/Nc9ZLTb2hQ8\" target=\"_blank\" rel=\"noopener\">RomHack keynote<\/a>\u00a0if you&#8217;re so inclined.<\/p>\n<div>\n<h2><strong>Automating binary vulnerability discovery with haruspex and augur<\/strong><\/h2>\n<blockquote><p><em>Haruspex<br \/>\n\/h\u0259-r\u016ds\u2032p\u0115ks\u2033, h\u0103r\u2032\u0259-sp\u0115ks\u2033\/<br \/>\nA priest in ancient Rome who practiced divination by the inspection of the entrails of animals.<br \/>\n<\/em><\/p>\n<p><em>Augur<br \/>\n\/\u00f4\u2032g\u0259r\/<br \/>\nOne held to foretell events by omens.<\/em><\/p><\/blockquote>\n<p><a href=\"https:\/\/github.com\/0xdea\/haruspex\" target=\"_blank\" rel=\"noopener\">Haruspex<\/a>\u00a0is the Rust port of\u00a0<a href=\"https:\/\/github.com\/0xdea\/ghidra-scripts\/blob\/main\/Haruspex.java\" target=\"_blank\" rel=\"noopener\">another<\/a>\u00a0Ghidra script of mine. It is an\u00a0<strong>IDA Pro headless plugin<\/strong>\u00a0that\u00a0<strong>extracts pseudocode<\/strong> generated by IDA Pro\u2019s decompiler in a format suitable for import into an IDE or to be parsed by static analysis tools such as <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\" target=\"_blank\" rel=\"noopener\">Semgrep<\/a>\u00a0and\u00a0<a href=\"https:\/\/github.com\/0xdea\/weggli-patterns\" target=\"_blank\" rel=\"noopener\">weggli<\/a>.<\/p>\n<p>Its main features include:<\/p>\n<ul>\n<li aria-level=\"1\"><strong>Fast, headless user experience<\/strong>\u00a0courtesy of IDA Pro 9.x and Binarly&#8217;s idalib Rust bindings.<\/li>\n<li aria-level=\"1\">Support for binary targets for\u00a0<strong>any architectures<\/strong>\u00a0supported by IDA Pro\u2019s decompiler.<\/li>\n<li aria-level=\"1\">Pseudocode of each function is\u00a0<strong>stored in a separate file<\/strong>\u00a0in the output directory for easy inspection.<\/li>\n<li aria-level=\"1\"><strong>External crates<\/strong>\u00a0can invoke\u00a0<em>decompile_to_file<\/em> to decompile a function and save its pseudocode to disk.<\/li>\n<\/ul>\n<p>Additional information on\u00a0<strong>haruspex&#8217;s features<\/strong>\u00a0and usage is available at\u00a0<a href=\"https:\/\/crates.io\/crates\/haruspex\" target=\"_blank\" rel=\"noopener\">crates.io<\/a>\u00a0and in the official\u00a0<a href=\"https:\/\/0xdeadbeef.info\/haruspex\/haruspex\/\" target=\"_blank\" rel=\"noopener\">documentation<\/a>.<\/p>\n<p><strong>Installation<\/strong>\u00a0and\u00a0<strong>usage<\/strong>\u00a0are akin to what I have described earlier for rhabdomancer. The most notable difference is that haruspex\u00a0<strong>can also be used as a library<\/strong>\u00a0by third-party crates to decompile specific functions and save pseudocode to disk. An example of this is\u00a0<a href=\"https:\/\/github.com\/0xdea\/augur\" target=\"_blank\" rel=\"noopener\">augur<\/a>, another IDA Pro headless plugin I wrote that\u00a0<strong>extracts strings and related pseudocode<\/strong>\u00a0from a binary file. I encourage you to\u00a0<a href=\"https:\/\/crates.io\/crates\/haruspex\" target=\"_blank\" rel=\"noopener\">check it out<\/a>.<\/p>\n<\/div>\n<div>\n<p>Coming back to haruspex, let&#8217;s try it out against a sample binary. This time, our target is an <strong>ARM aarch64 setuid binary<\/strong> distributed with the latest <strong>Zyxel appliances<\/strong>, in which I recently discovered some <a href=\"https:\/\/hnsecurity.it\/blog\/local-privilege-escalation-on-zyxel-usg-flex-h-series-cve-2025-1731\/\" target=\"_blank\" rel=\"noopener\">vulnerabilities<\/a>.<\/p>\n<p>Again, to <strong>run haruspex<\/strong> against our target binary, simply specify its path as the only argument:<\/p>\n<p><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex01-scaled.png\"><img decoding=\"async\" class=\"size-full wp-image-161096 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex01-scaled.png\" alt=\"\" width=\"2560\" height=\"1600\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex01-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex01-300x188.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex01-1024x640.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex01-768x480.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex01-1536x960.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex01-2048x1280.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex01-350x219.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><\/p>\n<\/div>\n<p>Haruspex is blazing fast! It took slightly more than 1 second to fully analyze and process a 43 KB binary file:<\/p>\n<p><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex02-scaled.png\"><img decoding=\"async\" class=\"aligncenter wp-image-161097 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex02-scaled.png\" alt=\"\" width=\"2560\" height=\"1600\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex02-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex02-300x188.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex02-1024x640.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex02-768x480.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex02-1536x960.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex02-2048x1280.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex02-350x219.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><\/p>\n<p>Enjoy decompiled pseudocode and\u00a0<a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\" target=\"_blank\" rel=\"noopener\">Semgrep<\/a>\u00a0scan results conveniently loaded in your favorite IDE, courtesy of the\u00a0<a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=trailofbits.sarif-explorer\" target=\"_blank\" rel=\"noopener\">SARIF Explorer extension<\/a>\u00a0for VS code.<\/p>\n<p><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex03-scaled.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-161101\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex03-scaled.png\" alt=\"\" width=\"2560\" height=\"1072\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex03-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex03-300x126.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex03-1024x429.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex03-768x321.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex03-1536x643.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex03-2048x857.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex03-350x147.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><\/p>\n<p>Unsurprisingly, the vulnerability lies at the highlighted line marked with\u00a0<em>VULN<\/em>\u00a0\ud83d\ude44.\u00a0<strong>The binary running with elevated privileges can be tricked into following a symbolic link\u00a0<\/strong>placed in\u00a0<em>\/tmp\/register_status<\/em>\u00a0by a local low-privileged user. This can be exploited to\u00a0<strong>overwrite arbitrary files<\/strong>\u00a0or\u00a0<strong>escalate privileges\u00a0<\/strong>to root.<\/p>\n<p>The full\u00a0<a href=\"https:\/\/github.com\/hnsecurity\/vulns\/blob\/main\/HNS-2025-10-zyxel-fermion.txt\" target=\"_blank\" rel=\"noopener\">advisory<\/a>\u00a0and proof-of-concept\u00a0<a href=\"https:\/\/github.com\/0xdea\/exploits\/blob\/master\/zyxel\/raptor_fermion\" target=\"_blank\" rel=\"noopener\">exploit<\/a>\u00a0are available on GitHub. Here&#8217;s a screenshot of the exploit in action for your viewing pleasure:<\/p>\n<p><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex04-scaled.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-161102\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex04-scaled.png\" alt=\"\" width=\"2560\" height=\"1667\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex04-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex04-300x195.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex04-1024x667.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex04-768x500.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex04-1536x1000.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex04-2048x1333.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/haruspex04-350x228.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><\/p>\n<p>For additional information on my<strong>\u00a0vulnerability research tools and workflow<\/strong>, please refer to the following articles:<\/p>\n<ul>\n<li aria-level=\"1\"><a href=\"https:\/\/hnsecurity.it\/blog\/semgrep-ruleset-for-c-c-vulnerability-research\" target=\"_blank\" rel=\"noopener\">https:\/\/hnsecurity.it\/blog\/semgrep-ruleset-for-c-c-vulnerability-research<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/hnsecurity.it\/blog\/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep\/\" target=\"_blank\" rel=\"noopener\">https:\/\/hnsecurity.it\/blog\/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep\/<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/hnsecurity.it\/blog\/big-update-to-my-semgrep-c-cpp-ruleset\" target=\"_blank\" rel=\"noopener\">https:\/\/hnsecurity.it\/blog\/big-update-to-my-semgrep-c-cpp-ruleset<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/hnsecurity.it\/blog\/a-collection-of-weggli-patterns-for-c-cpp-vulnerability-research\" target=\"_blank\" rel=\"noopener\">https:\/\/hnsecurity.it\/blog\/a-collection-of-weggli-patterns-for-c-cpp-vulnerability-research<\/a><\/li>\n<\/ul>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>The\u00a0<a href=\"https:\/\/hex-rays.com\/blog\/2024-plugin-contest-winner\" target=\"_blank\" rel=\"noopener\">award-winning<\/a>\u00a0idalib Rust bindings open\u00a0<strong>endless possibilities<\/strong>. Developers can leverage the entire Rust ecosystem to\u00a0<strong>combine IDA Pro with existing Rust libraries and tools<\/strong>, such as\u00a0<a href=\"https:\/\/github.com\/0xdea\/weggli-patterns\" target=\"_blank\" rel=\"noopener\">weggli<\/a>, or\u00a0<strong>use it as part of larger static\/dynamic analysis pipelines<\/strong>\u00a0alongside, for example,\u00a0<a href=\"https:\/\/crates.io\/crates\/libafl\" target=\"_blank\" rel=\"noopener\">libafl<\/a>.<\/p>\n<p>I hope this article has served as a useful introduction to idalib, and that you will consider contributing to this powerful Rust library and <strong>building your own tools<\/strong>\u00a0on top of it. Meanwhile, you can\u00a0<strong>download my updated vulnerability research tools<\/strong>\u00a0from\u00a0<a href=\"https:\/\/plugins.hex-rays.com\/author\/0xdea\" target=\"_blank\" rel=\"noopener\">Hex-Rays community plugins<\/a>,\u00a0<a href=\"https:\/\/lib.rs\/~0xdea\" target=\"_blank\" rel=\"noopener\">lib.rs<\/a>,\u00a0<a href=\"https:\/\/crates.io\/users\/0xdea\" target=\"_blank\" rel=\"noopener\">crates.io<\/a>, or\u00a0<a href=\"https:\/\/github.com\/0xdea\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<p>I would like to <strong>thank idalib&#8217;s maintainers<\/strong>\u00a0at Binarly and especially Sam L. Thomas (<a href=\"https:\/\/github.com\/xorpse\/\" target=\"_blank\" rel=\"noopener\">@xorpse<\/a>), who made me feel welcome since my first pull request. You are awesome \u270a<\/p>\n<p>Finally, huge thanks to Chris Hernandez for inviting me to write on the Hex-Rays blog. It&#8217;s been an honor. Until next time!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;The attack surface is the vulnerability. Finding a bug there is just a detail.&#8221; &#8212; Mark Dowd A\u00a0previous version of [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":161157,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[88,91],"tags":[206,211,216,82,87],"class_list":["post-161068","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tools","category-articles","tag-rust","tag-ida","tag-idalib","tag-vulnerability-research","tag-reverse-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>HN Security - Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2 -<\/title>\n<meta name=\"description\" content=\"HN Security&#039;s Technical Director Marco Ivaldi walks through using idalib&#039;s Rust bindings with IDA 9.2 to streamline vulnerability research.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HN Security - Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2 -\" \/>\n<meta property=\"og:description\" content=\"HN Security&#039;s Technical Director Marco Ivaldi walks through using idalib&#039;s Rust bindings with IDA 9.2 to streamline vulnerability research.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/\" \/>\n<meta property=\"og:site_name\" content=\"HN Security\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-14T07:42:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-16T12:36:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/10\/HEX-RAYS_5.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"836\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Marco Ivaldi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hnsec\" \/>\n<meta name=\"twitter:site\" content=\"@hnsec\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marco Ivaldi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/\"},\"author\":{\"name\":\"Marco Ivaldi\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/person\\\/89a4174c275f05d6148fb0fdedc8de4f\"},\"headline\":\"Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2\",\"datePublished\":\"2025-10-14T07:42:38+00:00\",\"dateModified\":\"2026-07-16T12:36:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/\"},\"wordCount\":1681,\"publisher\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/HEX-RAYS_5.png\",\"keywords\":[\"rust\",\"ida\",\"idalib\",\"vulnerability research\",\"reverse engineering\"],\"articleSection\":[\"Tools\",\"Articles\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/\",\"name\":\"HN Security - Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2 -\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/HEX-RAYS_5.png\",\"datePublished\":\"2025-10-14T07:42:38+00:00\",\"dateModified\":\"2026-07-16T12:36:04+00:00\",\"description\":\"HN Security's Technical Director Marco Ivaldi walks through using idalib's Rust bindings with IDA 9.2 to streamline vulnerability research.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/HEX-RAYS_5.png\",\"contentUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/HEX-RAYS_5.png\",\"width\":1600,\"height\":836},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\",\"name\":\"HN Security\",\"description\":\"Offensive Security Specialists\",\"publisher\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\",\"name\":\"HN Security\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/hn-libellula.jpg\",\"contentUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/hn-libellula.jpg\",\"width\":696,\"height\":696,\"caption\":\"HN Security\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/hnsec\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/hnsecurity\\\/\",\"https:\\\/\\\/github.com\\\/hnsecurity\",\"https:\\\/\\\/infosec.exchange\\\/@hnsec\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/person\\\/89a4174c275f05d6148fb0fdedc8de4f\",\"name\":\"Marco Ivaldi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g\",\"caption\":\"Marco Ivaldi\"},\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/author\\\/marco-ivaldi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HN Security - Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2 -","description":"HN Security's Technical Director Marco Ivaldi walks through using idalib's Rust bindings with IDA 9.2 to streamline vulnerability research.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/","og_locale":"it_IT","og_type":"article","og_title":"HN Security - Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2 -","og_description":"HN Security's Technical Director Marco Ivaldi walks through using idalib's Rust bindings with IDA 9.2 to streamline vulnerability research.","og_url":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/","og_site_name":"HN Security","article_published_time":"2025-10-14T07:42:38+00:00","article_modified_time":"2026-07-16T12:36:04+00:00","og_image":[{"width":1600,"height":836,"url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/10\/HEX-RAYS_5.png","type":"image\/png"}],"author":"Marco Ivaldi","twitter_card":"summary_large_image","twitter_creator":"@hnsec","twitter_site":"@hnsec","twitter_misc":{"Scritto da":"Marco Ivaldi","Tempo di lettura stimato":"9 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/#article","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/"},"author":{"name":"Marco Ivaldi","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/person\/89a4174c275f05d6148fb0fdedc8de4f"},"headline":"Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2","datePublished":"2025-10-14T07:42:38+00:00","dateModified":"2026-07-16T12:36:04+00:00","mainEntityOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/"},"wordCount":1681,"publisher":{"@id":"https:\/\/hnsecurity.it\/it\/#organization"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/10\/HEX-RAYS_5.png","keywords":["rust","ida","idalib","vulnerability research","reverse engineering"],"articleSection":["Tools","Articles"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/","url":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/","name":"HN Security - Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2 -","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/#primaryimage"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/10\/HEX-RAYS_5.png","datePublished":"2025-10-14T07:42:38+00:00","dateModified":"2026-07-16T12:36:04+00:00","description":"HN Security's Technical Director Marco Ivaldi walks through using idalib's Rust bindings with IDA 9.2 to streamline vulnerability research.","breadcrumb":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/#primaryimage","url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/10\/HEX-RAYS_5.png","contentUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/10\/HEX-RAYS_5.png","width":1600,"height":836},{"@type":"BreadcrumbList","@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hnsecurity.it\/it\/"},{"@type":"ListItem","position":2,"name":"Streamlining vulnerability research with the idalib Rust bindings for IDA 9.2"}]},{"@type":"WebSite","@id":"https:\/\/hnsecurity.it\/it\/#website","url":"https:\/\/hnsecurity.it\/it\/","name":"HN Security","description":"Offensive Security Specialists","publisher":{"@id":"https:\/\/hnsecurity.it\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hnsecurity.it\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/hnsecurity.it\/it\/#organization","name":"HN Security","url":"https:\/\/hnsecurity.it\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/logo\/image\/","url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/01\/hn-libellula.jpg","contentUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/01\/hn-libellula.jpg","width":696,"height":696,"caption":"HN Security"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/hnsec","https:\/\/www.linkedin.com\/company\/hnsecurity\/","https:\/\/github.com\/hnsecurity","https:\/\/infosec.exchange\/@hnsec"]},{"@type":"Person","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/person\/89a4174c275f05d6148fb0fdedc8de4f","name":"Marco Ivaldi","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g","caption":"Marco Ivaldi"},"url":"https:\/\/hnsecurity.it\/it\/blog\/author\/marco-ivaldi\/"}]}},"jetpack_featured_media_url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/10\/HEX-RAYS_5.png","_links":{"self":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/161068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/comments?post=161068"}],"version-history":[{"count":44,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/161068\/revisions"}],"predecessor-version":[{"id":161477,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/161068\/revisions\/161477"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/media\/161157"}],"wp:attachment":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/media?parent=161068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/categories?post=161068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/tags?post=161068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}