-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
API Calls representation in VEX #52
Comments
VEX models function calls at the assembly level - there is no distinction between a call and a jump that happens to set a return address. However, an attempt is made to identify calls and mark their jumpkinds as |
can you guide me on this if possible? I have seen "Ijk_Call" against "nop" operation of MIPS assembly. |
Sir, I have another query if you can guide me on this. I am trying to link basic block extracted using IDAPRO to IRSB but unable to relate because IRSB includes those addresses which IDAPRO shows independent. Like IRSB consist of multiple IMARK statements and i cannot distinguish it with respect to IDAPython output. I am working on MIPS/ARM binaries yet. |
The correct honorific for me is "ma'am" :) For your first problem, can you show me the basic block which has I am having trouble understanding your second problem. Can you post what data you're seeing and what conclusions you would like to be able to draw from them, and I can help you see how to draw them? |
I am sorry Ma'am. --------ADDR----- 00 | ------ IMark(0x400594, 4, 0) ------ |
MIPS has a concept called "branch delay slots", which means that most control flow instructions will not immediately cause the end of a basic block and a control flow transfer, but rather, the control flow will take effect after one additional instruction has been executed. You are seeing |
here is the explanation of 2nd part of my question. I have a IDAPython script to produce following, traversing each BB of function and getting instruction on it as shown below. It is same example which i posted above for VEX case. So in the above case i want to see the VEX instruction for each basic block and include the "0x4005b4" which is actually 2nd block in my this output. But above VEX output include it in the first IRSB and i am not able to distinguish it. actual goal is to map IDAPython output and VEX against the BB of the functions. i have tried to explain it however sorry in case of more confusion. Addr: 0x400594 BB Addr: 0x4005b4 |
I believe this is explained by a difference between ida and angr's conception of whether branch delay slots belong as parts of the basic blocks they terminate. How are you generating the instruction -> block mapping in ida? |
Hmm. |
Question
Hi,
I need some guidance regarding VEX IR for API calls of ELF files for MIPS/ARM binaries. I have seen VEX IR for different assembly instructions however unable to understand it for functions calls in VEX representation.
The text was updated successfully, but these errors were encountered: