DynamoRIO / dynamorio

Dynamic Instrumentation Tool Platform
Other
2.67k stars 561 forks source link

Implement automated binary re-relativization for AArch32 and AArch64 #4016

Open derekbruening opened 4 years ago

derekbruening commented 4 years ago

Xref related issues: #731, #3271, #3339 This issue covers implementing automated binary re-relativization of AArch32 and AArch64 instructions. We will need a different strategy than the x86 approach of storing the location of a 32-bit immediate, due to the varying immediate encodings. For now, decode_from_copy() invalidates the raw bits to force a re-encoding as a workaround for not having this feature.

johnfxgalea commented 4 years ago

Just checking, but this issue is still only a concern when DR is used in standalone mode right? (in relation to #731) Or are there mangling issues which were recently discovered please?

derekbruening commented 4 years ago

This does not impact core DR's basic operations, no. It impacts someone using decode_from_copy() or other decoding operations, which could be standalone or in a client. The workaround of forcing re-encode should ensure there are no problems today except when we have parts of an instr that are not recorded and not recreated on that re-encode: such as this case which we hit recently: #4017.