Vector35 / binaryninja-api

Public API, examples, documentation and issues for Binary Ninja
https://binary.ninja/
MIT License
900 stars 204 forks source link

MIPS R_MIPS_REL32 relocation not supported #4550

Closed lwerdna closed 1 year ago

lwerdna commented 1 year ago

Version and Platform (required): 3.5

Bug Description: R_MIPS_REL32 relocation not supported.

Steps To Reproduce: Open the attached binary: libhdk-mips-elf.zip

Go to address 2C014 and see 0C 8F 01 00 (address 0x18F0C) which references string "POST". Now rebase binary to 0x1000. Address 2C014 still points at old address, reference to "POST" is lost.

You will also see these in log:

Unsupported relocation type: 3 (R_MIPS_REL32) @0x2C014
Unsupported relocation type: 3 (R_MIPS_REL32) @0x2C01C
Unsupported relocation type: 3 (R_MIPS_REL32) @0x2C030
Unsupported relocation type: 3 (R_MIPS_REL32) @0x2C054
Unsupported relocation type: 3 (R_MIPS_REL32) @0x2C05C
Unsupported relocation type: 3 (R_MIPS_REL32) @0x2C064
Unsupported relocation type: 3 (R_MIPS_REL32) @0x2C06C
...

Expected Behavior:

Reference to "POST" is maintained after rebase.

Log does not show unsupported relocation messages.

lwerdna commented 1 year ago

Fixed in arch-mips: https://github.com/Vector35/arch-mips/commit/5c94e6aff1e2e6213f334904e1be3f2b8a925517

BinaryNinja will point to new version soon.