Comments (4)
It looks like it's trying to apply relocations to a linked ELF file for some reason.
from ghidra-emotionengine-reloaded.
Might be a regression due to #50, looking now
from ghidra-emotionengine-reloaded.
So this seems to be a strange case - this is an executable ELF which is fully linked, but also includes a full relocation table. Since it's fully linked, it already has its relocations applied.
When many MIPS relocations are calculated, the target field of the instruction to be modified is often used as an offset or "addend" which is added to the relocation value. But since the relocation has already been applied in our case, the addend
is the relocation itself! For an explicit example, applying a R_MIPS_26
relocation to an already relocated jal
instruction will effectively double the target address value. That effect is causing the Ghidra analyzer to completely explode, because it's forced to create functions that don't exist.
Now, why is this only happening after #50? I believe it's because we weren't handling addends correctly according to the MIPS ABI. So applying the relocation to the relocated target would produce the same value.
Thankfully, in your case, I think you can just tell Ghidra to not perform symbol relocation/patching:
I tested this with your binary and it seems to analyze perfectly. Can you try this out?
from ghidra-emotionengine-reloaded.
Yes, it works as expected with Perform Symbol Relocations unchecked.
from ghidra-emotionengine-reloaded.
Related Issues (18)
- Everything Becomes Corrupted When Run 2 Times HOT 1
- STABS: Anonymous union importing issues HOT 1
- STABS: Imported type conflicts HOT 2
- Auto-analysis error during Variadic Function Signature Override step HOT 1
- v2.1.3 error during auto-analysis HOT 1
- PCSX2SaveStateImporter: IllegalArgumentException: newPosition > limit HOT 17
- Is there support for IOP modules? HOT 2
- Struct base class missing names
- Some VU instructions not recognized? HOT 3
- PCSX2SaveStateImporter: 7-Zip returned unsupported method HOT 4
- here's another set of unrecognized VU0 instructions HOT 3
- `typedef`s are substituted for their underlying types upon importing STABS + bitfield issue HOT 10
- Lag/stalls when filtering tree on macOS
- some ELF get function jumps wrong (Rhapsody III JPN) HOT 2
- Seeing which bitfield is being used HOT 1
- Japanese PS2 elf files are not loading correctly into Ghidra HOT 4
- "Memory storage not found for global variable" on interacting with RAM addresses HOT 25
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ghidra-emotionengine-reloaded.