Date: | Tue, 22 Aug 2017 08:33:50 -0500 |
---|---|
From: | Xiaozhu Meng <mxz297@xxxxxxxxx> |
Subject: | Re: [DynInst_API:] where to find the code for handling switch() statements? |
Hi Thomas, While Dyninst fully supports 64-bit ELF binaries, I don't think Dyninst currently work with 64-bit PE binaries. I need to ask others to know how much efforts are needed if you really want to do analyze 64-bit PE binaries. In terms of your 32-bit code example, the jump table construct looks very primitive, so I am a little surprise that Dyninst currently failed to analyze it. To debug this, you can first set "DYNINST_DEBUG_PARSING" to 1 and then run your program again. This will dump the complete debugging log. In terms of the code, you want to start with parseAPI/src/IndirectAnalyzer.C, which performs the analysis of the jump tables. It contains two major pieces: parseAPI/src/JumpTableFormatPred.C, which contains the code to determine the jump table locations, jump table index variables, and other format elements, and parseAPI/src/JumpTableIndexPred.C, which tries the determine the value bound of the index variables. In your case, I am guessing that the problem is in JumpTableFormatPred.C. If you find it difficult to debug this by your own and if it is possible to share this problematic binary with me, I can take a look at it. Thanks, --Xiaozhu On Tue, Aug 22, 2017 at 7:50 AM, Thomas Dullien <thomasdullien@xxxxxxxxxx> wrote:
|
[← Prev in Thread] | Current Thread | [Next in Thread→] |
---|---|---|
|
Previous by Date: | Re: [DynInst_API:] where to find the code for handling switch() statements?, Thomas Dullien |
---|---|
Next by Date: | Re: [DynInst_API:] where to find the code for handling switch() statements?, Thomas Dullien |
Previous by Thread: | Re: [DynInst_API:] where to find the code for handling switch() statements?, Thomas Dullien |
Next by Thread: | Re: [DynInst_API:] where to find the code for handling switch() statements?, Thomas Dullien |
Indexes: | [Date] [Thread] |