

Then point tools at that – as if it was a regular frida-server. Our releases, and run it on some machine that the Gadget is able to To a user this would be pretty simple: just grab the frida-portal binary from E.g.įrida-trace -H my. -n Twitter -i open Optionally also a control interface that controllers can talk to.The cluster interface that Gadgets can connect to, allowing them to join.The Portal should expose two different interfaces: This eventually crystallized into the following: It took some time before all the details were clear, though, but Implementing this was a lot of fun, and it wasn’t long until the first PoC was Is the same way spawn-gating works in other situations. Spawn-gating on the Portal, any Gadget connecting could be instructed to waitįor somebody to resume() it after applying the desired instrumentation. In this way, existing Frida tools work exactly the same way – and by enabling Portal is running: they all have unique process IDs if you useĮnumerate_processes() or frida-ps, and one can attach() to them seamlessly. Outside it appears as if they’re processes on the same machine as where the Such a Portal then aggregates all of the connected gadgets, and also exposes aįrida-server compatible interface where all of them appear as processes.

To act as a client that connects to a Portal. Server that exposes a frida-server compatible interface, it could be configured Inverse counterpart to its Listen interaction. That’s when suggested that perhaps Frida’s Gadget could offer an

One way one could implement this is by using the nnect() JavaScriptĪPI, and then define an application-specific signaling protocol over which theĬode is loaded, before handing it off to the JavaScript runtime.īut this way of doing things does quickly end up with quite a bit of boring glueĬode, and existing tools such as frida-trace won’t actually be usable in such a “hollow”, where application-specific instrumentation is provided by a backend. Most of the other changes in this release: Portals Part I: ConceptionĮarlier this year and I were brainstorming ways we could simplifyĭistributed instrumentation use-cases. Let’s kick things off with the big new feature that guided
