sensepost / objection

📱 objection - runtime mobile exploration
GNU General Public License v3.0
7.41k stars 850 forks source link

Few enhancements to gadget injection into APK (patchapk) #586

Open Phyks opened 1 year ago

Phyks commented 1 year ago

Hi,

Here are a few proposals for enhancements of the patchapk function, in line with https://github.com/sensepost/objection/discussions/582:

-[x] Try to make the default value of flags and arguments clearer to the reader, through the --help interface. Everything enabled by default should now be explicitly stated as such.

Best,

Phyks commented 3 months ago

I should have reworked the various bits discussed. I'm waiting for your latest feedbacks on the remaining points to make a final pass on this MR to ensure everything is clean and mergeable.

IPMegladon commented 2 months ago

Given that many applications only load the so libraries later on or don't use them at all as you mention, I think it would be better to have this as a secondary mode of operation where you have to specify the library to inject to. Main reason being that it would negatively impact early-instrumentation as the library may only be loaded later on.

This adds to what Leonza mentioned about having a flag to disable it, rather I think it should be set to actively specify to use it. That way you also don't inject into multiple .so libraries.

Sorry for the delay. Think there are a few things to think about. One major thing to add would be to add the ability to skip patching native libraries using a flag.

It might even be worth either adding a command to list the shared object files it can inject into, and/or to use a prompt where the user can select which one to inject into (using prompt_toolkit). Just a suggestion

Phyks commented 2 months ago

Thanks for the review. However, I'm no longer using objection on a daily basis as I used to. I'm happy to make quick fixups to this MR if you think this is worth it, but let you decide what you want to do (close, pass it to someone else, etc.) if there is some significant dev time required (which I totally understand, I agree with all your points).