{"id":4418,"date":"2025-02-25T07:26:34","date_gmt":"2025-02-25T06:26:34","guid":{"rendered":"https:\/\/security.humanativaspa.it\/?p=4418"},"modified":"2026-07-17T15:07:29","modified_gmt":"2026-07-17T15:07:29","slug":"streamlining-vulnerability-research-with-ida-pro-and-rust","status":"publish","type":"post","link":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/","title":{"rendered":"Streamlining vulnerability research with IDA Pro and Rust"},"content":{"rendered":"<blockquote><p><em>&#8220;Rebels on the rise, we have sacrificed<br \/>\nBeen knocked down like a poltergeist<br \/>\nNocturnal by blood, in darkness we stand<br \/>\nWe will prevail in this Rustyland&#8221;<br \/>\n&#8212; Krowdexx, Nocturnal Rebellion (2024)<\/em><\/p><\/blockquote>\n<h3>TL;DR<\/h3>\n<p>I&#8217;ve released some <strong>new tools<\/strong> to assist with <strong>reverse engineering and vulnerability research against binary targets<\/strong>, based on my <a href=\"https:\/\/hnsecurity.it\/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep\/\">previous work<\/a>:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/0xdea\/rhabdomancer\">rhabdomancer<\/a>: IDA Pro headless plugin that <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><a href=\"https:\/\/github.com\/0xdea\/haruspex\">haruspex<\/a>: IDA Pro headless plugin that <strong>extracts pseudo-code<\/strong> generated by IDA Pro&#8217;s decompiler in a format suitable to be imported into an IDE or parsed by static analysis tools such as <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\" rel=\"noopener ugc nofollow\">Semgrep<\/a>\u00a0or\u00a0<a href=\"https:\/\/github.com\/0xdea\/weggli-patterns\" rel=\"noopener ugc nofollow\">weggli<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/0xdea\/augur\">augur<\/a>: IDA Pro headless plugin that <strong>extracts strings and related pseudo-code<\/strong> from a binary file. It stores pseudo-code of functions that reference strings in an organized directory tree.<\/li>\n<\/ul>\n<p>They&#8217;re written in <strong>Rust<\/strong> and leverage Hex-Rays&#8217;s <a href=\"https:\/\/docs.hex-rays.com\/release-notes\/9_0#headless-processing-with-idalib\">IDA Pro 9 idalib<\/a> and Binarly&#8217;s <a href=\"https:\/\/lib.rs\/idalib\">idalib Rust bindings<\/a> for the <a href=\"https:\/\/cpp.docs.hex-rays.com\/\">IDA SDK<\/a>, to achieve a <strong>blazing fast, headless user experience<\/strong>. While working on these tools, I also contributed a number of <a href=\"https:\/\/github.com\/binarly-io\/idalib\/pulls?q=author%3A0xdea\">new features<\/a> to idalib.<\/p>\n<h3>Once upon a time in Rustyland<\/h3>\n<p>After approaching Rust and having explored some basic <a href=\"https:\/\/hnsecurity.it\/learning-rust-for-fun-and-backdoo-rs\/\">offensive<\/a> <a href=\"https:\/\/hnsecurity.it\/an-offensive-rust-encore\">applications<\/a>, I decided it was time for <strong>my first serious Rust project<\/strong>. Last October, <a href=\"https:\/\/crates.io\/crates\/idalib\/0.1.0%2B9.0.240930\">idalib v0.1.0<\/a> was announced, which gave me an idea: port to IDA Pro some of my <a href=\"https:\/\/github.com\/0xdea\/ghidra-scripts\">Ghidra scripts<\/a> that aim to <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&#8217;s <strong>idalib Rust bindings<\/strong> enable <a href=\"https:\/\/docs.hex-rays.com\/release-notes\/9_0#headless-processing-with-idalib\">IDA Pro 9<\/a> users to <strong>develop standalone analysis tools<\/strong> based on the <a href=\"https:\/\/cpp.docs.hex-rays.com\/\">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 <a href=\"https:\/\/lib.rs\/idalib\">idalib<\/a> marked the start of a new chapter in my Rust journey that saw me publish<strong>\u00a0new vulnerability research tools<\/strong> built on top of it, and contribute a number of <a href=\"https:\/\/github.com\/binarly-io\/idalib\/pulls?q=author%3A0xdea\">new features<\/a> to <strong>idalib<\/strong> itself. And I learned a lot in the process!<\/p>\n<figure id=\"attachment_4793\" aria-describedby=\"caption-attachment-4793\" style=\"width: 811px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-4793 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-13-at-09.32.12-1.png\" alt=\"\" width=\"811\" height=\"164\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-13-at-09.32.12-1.png 811w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-13-at-09.32.12-1-300x61.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-13-at-09.32.12-1-768x155.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-13-at-09.32.12-1-350x71.png 350w\" sizes=\"(max-width: 811px) 100vw, 811px\" \/><figcaption id=\"caption-attachment-4793\" class=\"wp-caption-text\">My GitHub activity really took off since I discovered the marvels of Rust<\/figcaption><\/figure>\n<p>My main <strong>idalib contributions<\/strong> to date are:<\/p>\n<ul>\n<li>Support for the <a href=\"https:\/\/github.com\/binarly-io\/idalib\/pull\/1\">comments<\/a> API.<\/li>\n<li>Support for the (almost undocumented) <a href=\"https:\/\/github.com\/binarly-io\/idalib\/pull\/4\">bookmarks<\/a> APIs.<\/li>\n<li>Support for <a href=\"https:\/\/github.com\/binarly-io\/idalib\/pull\/12\">searching<\/a> text and immediate values, which incidentally led me to discover <a href=\"https:\/\/github.com\/binarly-io\/idalib\/pull\/12#issuecomment-2476708362\">a curious bug<\/a> in IDA Pro.<\/li>\n<li>Support for working with the list of <a href=\"https:\/\/github.com\/binarly-io\/idalib\/pull\/23\">strings<\/a> present in a binary file.<\/li>\n<li>Various other 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>As a last-minute update, the idalib Rust bindings were just <strong>awarded<\/strong> third place in the annual <a href=\"https:\/\/hex-rays.com\/blog\/2024-plugin-contest-winners\">Hex-Rays Plugin Contest<\/a>! \ud83c\udf8a This is a well-deserved recognition, and I&#8217;m happy to be a <strong>humble contributor<\/strong> of this awesome <a href=\"https:\/\/github.com\/binarly-io\/idalib\">project<\/a> \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<p>The maintainers of idalib are wonderful people, and I <strong>encourage you to contribute<\/strong> to its development. <a href=\"https:\/\/github.com\/xorpse\/\">Sam<\/a> has also published some related repositories that you should check out as well:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/xorpse\/parascope\">parascope<\/a>: a <a href=\"https:\/\/github.com\/weggli-rs\/weggli\">weggli<\/a> ruleset scanner for source code and binaries.<\/li>\n<li><a href=\"https:\/\/github.com\/xorpse\/weggli-ruleset\">weggli-ruleset<\/a>: a utility crate to help manage weggli patterns, such as <a href=\"https:\/\/hnsecurity.it\/a-collection-of-weggli-patterns-for-c-cpp-vulnerability-research\/\">those I published<\/a> last year.<\/li>\n<li><a href=\"https:\/\/github.com\/xorpse\/weggli\">wegglix<\/a>: a <a href=\"https:\/\/github.com\/weggli-rs\/weggli\">weggli<\/a> fork updated and modified for a more pleasant library experience.<\/li>\n<\/ul>\n<p>Now, before we take a look at the\u00a0<strong>new tools<\/strong>, as customary in this <a href=\"https:\/\/hnsecurity.it\/tag\/rust\/\">series<\/a>, let&#8217;s pick an appropriate <strong>soundtrack<\/strong> and recommend some <strong>learning resources<\/strong> to deepen our knowledge of Rust.<\/p>\n<h3>Hack with a soundtrack<\/h3>\n<p>Today&#8217;s soundtrack to make you <strong>hack harder<\/strong> is <a href=\"https:\/\/www.instagram.com\/krowdexx_djs\/\">Krowdexx<\/a>&#8216;s set at the <a href=\"https:\/\/rustyland-festival.de\/\">Rustyland Festival<\/a> 2024. How appropriate! \ud83d\ude45\u200d\u2642\ufe0f\ud83d\ude45\u200d\u2642\ufe0f<\/p>\n<p><iframe title=\"KROWDEXX LIVE @ RUSTYLAND FESTIVAL 2024\" width=\"840\" height=\"473\" src=\"https:\/\/www.youtube.com\/embed\/Jn3_oozDoAw?feature=oembed&#038;width=840&#038;height=1000&#038;discover=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h3>Learning resources<\/h3>\n<p>As usual, the main takeaway should be to <strong>get your hands dirty<\/strong> as soon as possible and hack together some code that makes you happy and, who knows, perhaps even proud. And <strong>have fun doing it<\/strong>! This is super important, at least for me&#8230;<\/p>\n<p>With that in mind, the <strong>best Rust learning resources<\/strong> I perused during these past few months are:<\/p>\n<ul>\n<li><a href=\"https:\/\/doc.rust-lang.org\/nomicon\/\">The Rustonomicon<\/a>. Prepare for a wild ride beyond the boundaries of our reality. It&#8217;s time to read the &#8216;nomicon, especially if you&#8217;re going to dabble in the dark arts of unsafe Rust like I keep doing for some reason&#8230;<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/playlist?list=PLqbS7AVVErFiWDOAVrPt7aYmnuuOLYvOa\">Crust of Rust<\/a>. I&#8217;m a <a href=\"https:\/\/nostarch.com\/\">No Starch Press<\/a> fan and as such I can&#8217;t help but recommend\u00a0<a href=\"https:\/\/nostarch.com\/rust-rustaceans\">Rust for Rustaceans<\/a>, although this seems to be one of those rare cases where I actually prefer the <a href=\"https:\/\/www.youtube.com\/@jonhoo\">movie version<\/a> \ud83e\udd37<\/li>\n<li><a href=\"https:\/\/www.manning.com\/books\/code-like-a-pro-in-rust\">Code Like a Pro in Rust<\/a>. This book and its beginner-oriented companion <a href=\"https:\/\/www.manning.com\/books\/rust-in-action\">Rust in Action<\/a> are a must read for all serious Rust programmers.<\/li>\n<li><a href=\"https:\/\/www.howtocodeit.com\/\">How To Code It<\/a>. This website and newsletter feature a growing collection of high-quality practical guides that will show you how to take your Rust to the next level.<\/li>\n<li><a href=\"https:\/\/github.com\/pretzelhammer\/rust-blog\">Pretzelhammer&#8217;s Rust Blog<\/a>. This GitHub repository features well-curated educational content for Rust beginners and advanced beginners, such as a <a href=\"https:\/\/github.com\/pretzelhammer\/rust-blog\/blob\/master\/posts\/tour-of-rusts-standard-library-traits.md\">tour of standard library traits<\/a> and a popular article on <a href=\"https:\/\/github.com\/pretzelhammer\/rust-blog\/blob\/master\/posts\/common-rust-lifetime-misconceptions.md\">lifetime misconceptions<\/a>.<\/li>\n<li><a href=\"https:\/\/corrode.dev\/blog\/\">Corrode Blog<\/a>. This blog features an ongoing series of articles about\u00a0idiomatic Rust\u00a0and\u00a0best practices, including some detailed tips for <a href=\"https:\/\/corrode.dev\/blog\/tips-for-faster-rust-compile-times\/\">faster builds<\/a> and long-term <a href=\"https:\/\/corrode.dev\/blog\/long-term-rust-maintenance\/\">project maintenance<\/a>.<\/li>\n<li><a href=\"https:\/\/upsuper.github.io\/rust-cheatsheet\/\">Type-based Rust cheatsheet<\/a>. Compact cheatsheet organized by Rust type, packed with useful ways to process and convert them. Not particularly advanced, but still a handy companion to <a href=\"https:\/\/cheats.rs\/\">cheats.rs<\/a>.<\/li>\n<li><a href=\"https:\/\/rust-lang-nursery.github.io\/rust-cookbook\/\">Rust Cookbook<\/a>. A collection of simple examples that demonstrate good practices to accomplish common programming tasks, using the crates of the Rust ecosystem.<\/li>\n<li><a href=\"https:\/\/doc.rust-lang.org\/cargo\/reference\/publishing.html\">Publishing on crates.io<\/a>. This and some <a href=\"https:\/\/keepachangelog.com\/en\/1.0.0\/\">other<\/a> <a href=\"https:\/\/github.com\/johnthagen\/min-sized-rust\">useful<\/a> <a href=\"https:\/\/docs.rs\/about\/builds\">resources<\/a> will come in handy when it&#8217;s time to publish your first crate on crates.io \ud83c\udf89<\/li>\n<li><a href=\"https:\/\/this-week-in-rust.org\/\">This week in Rust<\/a>. This is the main source to stay up to date with events, learning resources, and recent developments in the Rust community.<\/li>\n<\/ul>\n<p>As a final note, on the occasion of its 10th edition I enrolled to the <a href=\"https:\/\/adventofcode.com\/2024\">Advent of Code 2024<\/a>, with some <a href=\"https:\/\/github.com\/0xdea\/aoc-2024-in-rust\">amazingly ugly code<\/a>! \ud83d\ude05 It was challenging and fun, and I can now tell without a shadow of a doubt that these puzzles aren&#8217;t really my cup of tea&#8230;<\/p>\n<figure id=\"attachment_4833\" aria-describedby=\"caption-attachment-4833\" style=\"width: 740px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-4833\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2024\/12\/AoC-1-300x243.png\" alt=\"\" width=\"740\" height=\"600\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2024\/12\/AoC-1-300x243.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2024\/12\/AoC-1-768x622.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2024\/12\/AoC-1-350x284.png 350w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2024\/12\/AoC-1.png 881w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/><figcaption id=\"caption-attachment-4833\" class=\"wp-caption-text\">I didn&#8217;t fare too badly in AoC after all, considering I&#8217;ve been AFK for a substantial chunk of December<\/figcaption><\/figure>\n<p>It&#8217;s now time to introduce my brand new tools built on top of idalib \ud83e\udd41<\/p>\n<h3>Meet rhabdomancer<\/h3>\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<p><a href=\"https:\/\/github.com\/0xdea\/rhabdomancer\">Rhabdomancer<\/a> is the Rust port of <a href=\"https:\/\/github.com\/0xdea\/ghidra-scripts\/blob\/main\/Rhabdomancer.java\">one<\/a> of my original <a href=\"https:\/\/github.com\/0xdea\/ghidra-scripts\">Ghidra scripts<\/a>, that I&#8217;ve described in my <a href=\"https:\/\/hnsecurity.it\/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep\/\">article<\/a> <em>&#8220;Automating binary vulnerability discovery with Ghidra and Semgrep&#8221;<\/em>.<\/p>\n<p>It&#8217;s an <strong>IDA Pro headless plugin<\/strong> that <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. Its main <strong>features<\/strong> are:<\/p>\n<ul>\n<li><strong>Blazing fast, headless user experience<\/strong> courtesy of IDA Pro 9 and Binarly\u2019s idalib Rust bindings.<\/li>\n<li>Support for C\/C++ binary targets compiled for <strong>any architecture implemented by IDA Pro<\/strong>.<\/li>\n<li><strong>Bad API function call locations<\/strong> are printed to stdout and marked in the IDB.<\/li>\n<li>Known bad API functions are <strong>grouped in tiers of badness<\/strong> to help prioritize the audit work.\n<ul>\n<li>[BAD 0] High priority &#8211; Functions that are generally considered insecure<\/li>\n<li>[BAD 1] Medium priority &#8211; Interesting functions that should be checked for insecure use cases.<\/li>\n<li>[BAD 2] Low priority &#8211; Code paths involving these functions should be carefully checked.<\/li>\n<\/ul>\n<\/li>\n<li>The list of known bad API functions can be <strong>easily customized<\/strong> by editing <em>conf\/rhabdomancer.toml<\/em>.<\/li>\n<\/ul>\n<p>Additional information on rhabdomancer&#8217;s features and usage is available at <a href=\"https:\/\/crates.io\/crates\/rhabdomancer\">crates.io<\/a> and in the official <a href=\"https:\/\/0xdeadbeef.info\/rhabdomancer\/rhabdomancer\/\">documentation<\/a>.<\/p>\n<p>Let&#8217;s <strong>install<\/strong> it and take it for a spin! The easiest way to get the latest release is via <a href=\"https:\/\/crates.io\/crates\/rhabdomancer\">crates.io<\/a>:<\/p>\n<ol>\n<li>Download, install, and configure IDA Pro (see\u00a0<a href=\"https:\/\/hex-rays.com\/ida-pro\">https:\/\/hex-rays.com\/ida-pro<\/a>).<\/li>\n<li>Download and extract the IDA SDK (see\u00a0<a href=\"https:\/\/docs.hex-rays.com\/developer-guide\">https:\/\/docs.hex-rays.com\/developer-guide<\/a>).<\/li>\n<li>Install rhabdomancer as follows:<\/li>\n<\/ol>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"minimal\">$ export IDASDKDIR=\/path\/to\/idasdk90 \r\n$ export IDADIR=\/path\/to\/ida # if not set, the build script will check common locations \r\n$ cargo install rhabdomancer<\/pre>\n<p>Only the <strong>UNIX target family<\/strong> is currently supported. I might port the tool to Windows if there&#8217;s some interest.<\/p>\n<p>Now let&#8217;s <strong>run rhabdomancer<\/strong> against a binary file. Our target of choice is the legendary <strong>dtprintinfo SPARC binary<\/strong>, that was featured in countless <a href=\"https:\/\/github.com\/0xdea\/raptor_infiltrate20\">advisories<\/a>, <a href=\"https:\/\/github.com\/0xdea\/exploits\">exploits<\/a>, <a href=\"https:\/\/youtu.be\/Nc9ZLTb2hQ8\">talks<\/a>, and <a href=\"https:\/\/hnsecurity.it\/nothing-new-under-the-sun\/\">articles<\/a> (even in <a href=\"https:\/\/phrack.org\/issues\/70\/13#article\">Phrack<\/a>!) by yours truly and other old-school hackers over the years&#8230; Here&#8217;s to CDE! So long, and thanks for all the shells! \ud83e\udd42 #\ufe0f\u20e3<\/p>\n<figure id=\"attachment_4932\" aria-describedby=\"caption-attachment-4932\" style=\"width: 2940px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/01\/rhabdo1-1.png\"><img decoding=\"async\" class=\"wp-image-4932 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/01\/rhabdo1-1.png\" alt=\"\" width=\"2940\" height=\"1838\" \/><\/a><figcaption id=\"caption-attachment-4932\" class=\"wp-caption-text\">To run rhabdomancer against a target binary, simply specify the binary path as the only argument<\/figcaption><\/figure>\n<figure id=\"attachment_4933\" aria-describedby=\"caption-attachment-4933\" style=\"width: 2940px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/01\/rhabdo2-1.png\"><img decoding=\"async\" class=\"wp-image-4933 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/01\/rhabdo2-1.png\" alt=\"\" width=\"2940\" height=\"1838\" \/><\/a><figcaption id=\"caption-attachment-4933\" class=\"wp-caption-text\">Rhabdomancer is blazing fast! It took only half a second to fully analyze and process a 350 KB binary file<\/figcaption><\/figure>\n<figure id=\"attachment_4934\" aria-describedby=\"caption-attachment-4934\" style=\"width: 2940px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/01\/rhabdo3-1.png\"><img decoding=\"async\" class=\"wp-image-4934 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/01\/rhabdo3-1.png\" alt=\"\" width=\"2940\" height=\"1836\" \/><\/a><figcaption id=\"caption-attachment-4934\" class=\"wp-caption-text\">Bad API function call locations are bookmarked in the IDB: enjoy your results conveniently collected in an IDA Pro window<\/figcaption><\/figure>\n<p>That&#8217;s it! We don&#8217;t have enough space for a full code walkthrough. However, you can <strong>browse the source code on GitHub<\/strong>:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/0xdea\/rhabdomancer\">https:\/\/github.com\/0xdea\/rhabdomancer<\/a><\/li>\n<\/ul>\n<p>It should be easy to follow. You can even check <a href=\"https:\/\/github.com\/0xdea\/rhabdomancer\/commits\/master\/\">all commits<\/a> to inspect my reasoning behind each implementation choice, if you&#8217;re so inclined.<\/p>\n<h3>What about haruspex and augur?<\/h3>\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\">Haruspex<\/a> is the Rust port of <a href=\"https:\/\/github.com\/0xdea\/ghidra-scripts\/blob\/main\/Haruspex.java\">another<\/a> Ghidra script of mine. It&#8217;s an <strong>IDA Pro headless plugin<\/strong> that <strong>extracts pseudo-code<\/strong> generated by IDA Pro&#8217;s decompiler in a format that should be suitable to be imported into an IDE or parsed by static analysis tools such as <a href=\"https:\/\/semgrep.dev\/\" rel=\"nofollow noopener noreferrer\">Semgrep<\/a>\u00a0or\u00a0<a href=\"https:\/\/github.com\/weggli-rs\/weggli\" rel=\"nofollow noopener noreferrer\">weggli<\/a>. Its main <strong>features<\/strong> are:<\/p>\n<ul>\n<li><strong>Blazing fast, headless user experience<\/strong> courtesy of IDA Pro 9 and Binarly&#8217;s idalib Rust bindings.<\/li>\n<li>Support for binary targets for <strong>any architecture implemented by IDA Pro&#8217;s Hex-Rays decompiler<\/strong>.<\/li>\n<li>Pseudo-code of each function is <strong>stored in a separated file<\/strong> in the output directory for easy inspection.<\/li>\n<li><strong>External crates<\/strong> can invoke <em>decompile_to_file<\/em> to decompile a function and save its pseudo-code to disk.<\/li>\n<\/ul>\n<p>Additional information on haruspex&#8217;s features and usage is available at <a href=\"https:\/\/crates.io\/crates\/haruspex\">crates.io<\/a> and in the official <a href=\"https:\/\/0xdeadbeef.info\/haruspex\/haruspex\/\">documentation<\/a>.<\/p>\n<p><strong>Installation<\/strong> and <strong>usage<\/strong> are akin to what I&#8217;ve described earlier for rhabdomancer. The most notable difference is that haruspex <strong>can also be used as a library<\/strong> by third-party crates to decompile specific functions and save pseudo-code to disk. An example of this is <a href=\"https:\/\/github.com\/0xdea\/augur\">augur<\/a>, another IDA Pro headless plugin that <strong>extracts strings and related pseudo-code<\/strong> from a binary file. I encourage you to check it out.<\/p>\n<p>Coming back to haruspex, let&#8217;s try it out against a sample binary. This time, our target of choice is an ARM aarch64 binary distributed with recent <strong>Zyxel appliances<\/strong>, part of an <strong>ongoing vulnerability research effort<\/strong> (<a href=\"https:\/\/hnsecurity.it\/tag\/zyxel\/\">stay tuned to our blog<\/a> to not miss any updates on this topic).<\/p>\n<figure id=\"attachment_5246\" aria-describedby=\"caption-attachment-5246\" style=\"width: 2940px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/02\/zylog01-1.png\"><img decoding=\"async\" class=\"wp-image-5246 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/02\/zylog01-1.png\" alt=\"\" width=\"2940\" height=\"1838\" \/><\/a><figcaption id=\"caption-attachment-5246\" class=\"wp-caption-text\">Again, to run haruspex against a target binary, simply specify the binary path as the only argument<\/figcaption><\/figure>\n<figure id=\"attachment_5248\" aria-describedby=\"caption-attachment-5248\" style=\"width: 2940px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/02\/zylog03-1.png\"><img decoding=\"async\" class=\"wp-image-5248 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/02\/zylog03-1.png\" alt=\"\" width=\"2940\" height=\"1838\" \/><\/a><figcaption id=\"caption-attachment-5248\" class=\"wp-caption-text\">Haruspex is blazing fast! It took less than 3 seconds to fully analyze and decompile a 100 KB binary file<\/figcaption><\/figure>\n<figure id=\"attachment_5249\" aria-describedby=\"caption-attachment-5249\" style=\"width: 3440px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/02\/zylog04-1.png\"><img decoding=\"async\" class=\"wp-image-5249 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/02\/zylog04-1.png\" alt=\"\" width=\"3440\" height=\"1440\" \/><\/a><figcaption id=\"caption-attachment-5249\" class=\"wp-caption-text\">Enjoy decompiled pseudo-code and Semgrep scan results conveniently loaded in your favorite IDE<\/figcaption><\/figure>\n<p>For additional information on my <strong>vulnerability research tools and methodology<\/strong>, please refer to the following articles:<\/p>\n<ul>\n<li><a href=\"https:\/\/hnsecurity.it\/semgrep-ruleset-for-c-c-vulnerability-research\/\">https:\/\/hnsecurity.it\/semgrep-ruleset-for-c-c-vulnerability-research\/<\/a><\/li>\n<li><a href=\"https:\/\/hnsecurity.it\/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep\/\">https:\/\/hnsecurity.it\/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep\/<\/a><\/li>\n<li><a href=\"https:\/\/hnsecurity.it\/big-update-to-my-semgrep-c-cpp-ruleset\/\">https:\/\/hnsecurity.it\/big-update-to-my-semgrep-c-cpp-ruleset\/<\/a><\/li>\n<li><a href=\"https:\/\/hnsecurity.it\/a-collection-of-weggli-patterns-for-c-cpp-vulnerability-research\/\">https:\/\/hnsecurity.it\/a-collection-of-weggli-patterns-for-c-cpp-vulnerability-research\/<\/a><\/li>\n<\/ul>\n<p>You can <strong>browse haruspex&#8217;s and augur&#8217;s source code on GitHub<\/strong>:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/0xdea\/haruspex\">https:\/\/github.com\/0xdea\/haruspex<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/0xdea\/augur\">https:\/\/github.com\/0xdea\/augur<\/a><\/li>\n<\/ul>\n<h3>Conclusion<\/h3>\n<p>The <a href=\"https:\/\/hex-rays.com\/blog\/2024-plugin-contest-winners\">award-winning<\/a> idalib Rust bindings open <strong>endless possibilities<\/strong>. Developers can leverage the entire Rust ecosystem to <strong>combine IDA Pro with existing Rust libraries and tools<\/strong>, such as <a href=\"https:\/\/github.com\/0xdea\/weggli-patterns\" rel=\"noopener ugc nofollow\">weggli<\/a>, or <strong>use it as part of larger static\/dynamic analysis pipelines<\/strong> alongside, for example, <a href=\"https:\/\/crates.io\/crates\/libafl\">libafl<\/a>.<\/p>\n<p>I would like to <strong>thank idalib&#8217;s maintainers<\/strong> at Binarly and especially Sam L. Thomas (<a href=\"https:\/\/github.com\/xorpse\/\">@xorpse<\/a>), who made me feel welcome since my first pull request. You&#8217;re awesome \u270a<\/p>\n<p>I hope this article has served as a useful introduction to idalib, and that you&#8217;ll consider <strong>building your own tools<\/strong> on top of this powerful Rust library. Meanwhile, you can <strong>download my brand new vulnerability research tools<\/strong> from <a href=\"https:\/\/lib.rs\/~0xdea\">lib.rs<\/a>, <a href=\"https:\/\/crates.io\/users\/0xdea\">crates.io<\/a>, or <a href=\"https:\/\/github.com\/0xdea\">GitHub<\/a>.<\/p>\n<p>I&#8217;ll keep working on my tools and on idalib itself to add new features and improve the current ones. Our Rust journey continues&#8230; Until <a href=\"https:\/\/hnsecurity.it\/tag\/rust\/\">next time<\/a>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Rebels on the rise, we have sacrificed Been knocked down like a poltergeist Nocturnal by blood, in darkness we stand [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":159953,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[88,91],"tags":[82,87,206,211,216],"class_list":["post-4418","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tools","category-articles","tag-vulnerability-research","tag-reverse-engineering","tag-rust","tag-ida","tag-idalib"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>HN Security - Streamlining vulnerability research with IDA Pro and Rust - Tools<\/title>\n<meta name=\"description\" content=\"Offensive Rust series article that introduces new IDA plugins (rhabdomancer, haruspex, augur) 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-ida-pro-and-rust\/\" \/>\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 IDA Pro and Rust - Tools\" \/>\n<meta property=\"og:description\" content=\"Offensive Rust series article that introduces new IDA plugins (rhabdomancer, haruspex, augur) to streamline vulnerability research.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/\" \/>\n<meta property=\"og:site_name\" content=\"HN Security\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-25T06:26:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-17T15:07:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/RUST.jpg\" \/>\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\/jpeg\" \/>\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=\"10 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/\"},\"author\":{\"name\":\"Marco Ivaldi\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/person\\\/89a4174c275f05d6148fb0fdedc8de4f\"},\"headline\":\"Streamlining vulnerability research with IDA Pro and Rust\",\"datePublished\":\"2025-02-25T06:26:34+00:00\",\"dateModified\":\"2026-07-17T15:07:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/\"},\"wordCount\":2105,\"publisher\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/RUST.jpg\",\"keywords\":[\"vulnerability research\",\"reverse engineering\",\"rust\",\"ida\",\"idalib\"],\"articleSection\":[\"Tools\",\"Articles\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/\",\"name\":\"HN Security - Streamlining vulnerability research with IDA Pro and Rust - Tools\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/RUST.jpg\",\"datePublished\":\"2025-02-25T06:26:34+00:00\",\"dateModified\":\"2026-07-17T15:07:29+00:00\",\"description\":\"Offensive Rust series article that introduces new IDA plugins (rhabdomancer, haruspex, augur) to streamline vulnerability research.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/#primaryimage\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/RUST.jpg\",\"contentUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/RUST.jpg\",\"width\":1600,\"height\":836,\"caption\":\"Rust logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/streamlining-vulnerability-research-with-ida-pro-and-rust\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Streamlining vulnerability research with IDA Pro and Rust\"}]},{\"@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 IDA Pro and Rust - Tools","description":"Offensive Rust series article that introduces new IDA plugins (rhabdomancer, haruspex, augur) 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-ida-pro-and-rust\/","og_locale":"it_IT","og_type":"article","og_title":"HN Security - Streamlining vulnerability research with IDA Pro and Rust - Tools","og_description":"Offensive Rust series article that introduces new IDA plugins (rhabdomancer, haruspex, augur) to streamline vulnerability research.","og_url":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/","og_site_name":"HN Security","article_published_time":"2025-02-25T06:26:34+00:00","article_modified_time":"2026-07-17T15:07:29+00:00","og_image":[{"width":1600,"height":836,"url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/RUST.jpg","type":"image\/jpeg"}],"author":"Marco Ivaldi","twitter_card":"summary_large_image","twitter_creator":"@hnsec","twitter_site":"@hnsec","twitter_misc":{"Scritto da":"Marco Ivaldi","Tempo di lettura stimato":"10 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/#article","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/"},"author":{"name":"Marco Ivaldi","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/person\/89a4174c275f05d6148fb0fdedc8de4f"},"headline":"Streamlining vulnerability research with IDA Pro and Rust","datePublished":"2025-02-25T06:26:34+00:00","dateModified":"2026-07-17T15:07:29+00:00","mainEntityOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/"},"wordCount":2105,"publisher":{"@id":"https:\/\/hnsecurity.it\/it\/#organization"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/RUST.jpg","keywords":["vulnerability research","reverse engineering","rust","ida","idalib"],"articleSection":["Tools","Articles"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/","url":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/","name":"HN Security - Streamlining vulnerability research with IDA Pro and Rust - Tools","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/#primaryimage"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/RUST.jpg","datePublished":"2025-02-25T06:26:34+00:00","dateModified":"2026-07-17T15:07:29+00:00","description":"Offensive Rust series article that introduces new IDA plugins (rhabdomancer, haruspex, augur) to streamline vulnerability research.","breadcrumb":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/#primaryimage","url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/RUST.jpg","contentUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/RUST.jpg","width":1600,"height":836,"caption":"Rust logo"},{"@type":"BreadcrumbList","@id":"https:\/\/hnsecurity.it\/it\/blog\/streamlining-vulnerability-research-with-ida-pro-and-rust\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hnsecurity.it\/it\/"},{"@type":"ListItem","position":2,"name":"Streamlining vulnerability research with IDA Pro and Rust"}]},{"@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\/09\/RUST.jpg","_links":{"self":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/4418","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=4418"}],"version-history":[{"count":5,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/4418\/revisions"}],"predecessor-version":[{"id":161116,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/4418\/revisions\/161116"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/media\/159953"}],"wp:attachment":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/media?parent=4418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/categories?post=4418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/tags?post=4418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}