gaasedelen / patching

An Interactive Binary Patching Plugin for IDA Pro
MIT License
835 stars 100 forks source link

[Feature request] In-memory patching #11

Open anzz1 opened 2 years ago

anzz1 commented 2 years ago

First of all, commendations on your great work ! The built-in assembler for IDA was pretty much unusable so the patching had to be done with an external program, making the whole process really tedious (load file in IDA -> debug -> patch in another app -> reload file in IDA -> reanalyze the whole thing -> debug -> rinse and repeat). This finally lets me drop the external app from the workflow and no reloading required, simply awesome !

As far as binary patching goes, it currently works as-is. Finally also the "patched bytes" section actually works since your plugin keeps the backup file, and IDA does not get confused anymore on what is actually patched and what is original.

I have a request though which would make it even better, incorporate the in-memory patching option from (currently defunct and unmaintained, unfortunately) https://github.com/scottmudge/DebugAutoPatch . The "About" section outlines well some of the grievances with the IDA built-in patching system and fixes them. I do not know how non-trivial it would be to add those features to this patcher plugin though

anzz1 commented 2 years ago

Also the ability of directly changing the bytes in the assembler window (the field is currently read-only) would be great.

Keep up the good work !

gaasedelen commented 3 weeks ago

Thanks for the kind words.

I honestly never use the IDA debugger, which partially explains my lack of movement on this. It looks like the plugin you linked is reasonably documented though (as is mine), so it might be a fun exercise for you to explore what it might take to develop the debugging-aware patching workflow you desire.

If you do, I certainly would consider a PR.

PS: there is a secret section that gives a few tips for hacking on my plugin: https://github.com/gaasedelen/patching/blob/5a8c62156e9aa0260d915fe946e423b97971b841/plugins/patching/core.py#L983-L1014