{"id":391,"date":"2021-08-25T16:12:23","date_gmt":"2021-08-25T14:12:23","guid":{"rendered":"https:\/\/security.humanativaspa.it\/?p=391"},"modified":"2025-09-15T13:37:26","modified_gmt":"2025-09-15T13:37:26","slug":"ghidra2frida-the-new-bridge-between-ghidra-and-frida","status":"publish","type":"post","link":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/","title":{"rendered":"ghidra2frida &#8211; The new bridge between Ghidra and Frida"},"content":{"rendered":"<p>Hi!<\/p>\n<p>Today I&#8217;m publishing a new <a href=\"https:\/\/ghidra-sre.org\/\">Ghidra<\/a> extension based on the same idea of <a href=\"https:\/\/github.com\/federicodotta\/Brida\">Brida<\/a>, a Burp Suite extension created with my colleague Piergiovanni. The idea is simple: everything is better if it can take advantage of <a href=\"https:\/\/www.frida.re\/\">Frida<\/a>&#8216;s super powers! \ud83d\ude00<\/p>\n<p><strong>ghidra2frida<\/strong> is a Ghidra extension that, working as a bridge between Ghidra and Frida, lets you create powerful scripts that take advantage of Frida&#8217;s dynamic analysis engine to improve Ghidra&#8217;s statical analysis features. It supports all platforms supported by Frida (Windows, macOS, Linux, iOS, Android, and QNX).<\/p>\n<p>The extension adds a control panel to Ghidra with all the tools needed to create the bridge between Ghidra and Frida. When the bridge is up, a service is offered to all Ghidra scripts and extensions. Thanks to this service, <strong>Ghidra scripts and extensions can take advantage of the dynamic instrumentation features of Frida with a couple lines of code<\/strong>.<\/p>\n<p>As with the other tools I&#8217;ve written, the idea came from practical needs, such as:<\/p>\n<ol>\n<li>A binary I was analyzing had some heavily obfuscated and encrypted strings. The quick and dirty solution I thought about was to decrypt\/deobfuscate those strings using the same functions used by the target binary. Frida was a great candidate for that!<\/li>\n<li>An iOS mobile application I was analyzing had many mangled Swift functions. Ghidra Ninja released a <a href=\"https:\/\/github.com\/ghidraninja\/ghidra_scripts\/blob\/master\/swift_demangler.py\">Ghidra script<\/a> that demangles Swift functions, but it uses a binary not available on all operating systems. Furthermore, demangling functions may vary between different versions of Swift. Demangling directly on the mobile phone with Frida seemed to be a good solution to both problems.<\/li>\n<\/ol>\n<p>Let&#8217;s have a closer look of how it works: ghidra2frida is a <strong>Ghidra extension<\/strong> that can be imported from the &#8220;File&#8221; -&gt; &#8220;Install Extensions&#8221; menu option. Once installed, ghidra2frida graphical pane can be opened from the &#8220;Window&#8221; -&gt; &#8220;ghidra2frida&#8221; menu of Ghidra CodeBrowser and can be positioned anywhere, as any other Ghidra tool.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-395\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen1edit-1.png\" alt=\"\" width=\"894\" height=\"664\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen1edit-1.png 894w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen1edit-1-300x223.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen1edit-1-768x570.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen1edit-1-350x260.png 350w\" sizes=\"(max-width: 894px) 100vw, 894px\" \/><\/p>\n<p>The interface is very similar to Brida&#8217;s interface. In the upper section of the &#8220;Configuration&#8221; tab it is necessary to fill in some configuration data used by ghidra2frida and in the lower section there are the buttons that control actions.<\/p>\n<p>Like Brida, ghidra2frida uses a RPC library (Pyro4) to allow Ghidra to call Frida methods because unfortunately it is not possible to import Frida directly in a Ghidra extension (neither Java nor Python). A small Python server based on Pyro is executed on the supplied host and port and acts as a bridge between Ghidra and Frida.<\/p>\n<p>Digging in more detail in the <strong>configuration options<\/strong>:<\/p>\n<ul>\n<li>&#8220;Use virtual env&#8221; flag allows to use Python virtual environments (see below).<\/li>\n<li>&#8220;Python binary path&#8221; or &#8220;Virtual env folder&#8221; require the path of the Python binary or of a Python virtual environment folder, depending on the value of &#8220;Use virtual env&#8221; flag.<\/li>\n<li>\u201cPyro host\u201d and \u201cPyro port\u201d are the host and port on which the Pyro server (used by ghidra2frida to bridge Ghidra and Frida) will be started. In most cases you can leave the default values and Pyro server will be started on localhost:9999.<\/li>\n<li>\u201cFrida JS file\u201d is the path of the Frida instrumentation JavaScript file, containing all Frida and ghidra2frida hooks and exports. An example JS file can be easily created in a chosen location using the button &#8220;Create skeleton JS file&#8221; at the right of the &#8220;Frida JS file&#8221; text field (the path is automatically updated). You can add your own Frida hooks and exports directly in this file, which contains also some useful encoding\/decoding JavaScript functions (hex2bytes, hex2string, Base64).<\/li>\n<li>&#8220;Application ID \/ PID&#8221; requires the ID of the application to spawn (e.g. &#8220;org.test.testApplication&#8221;) or the binary name\/PID of the running process to attach to.<\/li>\n<li>&#8220;Frida Remote&#8221; \/ &#8220;Frida USB&#8221; \/ &#8220;Frida Local&#8221; allows to choose how to contact the Frida server. The &#8220;Frida Remote&#8221; flag corresponds to the &#8220;-R&#8221; option of Frida and tries to connect to a Frida server on TCP port 27042.<\/li>\n<\/ul>\n<p>To show an <strong>example of how it works<\/strong>, let&#8217;s look at the <strong>SwiftDemangle<\/strong> script, based on Ghidra Ninja&#8217;s swift_demangles.py.<\/p>\n<p>After properly configuring the tool, the Pyro server can be started by clicking on the &#8220;Start&#8221; button of the &#8220;Server&#8221; section. The first red light in the top-right section of the ghidra2frida pane will become green if the server starts correctly.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-399\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen2edit-1.png\" alt=\"\" width=\"889\" height=\"665\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen2edit-1.png 889w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen2edit-1-300x224.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen2edit-1-768x574.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen2edit-1-350x262.png 350w\" sizes=\"(max-width: 889px) 100vw, 889px\" \/><\/p>\n<p>The &#8220;Check&#8221; button in the &#8220;Server&#8221; section can be used to verify if the ghidra2frida extension is able to contact the Pyro server. The output is printed in the Ghidra Console.<\/p>\n<p>After that, the target application can be spawned or attached to. In this example, I inserted the PID of a running application and attached to it using the &#8220;Attach&#8221; button in the &#8220;Application&#8221; section. If the spawning\/attaching process works correctly, the second red light in the top-right section of the ghidra2frida pane will become green.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-400\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen3edit-1.png\" alt=\"\" width=\"892\" height=\"666\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen3edit-1.png 892w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen3edit-1-300x224.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen3edit-1-768x573.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen3edit-1-350x261.png 350w\" sizes=\"(max-width: 892px) 100vw, 892px\" \/><\/p>\n<p>The &#8220;Check&#8221; button in the &#8220;Application&#8221; section can be used to verify if the script can talk properly with the target application using Frida. The output is printed in the Ghidra Console.<\/p>\n<p>Now the bridge is up and we can use it from our Ghidra scripts or extensions. Taking as an example our SwiftDemangler script, we created a Frida exported function that demangles the function name supplied as argument on our iOS phone (we will skip now the body of the &#8220;demangle&#8221; function because it is not important for understanding ghidra2frida):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\">rpc.exports = {\r\n  \r\n  \/\/ Export used by ghidra2frida to check if the application has been attached correctly\r\n  ping: function() {\r\n    return true;\r\n  },\r\n\r\n  \/\/ Demangle Swift function name\r\n  demangle: function(name) {\r\n    ...\r\n  }\r\n}<\/pre>\n<p>The exported function can be called by arbitrary Ghidra scripts and extensions but, before that, it is possible to try the function from the &#8220;Run export&#8221; tab of the ghidra2frida extension:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-410\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen6-1.png\" alt=\"\" width=\"890\" height=\"192\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen6-1.png 890w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen6-1-300x65.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen6-1-768x166.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen6-1-350x76.png 350w\" sizes=\"(max-width: 890px) 100vw, 890px\" \/><\/p>\n<p>Then, our SwiftDemangler Java script can call the &#8220;demangle&#8221; exported function as follows:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">import ghidra2frida.Ghidra2FridaService;\r\n\r\npublic class SwiftDemangler extends GhidraScript {\r\n    \r\n  Ghidra2FridaService ghidra2FridaService;\r\n  \r\n  public String callGhidra2FridaFunction(String name, String[] parameters) throws Exception {\r\n    if(ghidra2FridaService == null)\r\n      ghidra2FridaService = state.getTool().getService(Ghidra2FridaService.class);\r\n    return ghidra2FridaService.callExportedFunction(\"demangle\",parameters);\t\t\r\n  }\r\n    \r\n  @Override\r\n  protected void run() throws Exception {\r\n    ...\r\n    try {\r\n      ...\r\n      \/\/ f_name contains the name of the function to demangle using Frida\r\n      String signature_full = callGhidra2FridaFunction(\"demangle\",new String[] {f_name});\r\n      ...\t\t    \r\n    } catch(Exception e) {\r\n      ...\t\t    \t\r\n    }\r\n  }\t\t    \r\n}\t\t\t\r\n<\/pre>\n<p>This snippet contains the portion of code necessary to understand how to use ghidra2frida. The full SwiftDeamangle example can be found in <a href=\"https:\/\/github.com\/federicodotta\/ghidra-scripts\/tree\/main\/SwiftDemangler\">my GitHub Ghidra scripts repository<\/a>. In this example, the output of the demangle function is inserted as comment to all Swift functions, in order to speed-up the reversing process.<\/p>\n<p>As it can be seen, in the first line of the Java snippet of our Ghidra script, it is necessary to import the Ghidra2FridaService class offered by ghidra2frida extension because Ghidra services work this way. If the script is opened in Eclipse (or in another Java IDE), <strong>the IDE will show an exception<\/strong> because that class is missing. When the script will be executed in a Ghidra instance with the ghidra2frida extension installed, the script will work correctly without any error, but this IDE error can be annoying. To solve this little issue I found a couple of ways:<\/p>\n<ol>\n<li>Copy the &#8220;Ghidra2FridaService&#8221; interface in a package named &#8220;ghidra2frida&#8221; inside the &#8220;src&#8221; folder of the GhidraScripts directory (the interface can be found in the GitHub repository of the SwiftDemangler script and in the sources of the ghidra2frida extension).<\/li>\n<li>Alternatively, use Java reflection to dynamically obtain a reference to &#8220;Ghidra2FridaService&#8221; class without importing it (this solution can be a little hard to understand for those who are not familiar with Java language reflection mechanisms).<\/li>\n<\/ol>\n<p>The following code snippet implements this second solution:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">public class SwiftDemangler2 extends GhidraScript {\t\r\n  \r\n  Object ghidra2FridaService;\r\n  \r\n  public String callGhidra2FridaFunction(String name, String[] parameters) throws Exception {\r\n    if(ghidra2FridaService == null) {\r\n      PluginTool pluginTool = state.getTool();\r\n      ghidra2FridaService = pluginTool.getService(Class.forName(\"ghidra2frida.Ghidra2FridaService\"));\r\n    }\r\n    Method ghidra2FridaCallExportedFunction = Class.forName(\"ghidra2frida.Ghidra2FridaService\").getMethod(\"callExportedFunction\", java.lang.String.class, java.lang.String[].class);\t\t\r\n    return (String)ghidra2FridaCallExportedFunction.invoke(ghidra2FridaService, name, parameters);\r\n  }\r\n    \r\n  @Override\r\n  protected void run() throws Exception {\r\n    ...\t\t\r\n    try {\r\n      String signature_full = callGhidra2FridaFunction(\"demangle\",new String[] {f_name});\r\n      ...\t\t\t    \r\n    } catch(Exception e) {\r\n      ...\r\n    }\t\t    \t\r\n  }\r\n}<\/pre>\n<p>The Ghidra script can then be executed from the Ghidra Script Manager tool:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-404\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen4-1.png\" alt=\"\" width=\"764\" height=\"409\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen4-1.png 764w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen4-1-300x161.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen4-1-350x187.png 350w\" sizes=\"(max-width: 764px) 100vw, 764px\" \/><\/p>\n<p>The script will process each function found in the binary and will call the &#8220;demangle&#8221; Frida exported function on all the Swift function names, writing the result as a plate comment to each function:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-405\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen5-1.png\" alt=\"\" width=\"826\" height=\"179\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen5-1.png 826w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen5-1-300x65.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen5-1-768x166.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2021\/08\/screen5-1-350x76.png 350w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/p>\n<p>The same script can also be coded in Python. Our swift_demangler.py Python script can use ghidra2frida as follows:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">from ghidra2frida import Ghidra2FridaService\r\n\r\nghidra2FridaService = None\r\n\r\ndef callGhidra2FridaFunction(name, parameters):\r\n  global ghidra2FridaService\r\n  if ghidra2FridaService is None:\r\n    ghidra2FridaService = state.getTool().getService(Ghidra2FridaService)\r\n    println(\"ghidra2FridaService initialized\")\r\n\r\n  return ghidra2FridaService.callExportedFunction(name,parameters);\r\n\r\nfunctionManager = currentProgram.getFunctionManager()\r\n\r\nfns = functionManager.getFunctions(True)\r\nfor f in fns:\r\n  [...]\r\n  try:\r\n    signature_full = callGhidra2FridaFunction(\"demangle\",[f_name]);\r\n    [...]      \r\n  except Exception as exc:\r\n    [...]<\/pre>\n<p>ghidra2frida and the examples shown in this tutorial can be found on GitHub:<\/p>\n<ul>\n<li>ghidra2frida: <a href=\"https:\/\/github.com\/federicodotta\/ghidra2frida\">https:\/\/github.com\/federicodotta\/ghidra2frida<\/a><\/li>\n<li>ghidra2frida script skeletons: <a href=\"https:\/\/github.com\/federicodotta\/ghidra2frida\/tree\/main\/java_python_examples\">https:\/\/github.com\/federicodotta\/ghidra2frida\/tree\/main\/java_python_examples<\/a><\/li>\n<li>SwiftDemangler Java and Python examples: <a href=\"https:\/\/github.com\/federicodotta\/ghidra-scripts\/tree\/main\/SwiftDemangler\">https:\/\/github.com\/federicodotta\/ghidra-scripts\/tree\/main\/SwiftDemangler<\/a><\/li>\n<\/ul>\n<p>Cheers!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi! Today I&#8217;m publishing a new Ghidra extension based on the same idea of Brida, a Burp Suite extension created [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":159913,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[91,88],"tags":[83,85,87,93,94,95,96],"class_list":["post-391","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","category-tools","tag-ghidra","tag-mobile","tag-reverse-engineering","tag-dynamic-analysis","tag-frida","tag-ghidra2frida","tag-static-analysis"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>HN Security - ghidra2frida - The new bridge between Ghidra and Frida -<\/title>\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\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HN Security - ghidra2frida - The new bridge between Ghidra and Frida -\" \/>\n<meta property=\"og:description\" content=\"Hi! Today I&#8217;m publishing a new Ghidra extension based on the same idea of Brida, a Burp Suite extension created [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/\" \/>\n<meta property=\"og:site_name\" content=\"HN Security\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-25T14:12:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-15T13:37:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/GHIDRA.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=\"Federico Dotta\" \/>\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=\"Federico Dotta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/\"},\"author\":{\"name\":\"Federico Dotta\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/person\\\/e0e6046bd2bc829f7d945ad361bce702\"},\"headline\":\"ghidra2frida &#8211; The new bridge between Ghidra and Frida\",\"datePublished\":\"2021-08-25T14:12:23+00:00\",\"dateModified\":\"2025-09-15T13:37:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/\"},\"wordCount\":1330,\"publisher\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/GHIDRA.jpg\",\"keywords\":[\"ghidra\",\"mobile\",\"reverse engineering\",\"dynamic analysis\",\"frida\",\"ghidra2frida\",\"static analysis\"],\"articleSection\":[\"Articles\",\"Tools\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/\",\"name\":\"HN Security - ghidra2frida - The new bridge between Ghidra and Frida -\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/GHIDRA.jpg\",\"datePublished\":\"2021-08-25T14:12:23+00:00\",\"dateModified\":\"2025-09-15T13:37:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/#primaryimage\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/GHIDRA.jpg\",\"contentUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/GHIDRA.jpg\",\"width\":1600,\"height\":836,\"caption\":\"GHIDRA logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ghidra2frida &#8211; The new bridge between Ghidra and Frida\"}]},{\"@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\\\/e0e6046bd2bc829f7d945ad361bce702\",\"name\":\"Federico Dotta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g\",\"caption\":\"Federico Dotta\"},\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/author\\\/federico-dotta\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HN Security - ghidra2frida - The new bridge between Ghidra and Frida -","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\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/","og_locale":"it_IT","og_type":"article","og_title":"HN Security - ghidra2frida - The new bridge between Ghidra and Frida -","og_description":"Hi! Today I&#8217;m publishing a new Ghidra extension based on the same idea of Brida, a Burp Suite extension created [&hellip;]","og_url":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/","og_site_name":"HN Security","article_published_time":"2021-08-25T14:12:23+00:00","article_modified_time":"2025-09-15T13:37:26+00:00","og_image":[{"width":1600,"height":836,"url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/GHIDRA.jpg","type":"image\/jpeg"}],"author":"Federico Dotta","twitter_card":"summary_large_image","twitter_creator":"@hnsec","twitter_site":"@hnsec","twitter_misc":{"Scritto da":"Federico Dotta","Tempo di lettura stimato":"8 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/#article","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/"},"author":{"name":"Federico Dotta","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/person\/e0e6046bd2bc829f7d945ad361bce702"},"headline":"ghidra2frida &#8211; The new bridge between Ghidra and Frida","datePublished":"2021-08-25T14:12:23+00:00","dateModified":"2025-09-15T13:37:26+00:00","mainEntityOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/"},"wordCount":1330,"publisher":{"@id":"https:\/\/hnsecurity.it\/it\/#organization"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/GHIDRA.jpg","keywords":["ghidra","mobile","reverse engineering","dynamic analysis","frida","ghidra2frida","static analysis"],"articleSection":["Articles","Tools"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/","url":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/","name":"HN Security - ghidra2frida - The new bridge between Ghidra and Frida -","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/#primaryimage"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/GHIDRA.jpg","datePublished":"2021-08-25T14:12:23+00:00","dateModified":"2025-09-15T13:37:26+00:00","breadcrumb":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/#primaryimage","url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/GHIDRA.jpg","contentUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/GHIDRA.jpg","width":1600,"height":836,"caption":"GHIDRA logo"},{"@type":"BreadcrumbList","@id":"https:\/\/hnsecurity.it\/it\/blog\/ghidra2frida-the-new-bridge-between-ghidra-and-frida\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hnsecurity.it\/it\/"},{"@type":"ListItem","position":2,"name":"ghidra2frida &#8211; The new bridge between Ghidra and Frida"}]},{"@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\/e0e6046bd2bc829f7d945ad361bce702","name":"Federico Dotta","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g","caption":"Federico Dotta"},"url":"https:\/\/hnsecurity.it\/it\/blog\/author\/federico-dotta\/"}]}},"jetpack_featured_media_url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/GHIDRA.jpg","_links":{"self":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/391","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\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/comments?post=391"}],"version-history":[{"count":1,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/391\/revisions"}],"predecessor-version":[{"id":159976,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/391\/revisions\/159976"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/media\/159913"}],"wp:attachment":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/media?parent=391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/categories?post=391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/tags?post=391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}